Debian 防火墙管理实践
在 Debian 系统中,常用且稳定的防火墙管理方式包括:ufw(面向简化管理)、iptables(传统且灵活)、nftables(新一代内核原生规则集)。以下给出可直接执行的命令与持久化方法,覆盖安装、常用规则、保存与恢复、以及安全加固要点。
快速上手 ufw
- 安装与启用
- 安装:sudo apt update && sudo apt install ufw
- 启用:sudo ufw enable
- 查看状态:sudo ufw status verbose
- 常用规则
- 允许端口:sudo ufw allow 22/tcp(SSH)、sudo ufw allow 80/tcp、sudo ufw allow 443/tcp
- 按来源限制:sudo ufw allow from 192.168.1.100 to any port 22
- 删除规则:sudo ufw delete allow from 192.168.1.100 to any port 22
- 禁用:sudo ufw disable
- 适用场景:需要快速、可审计地放行常见服务端口,并减少直接操作内核规则集的复杂度。
使用 iptables 进行细粒度控制
- 安装与查看
- 安装:sudo apt update && sudo apt install iptables
- 查看:sudo iptables -L -v -n
- 常用规则
- 允许某来源访问:sudo iptables -A INPUT -s 192.168.1.100 -j ACCEPT
- 放行端口(如 SSH):sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
- 默认拒绝入站(谨慎:确保已放行 SSH,避免被锁):sudo iptables -A INPUT -j DROP
- 持久化与恢复
- 保存:sudo sh -c “iptables-save > /etc/iptables/rules.v4”
- 恢复:sudo iptables-restore < /etc/iptables/rules.v4
- 开机恢复:可将恢复命令放入 /etc/network/if-pre-up.d/iptables,确保接口启动时自动加载规则
- 适用场景:需要基于源/目的/协议/端口进行复杂策略编排。
使用 nftables 管理规则
- 安装与查看
- 安装:sudo apt update && sudo apt install nftables
- 查看:sudo nft list ruleset
- 常用规则
- 允许某来源访问:sudo nft add rule ip filter input ip saddr 192.168.1.100 accept
- 放行端口(如 SSH):sudo nft add rule ip filter input tcp dport 22 accept
- 默认拒绝入站:sudo nft add rule ip filter input drop
- 持久化与恢复
- 保存:sudo nft list ruleset > /etc/nftables.conf
- 恢复:sudo nft -f /etc/nftables.conf
- 适用场景:希望使用更现代、性能更好的规则集,并与内核网络栈深度集成。
安全加固与运维要点
- 最小暴露面
- 仅开放必要端口(如 22/80/443),并定期用 ss -tulnp 或 netstat -tulnp 检查监听端口,关闭无用服务与端口。
- SSH 安全
- 使用密钥登录,禁用 root 远程登录(编辑 /etc/ssh/sshd_config:PermitRootLogin no),必要时更改默认端口,限制可登录用户(如 AllowUsers)。
- 系统与日志
- 保持系统更新:sudo apt update && sudo apt upgrade;可启用 unattended-upgrades 自动安装安全更新。
- 部署 Fail2ban 监控暴力破解并自动封禁;结合日志分析工具(如 Logwatch)进行审计。
- 变更风险控制
- 操作前备份规则;变更后先在测试环境验证;对远程服务器操作可设置 at/cron 定时恢复命令或维护窗口,避免误封导致失联。