sudo apt update && sudo apt install iptables
sudo iptables-save > ~/iptables-backup-$(date +%F).rules
将INPUT
(入站)、FORWARD
(转发)链的默认策略设为DROP
,仅允许明确允许的流量通过,大幅减少攻击面:
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT # 出站流量默认允许(可根据需求调整)
本地回环接口(lo
)用于系统内部通信(如数据库、SSH反向隧道),必须允许其流量:
sudo iptables -A INPUT -i lo -j ACCEPT
允许已建立的连接(ESTABLISHED
)和相关的连接(RELATED
,如FTP数据连接)通过,确保正常业务不受影响:
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
根据服务器用途开放必需的端口,仅开放所需服务(如Web服务器需开放80/443,SSH服务器需开放22):
# 允许SSH(端口22,建议限制来源IP,见下文)
sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT
# 允许HTTP(端口80)
sudo iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT
# 允许HTTPS(端口443)
sudo iptables -A INPUT -p tcp --dport 443 -m conntrack --ctstate NEW -j ACCEPT
# 允许DNS(端口53,UDP/TCP)
sudo iptables -A INPUT -p udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 53 -m conntrack --ctstate NEW -j ACCEPT
对SSH等敏感服务,限制仅信任IP地址可访问,避免暴力破解:
# 仅允许192.168.1.100访问SSH(替换为你的信任IP)
sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 5 -j DROP
echo 1 | sudo tee /proc/sys/net/ipv4/tcp_syncookies
记录被拒绝的连接尝试,便于后续分析攻击来源:
sudo iptables -A INPUT -j LOG --log-prefix "IPTABLES-DROPPED: " --log-level 4
Debian系统需通过iptables-persistent
包实现规则重启后自动加载:
sudo apt install iptables-persistent
# 安装过程中选择“Yes”保存当前规则
# 手动保存规则(可选)
sudo netfilter-persistent save
sudo netfilter-persistent reload
DROP
规则应放在允许规则之后。通过以上步骤,可构建一个基础的iptables安全策略,有效降低Debian服务器遭受网络攻击的风险。