在Linux系統中,實現高效過濾的防火墻通常使用iptables或nftables。以下是使用這兩種工具進行高效過濾的方法:
基本規則設置:
iptables -F
iptables -P INPUT DROP
(阻止所有輸入),iptables -P FORWARD DROP
(阻止所有轉發),iptables -P OUTPUT ACCEPT
(允許所有輸出)。允許必要的流量:
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
和 iptables -A INPUT -p tcp --dport 443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
限制連接數:
iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPT
日志記錄:
iptables -A INPUT -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
保存規則:
iptables-save > /etc/iptables/rules.v4
nftables是iptables的下一代,提供了更簡潔和高效的規則管理。
基本規則設置:
nft flush ruleset
nft add rule ip filter input drop
,nft add rule ip filter forward drop
,nft add rule ip filter output accept
允許必要的流量:
nft add rule ip filter input tcp dport 22 accept
nft add rule ip filter input tcp dport 80 accept
和 nft add rule ip filter input tcp dport 443 accept
限制連接數:
nft add rule ip filter input tcp flags syn limit rate over 1/sec burst 3 accept
日志記錄:
nft add rule ip filter input log prefix "nftables-Dropped: " level info
保存規則:
nft list ruleset > /etc/nftables.conf
conntrack
模塊可以更精細地控制連接狀態,例如只允許已建立的連接。通過以上方法,可以在Linux系統中實現高效的防火墻過濾,確保系統的安全性和性能。