在Ubuntu系统中,使用iptables可以有效地保护服务器免受外部攻击。以下是一些基本的iptables规则和策略,可以帮助你提高服务器的安全性:
首先,清除现有的iptables规则,以确保从干净的状态开始配置。
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
允许必要的流量,例如SSH(默认端口22)、HTTP(端口80)和HTTPS(端口443)。
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
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
允许本地回环接口(lo)的流量。
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
为了防止暴力破解SSH登录,可以限制SSH访问来源。
sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m limit --limit 5/min -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
允许DNS查询(端口53)。
sudo iptables -A INPUT -p udp --dport 53 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p udp --sport 53 -m conntrack --ctstate ESTABLISHED -j ACCEPT
允许ICMP请求(ping),但限制速率以防止滥用。
sudo iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
sudo iptables -A INPUT -p icmp -j DROP
保存iptables规则,以便在系统重启后仍然有效。
sudo apt-get install iptables-persistent
sudo netfilter-persistent save
sudo netfilter-persistent reload
定期监控和记录iptables日志,以便及时发现异常活动。
sudo tail -f /var/log/syslog | grep iptables
通过以上步骤,你可以使用iptables为Ubuntu服务器提供基本的安全保护。请根据实际需求调整规则,并定期审查和更新安全策略。