CentOS7.3下的一個iptables配置


centos7.3默認使用的防火牆應該是firewall,而不是iptables。而我們xxmj服務器使用的是iptables防火牆。所以,在配置防火牆之前,我們需要先關閉firewall,安裝iptables

  • 查看firewall的安裝和啟動狀態
[root@localhost ~]# yum list installed firewalld iptables
[root@localhost ~]# systemctl list-unit-files firewalld.service iptables.service
  • 下面 關閉firewall並禁止開機啟動和安裝iptables防火牆的操作視情況而定
  • 關閉firewall並禁止開機啟動
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# systemctl disable firewalld.service
  • 安裝iptables防火牆並設置開啟啟動
[root@localhost ~]# yum install iptables-services
[root@localhost ~]# systemctl enable iptables.service
  • 編輯並修改配置文件 /etc/sysconfig/iptables,使用下面的配置
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:TEST - [0:0]
-A INPUT -j TEST
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -i eth1 -d 192.168.1.100 --syn -m recent --name suduip --rcheck --seconds 1 --hitcount 15 -j DROP
-A INPUT -p tcp -i eth1 -d 192.168.1.100 --syn -m recent --name suduip --set
-A INPUT -i eth1 -p tcp -m tcp -d 192.168.1.100 --syn -m connlimit --connlimit-above 50 --connlimit-mask 32 --connlimit-saddr -j DROP
#-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG SYN -m length --length 0:128 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
... ...
-A INPUT -j DROP
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j TEST
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A OUTPUT -j TEST
-A TEST -j RETURN
COMMIT

1.檢查替換eth1;2.檢查替換-d ip;3.若是centos6.8,檢查iptables版本是v1.4.7還是v1.4.21,前者不支持–connlimit-saddr選項,去掉即可。下面,我簡單解釋一下這個配置

# filter表
*filter
# INPUT鏈默認策略為ACCEPT
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
# 自定義TEST鏈
:TEST - [0:0]
# 進入TEST鏈(從后面配置看,TEST鏈只是RETURN了回來,沒有其他規則)
-A INPUT -j TEST
# 接受連接狀態是RELATED和ESTABLISHED的包
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# 接受ICMP協議的包
-A INPUT -p icmp -j ACCEPT
# 接受回環接口的包
-A INPUT -i lo -j ACCEPT
# 同一源IP1秒內最多可發起14次目的地址是192.168.1.100的TCP連接請求,15次及以上的包將被接口eth1丟棄
# 為什么同時指定-i和-d?猜測:路由器里的路由表可能人為或未及時更新導致路由表映射錯誤,導致發到接口eth1的包的目的IP錯誤。為了防止此類包,則需同時指定-i和-d -A INPUT -p tcp -i eth1 -d 192.168.1.100 --syn -m recent --name suduip --rcheck --seconds 1 --hitcount 15 -j DROP -A INPUT -p tcp -i eth1 -d 192.168.1.100 --syn -m recent --name suduip --set # 同一源IP只允許50個目的地址是192.168.1.100的TCP連接請求,超出的包將被接口eth1丟棄 -A INPUT -i eth1 -p tcp -m tcp -d 192.168.1.100 --syn -m connlimit --connlimit-above 50 --connlimit-mask 32 --connlimit-saddr -j DROP # 此條規則有問題(猜測,可能是--length 129 -j DROP) #-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG SYN -m length --length 0:128 -j ACCEPT # 下面這些規則對TCP連接請求包開放部分端口 -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT ... ... # 丟棄所有包 -A INPUT -j DROP # 上一條規則已經丟棄了所有包,此條規則貌似到不了 -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j TEST -A FORWARD -j REJECT --reject-with icmp-host-prohibited -A OUTPUT -j TEST -A TEST -j RETURN COMMIT
  • 重啟iptables
[root@localhost ~]# systemctl restart iptables.service
  • 查看防火牆規則是否已應用
[root@localhost ~]# iptables -L


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM