在Ubuntu系统中,使用iptables可以有效地提升系统的安全性。以下是一些常用的iptables规则和策略,可以帮助你增强系统的安全防护:
-
默认拒绝所有流量:
- 清除现有规则:
sudo iptables -F sudo iptables -X
- 设置默认策略为DROP:
sudo iptables -P INPUT DROP sudo iptables -P FORWARD DROP sudo iptables -P OUTPUT ACCEPT
- 清除现有规则:
-
允许SSH连接:
- 允许来自特定IP的SSH连接(替换
为你的IP地址):sudo iptables -A INPUT -p tcp --dport 22 -s
-m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT
- 允许来自特定IP的SSH连接(替换
-
允许HTTP和HTTPS流量:
- 如果你需要运行Web服务器:
sudo iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport 80 -m conntrack --ctstate ESTABLISHED -j ACCEPT sudo iptables -A INPUT -p tcp --dport 443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport 443 -m conntrack --ctstate ESTABLISHED -j ACCEPT
- 如果你需要运行Web服务器:
-
限制SSH登录尝试:
- 使用
iptables
限制SSH登录尝试次数:sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
- 使用
-
允许本地回环接口流量:
- 确保本地回环接口的通信:
sudo iptables -A INPUT -i lo -j ACCEPT sudo iptables -A OUTPUT -o lo -j ACCEPT
- 确保本地回环接口的通信:
-
允许已建立的连接和相关流量:
- 允许已建立的连接和相关流量:
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT sudo iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
- 允许已建立的连接和相关流量:
-
日志记录:
- 记录被拒绝的连接尝试:
sudo iptables -A INPUT -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
- 记录被拒绝的连接尝试:
-
保存iptables规则:
- 保存iptables规则以确保重启后仍然有效(使用
iptables-persistent
工具):sudo apt-get install iptables-persistent sudo netfilter-persistent save sudo netfilter-persistent reload
- 保存iptables规则以确保重启后仍然有效(使用
请根据你的具体需求调整这些规则,并在生产环境中应用之前在测试环境中进行充分测试。