Debian防火墙策略制定与落地
一、策略设计原则
二、工具选择与适用场景
| 工具 | 适用场景 | 主要优点 | 持久化与要点 |
|---|---|---|---|
| UFW | 快速上手、单机/小团队 | 语法简洁、默认策略清晰 | Debian需安装;ufw enable 前务必先放行 SSH;规则在 /etc/ufw/ |
| iptables | 精细控制、复杂策略 | 灵活强大、可编排复杂规则 | 规则需持久化:iptables-save > /etc/iptables/rules.v4 并配置开机恢复 |
| firewalld | 需要“区域/富规则”模型 | 动态管理、区域隔离 | firewall-cmd --runtime-to-permanent 保存;适合多接口/多环境 |
| 说明:UFW在Debian上并非默认安装;iptables为内核包过滤基础;firewalld提供更高层抽象。 |
三、落地步骤与示例
通用准备
sudo iptables -L -n -v、sudo iptables-save > ~/iptables-$(date +%F).bak方案A UFW快速落地(适合大多数场景)
sudo apt update && sudo apt install ufwsudo ufw default deny incomingsudo ufw default allow outgoingsudo ufw allow 22/tcp(或更安全:sudo ufw allow from <可信IP>/32 to any port 22)sudo ufw allow 80,443/tcpsudo ufw enablesudo ufw status verbose;如需编号查看:sudo ufw status numbered方案B iptables精细落地(适合需要复杂策略)
sudo iptables -P INPUT DROPsudo iptables -P FORWARD DROPsudo iptables -P OUTPUT ACCEPTsudo iptables -A INPUT -i lo -j ACCEPTsudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPTsudo iptables -A INPUT -p tcp --dport 22 -s <可信IP>/32 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPTsudo iptables -A INPUT -p tcp -m multiport --dports 80,443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPTsudo iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 5 -j DROPecho 1 | sudo tee /proc/sys/net/ipv4/tcp_syncookiessudo iptables -A INPUT -j LOG --log-prefix "IPTables-Dropped: " --log-level 4sudo iptables-save | sudo tee /etc/iptables/rules.v4iptables-persistent 并执行 sudo netfilter-persistent save && sudo netfilter-persistent start,或配置 iptables-restore < /etc/iptables/rules.v4。方案C firewalld落地(适合区域化与富规则)
sudo apt update && sudo apt install firewalldsudo systemctl start firewalld && sudo systemctl enable firewalldsudo firewall-cmd --permanent --add-service=sshsudo firewall-cmd --permanent --add-port=80/tcp --add-port=443/tcpsudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100/32" service name="ssh" accept'sudo firewall-cmd --reloadsudo firewall-cmd --runtime-to-permanent四、验证与运维
sudo iptables -L -n -v -x、sudo ufw status verbose、sudo firewall-cmd --list-allcurl -Iv https://your-domain)sudo tail -f /var/log/kern.log | grep IPTables-Droppedlogwatch 做日报摘要iptables-save > /etc/iptables/rules.v4.bak-$(date +%F)/etc/ufw/ 配置或导出规则五、常见场景模板
net.ipv4.ip_forward=1sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADEsudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:80