在Ubuntu系统中,使用iptables来应对网络入侵是一种常见的安全措施。iptables是Linux系统中的一个命令行工具,用于配置内核防火墙(netfilter)的规则。以下是一些基本的步骤和策略,可以帮助你使用iptables来提高系统的安全性:
更新系统: 在开始配置iptables之前,确保你的Ubuntu系统是最新的。
sudo apt update && sudo apt upgrade
查看现有规则: 在添加新规则之前,查看当前的iptables规则。
sudo iptables -L -n -v
默认策略: 设置默认策略为DROP,这意味着所有未经明确允许的流量都将被丢弃。
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
允许SSH连接: 如果你需要远程访问服务器,确保允许SSH连接(通常是端口22)。
sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT
允许HTTP/HTTPS连接: 如果你的服务器提供网页服务,允许HTTP(端口80)和HTTPS(端口443)流量。
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
限制连接数: 为了防止暴力破解攻击,可以限制特定端口的连接数。
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
允许本地回环接口: 确保本地回环接口(lo)的流量被允许。
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT
日志记录: 记录被丢弃的流量,以便后续分析。
sudo iptables -A INPUT -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
sudo iptables -A FORWARD -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
保存规则: 保存iptables规则,以便在系统重启后仍然有效。
sudo apt install iptables-persistent
sudo netfilter-persistent save
sudo netfilter-persistent reload
请注意,iptables规则可能会因系统配置和使用场景的不同而有所变化。在应用这些规则之前,请确保你理解每条规则的作用,并根据你的具体需求进行调整。如果你不确定某些规则的影响,建议先在测试环境中进行实验。