7.6 防火墙与安全(ufw、iptables)
本节介绍两种常见的防火墙管理工具:ufw(Uncomplicated Firewall,简单防火墙)和iptables。对于个人服务器或桌面,ufw 提供更友好的接口;iptables 是底层工具,也是学习网络包过滤的基础。
1. ufw 入门
多数Ubuntu衍生发行版默认带有ufw。基本的启用和规则管理如下:
sudo ufw enable # 启动防火墙
sudo ufw status # 查看当前状态和规则
sudo ufw disable # 关闭防火墙
设置默认策略:
sudo ufw default deny incoming # 默认拒绝入站流量
sudo ufw default allow outgoing # 默认允许出站流量
添加规则:
sudo ufw allow 22 # 允许SSH端口
sudo ufw allow 80/tcp # 允许HTTP
sudo ufw deny from 10.0.0.0/8 # 拒绝来自特定网段
sudo ufw delete allow 22 # 删除规则
规则支持服务名称(从/etc/services读取),例如sudo ufw allow http。
查看详细状态:
sudo ufw status verbose
在配置防火墙时需先确认SSH等必要端口未被阻断,否则会引起远程连接问题。
2. 简单的 iptables
iptables直接操作内核的netfilter表。它有三张主要链:INPUT、OUTPUT、FORWARD。命令结构大致为:
iptables [-t 表] -A|-I|-D 链 ...
常用示例:
让SSH访问:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
阻止某IP:
sudo iptables -A INPUT -s 203.0.113.5 -j DROP
允许回环和已建立连接(通常是第一条规则):
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
查看规则链:
sudo iptables -L -n -v
清空当前所有规则(重置防火墙):
sudo iptables -F
注意:变更仅在当前会话生效,重启后失效。常见做法是将规则写入脚本或使用iptables-save/iptables-restore管理。
对于初学者,优先使用ufw即可;iptables 则在需要复杂策略或在不带 ufw 的系统上使用。