體驗iptables 企業級的防火牆實戰

安全劍客發表於2019-12-27
iptables最佳化案例
[root@ghzz ~]# vi /root/shell/iptables.sh
#!/bin/bash
#by qiuyuetao
#--------------------------------------------------------------------------
IPTAB=/sbin/iptables #定義環境變數
$IPTAB -X #清空自定義鏈
$IPTAB -Z #清空計數器
$IPTAB -F #清空當前表的所有規則
$IPTAB -t nat -F #清空nat表的所有規則
$IPTAB -t mangle -F #清空mangel 表規則
$IPTAB -t raw -F #清空raw表規則
$IPTAB -X -t nat #清空自定義鏈
$IPTAB -X -t raw
$IPTAB -X -t mangle
#--------------------------------------------------------------------------
$IPTAB -A INPUT -i lo -j ACCEPT #允許迴環地址訪問
$IPTAB -A INPUT -s 127.0.0.1 -j ACCEPT #允許自己訪問
$IPTAB -A INPUT -s 192.168.0.0/22 -j ACCEPT# 允許內網訪問
$IPTAB -A INPUT -s 119.161.189.1 -j ACCEPT #允許跳板機訪問
#--------------------------------------------------------------------------
$IPTAB -A INPUT -p icmp -j ACCEPT #允許icmp 也就是ping
$IPTAB -A INPUT -p tcp -m multiport --dport 80,22,3306,2188 -j ACCEPT #對外開放的埠
$IPTAB -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #對進來的包的狀態進行檢測。已經建立tcp連線的包以及該連線相關的包允許透過!
$IPTAB -P INPUT DROP #除了上面的fiter表input鏈
$IPTAB -P FORWARD DROP
$IPTAB -P OUTPUT ACCEPT
#--------------------------------------------------------------------------
$IPTAB-save > /etc/sysconfig/iptables
##修改iptables -F -X -Z 都需要 /etc/init.d/iptables save
## -t:指定要儲存的表的名稱。
# iptables-save -t filter > iptables.bak

恢復備份的iptables配置:

iptables-restor < /etc/sysconfig/iptables
iptables日常配置

防火牆是否開啟

[root@m01 ~] /etc/init.d/iptables status
開啟iptables
iptables -F #清空當前表規則
iptables -X #清空自定義鏈
iptables -Z #清空計數器

開啟核心轉發

將net.ipv4.ip_forward = 1 由0改為1
sed -i 'snet.ipv4.ip_forward = 0net.ipv4.ip_forward = 1g'
sysctl -p 生效

新增iptables模組

lsmod 顯示已經載入到核心中的模組的狀態資訊
lsmod|egrep "nat|filter" 檢視nat 與filter表載入的模組資訊
modprobe ip_tables
modprobe ip_conntrack
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack_ftp 連線跟蹤
modprobe ip_nat_ftp nat模組
modprobe ipt_state 狀態模組
企業級的防火牆模式選擇

"兩種思想:"

逛公園:

1、預設規則預設是允許的狀態。

看電影:

2、預設規則預設是不允許的狀態。更安全。

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#允許內網IP地址段訪問
iptables -A INPUT -d 172.16.1.0/24 -j ACCEPT
#允許迴環地址可以進出
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
修改預設規則
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

新增允許的服務及埠

#允許訪問http服務80 443
iptables -A INPUT -p tcp -m multiport --dport 80,443 -j ACCEPT
#只允許內網ping
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -s 172.16.1.0/24 -j ACCEPT
#允許ftp請求
#iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#允許某埠對映
iptables -A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT
iptables -A INPUT -p udp -m udp --sport 53 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --sport 53 -j ACCEPT
NAT 共享上網
/proc/sys/net/ipv4/ip_forward 開啟核心轉發
iptables -t filter -A FORWARD -j ACCEPT
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.61
#所有內網172.16.1.0網段地址,都透過10.0.0.61這個IP 轉發上外網
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j MASQUERADE
#MASQUERADE 自動獲取服務端IP,做IP地址轉發(例如:openvpn)
其他應用服務規則案例
"1)http服務"
iptables -A INPUT -s 192.168.1.0/24 -p tcp -m multiport --dport 8080,8081,8082 -j ACCEPT
iptables -A INPUT -p tcp --dport 22000:22030 -j ACCEPT
#:冒號代表一段埠從22000-22030所有埠都允許
"2) db資料服務"
iptables -A INPUT -s 10.1.8.0/24 -p tcp --dport 3306 -j ACCEPT
"3) snmp 網路管理"
iptables -A INPUT -s 10.1.8.0/24 -p UDP --dport 161 -j ACCEPT
"4) rsync 實時同步"
iptables -A INPUT -s 10.1.8.0/24 -p tcp -m tcp --dport 873 -j ACCEPT
" 5) nfs 2049,rpc 111 (NFS網路檔案共享、rpc)"
iptables -A INPUT -s 10.1.8.0/24 -p udp -m multiport --dport 111,892,2049 -j ACCEPT
iptables -A INPUT -s 10.1.8.0/24 -p tcp -m multiport --dport 111,892,2049 -j ACCEPT
" 6) 允許所有ping"
iptables -A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
" 7)允許內網172.16.1.0 網段ping"
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -s 172.16.1.0/24 -j ACCEP
"8) keepalived vrr"
-A INPUT -d 172.16.1.0/24 -j ACCEPT
-A INPUT -p vrrp -j ACCEPT
"9) zabbix埠開放"
-A INPUT -p tcp -m tcp --dport 10050:10051 -j ACCEPT
-A INPUT -p tcp -m udp --dport 10050:10051 -j ACCEPT
iptable安全配置
1)限速
iptables -A INPUT -p tcp --syn -m limit --limit 100/s --limit-burst 100 -j ACCEPT
2)沒秒ping不超過10個
iptables -A FORWAD -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 10 -j ACCPET
3)將SYN及ACK SYN限制為每秒不超過200
iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -m limit --limit 20/sec --limit-burst 200 -j ACCEPT
4)防範 SYN-Flood 碎片***
iptables -N syn-flood
iptables -A INPUT -syn -j syn-flood
iptables -A syn-flood -m limit -limit 5000/s -limit-burst 200 -j RETURN
iptables -A syn-flood -j DROP
prevent all Stealth Scans and TCP State Flags
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
All of the bits are cleared
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
SYN and RST are both set
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
SYN and FIN are both set
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
FIN and RST are both set
iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
FIN is the only bit set, without the expected accompanying ACK
iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j DROP
PSH is the only bit set, without the expected accompanying ACK
iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j DROP
URG is the only bit set, without the expected accompanying ACK
iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j DROP

原文地址:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2670863/,如需轉載,請註明出處,否則將追究法律責任。

相關文章