Debian Context中防火墙规则管理指南(以ufw为主,兼顾iptables)
Debian系统中管理防火墙规则的主流工具为ufw(Uncomplicated Firewall)(推荐新手使用)和iptables(底层工具,适合高级配置)。其中,ufw基于iptables封装,提供更简洁的命令接口,适合日常管理;iptables则需手动配置规则文件,灵活性更高但操作复杂。
若系统未预装ufw,可通过以下命令安装:
sudo apt update
sudo apt install ufw
sudo ufw enable
系统会提示确认,输入y并按回车键生效。sudo ufw disable
设置默认策略可快速定义未明确匹配规则的流量行为(建议新手采用):
sudo ufw default deny incoming # 拒绝所有入站连接(默认)
sudo ufw default allow outgoing # 允许所有出站连接(默认)
sudo ufw allow 80/tcp # 允许TCP端口80(HTTP)
sudo ufw allow 443/tcp # 允许TCP端口443(HTTPS)
sudo ufw allow 22/tcp # 允许TCP端口22(SSH)
192.168.1.100访问所有端口):sudo ufw allow from 192.168.1.100
sudo ufw deny 21/tcp
sudo ufw delete allow 80/tcp
sudo ufw status
sudo ufw status verbose
ufw规则默认会自动保存到/etc/ufw/ufw.conf,修改后无需手动保存。若需重新加载规则(如修改before.rules自定义规则后):
sudo ufw reload
若需使用iptables,可通过以下命令安装:
sudo apt update
sudo apt install iptables
sudo iptables -L -n -v # 列出所有规则(-L:列表;-n:数字格式;-v:详细信息)
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP # 可选:拒绝转发流量
sudo iptables -P OUTPUT ACCEPT # 允许所有出站连接
Debian默认不自动保存iptables规则,需通过以下方式持久化:
sudo apt install iptables-persistent
安装过程中选择“是”以保存当前规则。sudo iptables-save > /etc/iptables/rules.v4 # 保存规则到文件
sudo iptables-restore < /etc/iptables/rules.v4 # 从文件恢复规则
通过创建启动脚本实现开机自动加载规则:
sudo vim /etc/network/if-pre-up.d/iptables
添加以下内容:
#!/bin/sh
/sbin/iptables-restore < /etc/iptables/rules.v4
赋予执行权限:
sudo chmod +x /etc/network/if-pre-up.d/iptables
sudo cp /etc/ufw/ufw.conf /etc/ufw/ufw.conf.bak或sudo iptables-save > ~/iptables-backup.rules),避免误操作导致服务中断。sudo ufw logging on(ufw)或sudo iptables -A INPUT -j LOG(iptables)开启日志,便于排查问题。