Tôi đã dành thời gian suy nghĩ về hai điều về iptables này: hầu hết những người tìm kiếm các hướng dẫn này là người mới bắt đầu và thứ hai, nhiều người đã tìm kiếm một thứ gì đó khá đơn giản và đã được trau chuốt.
Ví dụ này dành cho máy chủ web, nhưng bạn có thể dễ dàng thêm nhiều quy tắc hơn và điều chỉnh nó theo nhu cầu của mình.
Khi bạn thấy "x" thay đổi cho ip của bạn
#!/bin/bash
# Chúng tôi làm sạch bảng iptables -F iptables -X # Chúng tôi dọn dẹp bảng NAT iptables -t nat -F iptables -t nat -X # mangle cho những thứ như PPPoE, PPP và ATM iptables -t mangle -F iptables -t mangle -X # Chính sách Tôi nghĩ đây là cách tốt nhất cho người mới bắt đầu và # vẫn không tệ, tôi sẽ giải thích đầu ra (output) tất cả vì chúng là kết nối gửi đi #, đầu vào chúng tôi loại bỏ mọi thứ và không có máy chủ nào nên chuyển tiếp. iptables -P INPUT DROP iptables -P OUTPUT CHẤP NHẬN iptables -P FORWARD DROP #Intranet LAN intranet = eth0 #Extranet wan extranet = eth1 # Keep state. Mọi thứ đã được kết nối (thiết lập) được để lại như sau: iptables -A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT # Loop device. iptables -A INPUT -i lo -j CHẤP NHẬN # http, https, chúng tôi không chỉ định giao diện vì # chúng tôi muốn nó là tất cả các iptables -A INPUT -p tcp --dport 80 -j CHẤP NHẬN iptables -A INPUT -p tcp - dport 443 -j CHẤP NHẬN # ssh chỉ trong nội bộ và từ dải iptables này của ip -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 7659 -j CHẤP NHẬN # giám sát, chẳng hạn nếu chúng có zabbix hoặc một số khác dịch vụ snmp iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ mạng nội bộ --dport 10050 -j CHẤP NHẬN # icmp, ping tốt tùy thuộc vào bạn iptables -A INPUT -p icmp -s 192.168.xx / 24 - i $ intranet -j CHẤP NHẬN #mysql với postgres là cổng 5432 iptables -A INPUT -p tcp -s 192.168.xx --sport 3306 -i $ intranet -j CHẤP NHẬN #sendmail bueeeh nếu bạn muốn gửi một số thư #iptables -A OUTPUT -p tcp --dport 25 -j CHẤP NHẬN # Anti-SPOOFING 09/07/2014 # SERVER_IP = "190.xxx" # server IP - ip wan thực của máy chủ LAN_RANGE = "192.168.xx / 21" # dải mạng LAN mạng của bạn hoặc vlan # Ip của bạn mà không bao giờ được vào extranet,là sử dụng một chút logic # nếu chúng ta có giao diện WAN hoàn toàn, nó sẽ không bao giờ nhập lưu lượng kiểu # LAN qua giao diện đó SPOOF_IPS = "0.0.0.0/8 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0 / 16 "# Hành động mặc định - được thực hiện khi bất kỳ quy tắc nào khớp với ACTION =" DROP "# Gói có cùng ip của máy chủ của tôi thông qua wan iptables -A INPUT -i $ extranet -s $ SERVER_IP -j $ ACTION # iptables -A OUTPUT -o $ extranet -s $ SERVER_IP -j $ ACTION # Các gói với Phạm vi LAN cho wan, tôi đặt nó như thế này trong trường hợp bạn có # bất kỳ mạng cụ thể nào, nhưng điều này là thừa với quy tắc # sau bên trong vòng lặp " cho "iptables -A INPUT -i $ extranet -s $ LAN_RANGE -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ LAN_RANGE -j $ ACTION ## Tất cả các mạng SPOOF không được wan cho phép ip trong $ SPOOF_IPS làm iptables -A INPUT -i $ extranet -s $ ip -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ ip -j $ ACTION đã xong
Như mọi khi tôi chờ đợi ý kiến của bạn, hãy theo dõi trên blog này, Cảm ơn bạn
12 bình luận, để lại của bạn
Nó giúp tôi tiếp tục học thêm một chút cảm ơn đã sao chép.
bạn được chào đón, rất vui được giúp đỡ
Tôi thực sự xin lỗi, nhưng tôi có hai câu hỏi (và một câu hỏi như một món quà 😉):
Bạn sẽ đến với cấu hình này để Apache chạy và đóng phần còn lại ngoại trừ SSH?
# Chúng tôi làm sạch bàn
iptables-F
iptables-X
Chúng tôi làm sạch NAT
iptables -t nat -F
iptables -t nat -X
iptables -A INPUT -p tcp –dport 80 -j CHẤP NHẬN
ssh chỉ nội bộ và từ dải ip này
iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet –dport 7659 -j CHẤP NHẬN
Câu hỏi thứ hai: 7659 có phải là cổng được sử dụng trong SSH trong ví dụ này không?
Và thứ ba và cuối cùng: cấu hình này nên được lưu trong tệp nào?
Cảm ơn bạn rất nhiều về hướng dẫn, thật tiếc khi bạn là một người mới và không thể tận dụng nó tốt.
đây là quy tắc bạn cần cho http từ apache
iptables -A INPUT -p tcp –dport 80 -j CHẤP NHẬN
nhưng bạn cũng cần khai báo các chính sách mặc định thả (nó nằm trong tập lệnh)
iptables -P INPUT DROP
iptables -P OUTPUT CHẤP NHẬN
iptables -P FORWARD DROP
và điều này bởi vì nếu bạn ở xa, nó sẽ ném bạn đi.
iptables -A INPUT -m state –state ĐƯỢC THIẾT LẬP, LIÊN QUAN -j CHẤP NHẬN
nếu 7659 là cổng của ssh đó trong ví dụ, theo mặc định, nó là 22, mặc dù tôi khuyên bạn nên thay đổi thành cổng "không nổi tiếng"
Tôi không biết, như bạn muốn ... firewall.sh và bạn đặt nó trong rc.local (sh firewall.sh) để nó chạy tự động, tùy thuộc vào hệ điều hành bạn có, có những tệp mà bạn có thể đặt các quy tắc trực tiếp.
Này, kịch bản của bạn rất hay, đang phân tích nó…. Bạn có biết làm cách nào tôi có thể từ chối tất cả các yêu cầu từ người dùng của tôi đến một trang web cụ thể không?…. nhưng trang web này có rất nhiều máy chủ….
Tôi đề xuất các tùy chọn khác:
1) Bạn có thể tạo vùng giả trong dns của mình ...
2) Bạn có thể đặt một proxy với acl
cấm vận tội lỗi
Đối với iptables, bạn có thể thích điều này ... nó không phải lúc nào cũng là lựa chọn tốt nhất (có nhiều cách hơn)
iptables -A INPUT -s blog.fromlinux.ne -j DROP
iptables -A OUTPUT -d blog.fromlinux.net -j DROP
Hãy cho tôi biết nếu nó hoạt động
Cảm ơn câu trả lời, mọi thứ đã sáng tỏ. Tôi đang hỏi về cổng vì tôi rất ngạc nhiên khi sử dụng 7659, vì các cổng riêng bắt đầu từ 49152 và nó có thể ảnh hưởng đến một số dịch vụ hoặc điều gì đó.
Một lần nữa, cảm ơn vì mọi thứ, điều đó thật tuyệt!
Chúc mừng.
BrodyDalle, làm cách nào để tôi có thể liên lạc với bạn? Kịch bản của bạn rất thú vị.
soulofmarionet_1@hotmail.com
Dòng cuối cùng trước "iptables -A OUTPUT -o $ extranet -s $ ip -j $ ACTION" có để ngăn máy của bạn giả mạo không? Hoặc có thể là một số gói bị nhiễm độc xâm nhập và có thể rời đi với nguồn bị nhiễm độc đó và đó là lý do tại sao quy tắc cũng được bao gồm với OUTPUT?
Cảm ơn bạn rất nhiều vì đã làm rõ !!!
đây là tập lệnh iptables của riêng tôi, nó rất hoàn chỉnh:
# franes.iptables.airy
# doc.iptables.airoso: iptables cho kế thừa và cho nft
#
# cổng tường lửa
##############################
#! / bin / bash
#
# xóa màn hình
################################# bắt đầu của /etc/f-iptables/default.cfg |||||
trong sáng
# để lại một dòng trống
bỏ lỡ
xuất có = »» không = »tắt tiếng vang»
# biến bạn có thể thay đổi để cho phép truy cập
####################### biến để sửa đổi với $ yes hoặc $ no
xuất hayexcepciones = »$ no»
# có ngoại lệ: $ yes để cho phép các máy chủ đặc biệt và $ no để tắt
xuất hayping = »$ no»
# hayping: $ có để cho phép ping của bên thứ ba và $ không để từ chối
xuất haylogserver = »$ no»
# haylogeosserver: $ yes để có thể đăng nhập tcp $ no để không thể đăng nhập tcp
######
####################### biến để sửa đổi bằng cách thêm "," hoặc với phạm vi ":"
xuất ngoại lệ = »baldras.wesnoth.org»
# ngoại lệ cho phép một hoặc nhiều máy chủ từ tường lửa hoặc không có giá trị
export logserver = discard, ipp, dict, ssh
# cổng máy chủ tcp được ghi lại khi có gói tin
export redserver = 0/0
# redserver: mạng cho các cổng máy chủ thích hợp mạng cục bộ hoặc một số ips
xuất khách hàng màu đỏ = 0/0
# clientnet: mạng dành cho các cổng ứng dụng khách thích hợp cho tất cả các mạng
export servidortcp = discard, ipp, dict, 6771
# servidortcp: các cổng máy chủ tcp được chỉ định
export serverudp = discard
#udpserver: các cổng máy chủ udp được chỉ định
export clientudp = domain, bootpc, bootps, ntp, 20000: 45000
#udp client: các cổng udp client được chỉ định
export clienttcp = domain, http, https, ipp, git, dict, 14999: 15002
# tcp client: các cổng tcp client được chỉ định
############################### end of /etc/f-iptables/default.cfg |||||
################################# cuối biến cần sửa đổi
tường lửa xuất = biến $ 1 = $ 2
if ["$ variable" = "$ NULL"]; thì nguồn /etc/f-iptables/default.cfg;
nguồn khác / etc / f-iptables / $ 2; fi
################################# hoặc sẽ ghi đè các biến bằng tệp .cfg
###################################################### ##############################################
tường lửa xuất khẩu = $ 1 biến xuất khẩu = $ 2
############################################### biến hệ thống tự động
if ["$ firewall" = "bị ngắt kết nối"]; sau đó dội lại FIREWALL DISCONNECTED;
export activateerver = »$ no» activateclient = »$ no» wet = »$ no»;
elif ["$ firewall" = "client"]; sau đó echo FIREWALL CLIENT;
export activateerver = »$ no» activateclient = »» ướt = »$ no»;
elif ["$ firewall" = "máy chủ"]; sau đó echo máy chủ FIREWALL;
xuất khẩu kích hoạt = »» activateclient = »$ no» ướt = »$ no»;
elif ["$ firewall" = "máy khách và máy chủ"]; sau đó echo FIREWALL CLIENT AND SERVER;
xuất máy chủ kích hoạt = »»; xuất khẩu activateclient = »»; xuất ướt = »$ no»;
elif ["$ firewall" = "permissive"]; sau đó echo PERMISSIVE FIREWALL;
export activateerver = »$ no» activateclient = »$ no» wet = »»;
khác
$ check sudo echo iptables-inherit:
$ kiểm tra sudo iptables-inherit -v -L INPUT
$ check sudo iptables-inherit -v -L OUTPUT
$ check sudo echo iptables-nft:
$ kiểm tra sudo iptables-nft -v -L INPUT
$ kiểm tra sudo iptables-nft -v -L OUTPUT
echo _____parameters____ $ 0 $ 1 $ 2
echo "ép kiểu không có tham số là liệt kê iptables."
echo "Tham số đầu tiên (enable iptables): bị ngắt kết nối hoặc máy khách hoặc máy chủ hoặc máy khách và máy chủ hoặc cho phép."
echo "Tham số thứ hai: (tùy chọn): tệp default.cfg chọn /etc/f-iptables/default.cfg"
echo "Cài đặt biến:" $ (ls / etc / f-iptables /)
thoát 0; fi
##################
bỏ lỡ
echo Ném $ 0 bị ngắt kết nối hoặc máy khách hoặc máy chủ hoặc máy khách và máy chủ hoặc dễ dãi hoặc biến hoặc không sử dụng tham số để liệt kê iptables.
echo Tệp $ 0 chứa một số biến có thể chỉnh sửa bên trong.
################################## đã kích hoạt các biến trên
##################################
echo thiết lập các biến iptables
các biến kích hoạt echo
bỏ lỡ
############################## quy tắc iptables
echo Thiết lập iptables-inherit
sudo / usr / sbin / iptables-inherit -t filter -F
sudo / usr / sbin / iptables-inherit -t nat -F
sudo / usr / sbin / iptables-inherit -t mangle -F
sudo / usr / sbin / ip6tables-inherit -t filter -F
sudo / usr / sbin / ip6tables-inherit -t nat -F
sudo / usr / sbin / ip6tables-inherit -t mangle -F
sudo / usr / sbin / ip6tables-inherit -A INPUT -j DROP
sudo / usr / sbin / ip6tables-inherit -A OUTPUT -j DROP
sudo / usr / sbin / ip6tables-inherit -A FORWARD -j DROP
sudo / usr / sbin / iptables-inherit -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j CHẤP NHẬN> / dev / null
$ haylogserver sudo / usr / sbin / iptables-inherit -A INPUT -p tcp -m multiport –dports $ logserver -j LOG> / dev / null
$ có ngoại lệ sudo / usr / sbin / iptables-inherit -A INPUT -s $ exceptions -j CHẤP NHẬN> / dev / null
$ kích hoạt máy chủ sudo / usr / sbin / iptables-inherit -A INPUT -p udp -m multiport –dports $ serverudp -s $ redserver -d $ redserver -j CHẤP NHẬN> / dev / null
$ kích hoạt máy chủ sudo / usr / sbin / iptables-inherit -A INPUT -p tcp -m multiport –dports $ serverrtcp -s $ redserver -d $ redserver -j CHẤP NHẬN> / dev / null
$ activateclient sudo / usr / sbin / iptables-inherit -A INPUT -p udp -m multiport –sports $ clientudp -m state –state đã thành lập -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-inherit -A INPUT -p tcp -m multiport –sports $ clienttcp -m state –state đã thành lập -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-inherit -A INPUT -p icmp –icmp-type echo-reply -j CHẤP NHẬN> / dev / null
sudo / usr / sbin / iptables-inherit -A INPUT -j DROP> / dev / null
sudo / usr / sbin / iptables-inherit -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j CHẤP NHẬN> / dev / null
$ hayeexceptions sudo / usr / sbin / iptables-inherit -A OUTPUT -d $ exceptions -j CHẤP NHẬN> / dev / null
$ kích hoạt máy chủ sudo / usr / sbin / iptables-inherit -A OUTPUT -p udp -m multiport –sports $ serverudp -s $ redserver -d $ redserver -j CHẤP NHẬN> / dev / null
$ kích hoạt máy chủ sudo / usr / sbin / iptables-inherit -A OUTPUT -p tcp -m multiport –sports $ serverrtcp -s $ redserver -d $ redserver -j CHẤP NHẬN> / dev / null
$ enable client sudo / usr / sbin / iptables-inherit -A OUTPUT -p udp -m multiport –dports $ clientudp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-inherit -A OUTPUT -p tcp -m multiport –dports $ clienttcp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-inherit -A OUTPUT -p icmp –icmp-type echo-request -j CHẤP NHẬN> / dev / null
sudo / usr / sbin / iptables-inherit -A OUTPUT -j DROP
sudo / usr / sbin / iptables-inherit -A FORWARD -j DROP
echo iptables-inherit được bật
bỏ lỡ
echo Cài đặt iptables-nft
sudo / usr / sbin / iptables-nft -t filter -F
sudo / usr / sbin / iptables-nft -t nat -F
sudo / usr / sbin / iptables-nft -t mangle -F
sudo / usr / sbin / ip6tables-nft -t filter -F
sudo / usr / sbin / ip6tables-nft -t nat -F
sudo / usr / sbin / ip6tables-nft -t mangle -F
sudo / usr / sbin / ip6tables-nft -A INPUT -j DROP
sudo / usr / sbin / ip6tables-nft -A OUTPUT -j DROP
sudo / usr / sbin / ip6tables-nft -A FORWARD -j DROP
sudo / usr / sbin / iptables-nft -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j CHẤP NHẬN> / dev / null
$ haylogserver sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multiport –dports $ logserver -j LOG> / dev / null
$ hayeexceptions sudo / usr / sbin / iptables-nft -A INPUT -s $ exceptions -j CHẤP NHẬN> / dev / null
$ kích hoạt máy chủ sudo / usr / sbin / iptables-nft -A INPUT -p udp -m multiport –dports $ serverudp -s $ redserver -d $ redserver -j CHẤP NHẬN> / dev / null
$ kích hoạt máy chủ sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multiport –dports $ serverrtcp -s $ redserver -d $ redserver -j CHẤP NHẬN> / dev / null
$ activateclient sudo / usr / sbin / iptables-nft -A INPUT -p udp -m multiport –sports $ clientudp -m state –state đã thành lập -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multiport –sports $ clienttcp -m state –state đã thành lập -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-nft -A INPUT -p icmp –icmp-type echo-reply -j CHẤP NHẬN> / dev / null
sudo / usr / sbin / iptables-nft -A INPUT -j DROP> / dev / null
sudo / usr / sbin / iptables-nft -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j CHẤP NHẬN> / dev / null
$ có ngoại lệ sudo / usr / sbin / iptables-nft -A OUTPUT -d $ exceptions -j CHẤP NHẬN> / dev / null
$ kích hoạt máy chủ sudo / usr / sbin / iptables-nft -A OUTPUT -p udp -m multiport –sports $ serverudp -s $ redserver -d $ redserver -j CHẤP NHẬN> / dev / null
$ kích hoạt máy chủ sudo / usr / sbin / iptables-nft -A OUTPUT -p tcp -m multiport –sports $ serverrtcp -s $ redserver -d $ redserver -j CHẤP NHẬN> / dev / null
$ activateclient sudo / usr / sbin / iptables-nft -A OUTPUT -p udp -m multiport –dports $ clientudp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-nft -A OUTPUT -p tcp -m multiport –dports $ clienttcp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-nft -A OUTPUT -p icmp –icmp-type echo-request -j CHẤP NHẬN> / dev / null
sudo / usr / sbin / iptables-nft -A OUTPUT -j DROP
sudo / usr / sbin / iptables-nft -A FORWARD -j DROP
echo iptables-nft được bật
bỏ lỡ
$ wet sudo / usr / sbin / iptables-inherit -F> / dev / null
$ wet sudo / usr / sbin / iptables-inherit -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j CHẤP NHẬN> / dev / null
$ wet sudo / usr / sbin / iptables-inherit -A INPUT -m state –state đã thành lập -j ACCEPT> / dev / null
$ wet sudo / usr / sbin / iptables-inherit -A INPUT -j DROP> / dev / null
$ wet sudo / usr / sbin / iptables-inherit -A OUTPUT -j CHẤP NHẬN> / dev / null
$ wet sudo / usr / sbin / iptables-inherit -A FORWARD -j DROP> / dev / null
$ wet sudo / usr / sbin / iptables-nft -F> / dev / null
$ wet sudo / usr / sbin / iptables-nft -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j CHẤP NHẬN> / dev / null
$ wet sudo / usr / sbin / iptables-nft -A INPUT -m state –state đã thành lập -j ACCEPT> / dev / null
$ wet sudo / usr / sbin / iptables-nft -A INPUT -j DROP> / dev / null
$ wet sudo / usr / sbin / iptables-nft -A OUTPUT -j CHẤP NHẬN> / dev / null
$ wet sudo / usr / sbin / iptables-nft -A FORWARD -j DROP> / dev / null
#############################
echo bạn đã ném $ 0 $ 1 $ 2
# thoát khỏi tập lệnh
thoát 0
Tôi sẽ đặt quy tắc như thế nào nếu bức tường lửa này sử dụng nó cho cổng của tôi và có một con mực trong mạng LAN ???