在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系统中实现高效的防火墙过滤,确保系统的安全性和性能。