Ubuntu防火墙自定义规则集指南
概览
可以,Ubuntu 的防火墙支持自定义规则集,既可通过UFW的高级配置与规则文件进行精细化控制,也可直接使用nftables编写完整的规则集。UFW 适合大多数场景,提供 before/after 规则钩子与可编辑的配置文件;nftables 则提供底层的完全自定义能力,适合复杂策略与高性能需求。
使用 UFW 自定义规则
- 设置默认策略与基础放行
- 推荐默认:sudo ufw default deny incoming,sudo ufw default allow outgoing
- 放行服务/端口:sudo ufw allow ssh(或 sudo ufw allow 22)、sudo ufw allow 80/tcp、sudo ufw allow 443/tcp
- 按来源、端口、协议、接口精细化控制
- 来源 IP/子网:sudo ufw allow from 203.0.113.103 to any port 3306
- 特定接口:sudo ufw allow in on eth0 from 203.0.113.102
- 协议限定:sudo ufw allow 1725/udp
- 规则排序与限速
- 指定插入位置:sudo ufw insert 1 allow from 203.0.113.100
- 防暴力登录:sudo ufw limit from 203.0.113.100 to any port 22 proto tcp
- 规则持久化、导出/导入与日志
- 导出/导入:sudo ufw status > rules.txt;在另一台主机 sudo ufw reset 后 sudo ufw restore < rules.txt
- 日志:sudo ufw logging on,可设为 low/medium/high
- 高级自定义与配置文件
- 编辑前置/后置规则:/etc/ufw/before.rules、/etc/ufw/before6.rules、/etc/ufw/after.rules、/etc/ufw/after6.rules
- 全局配置:/etc/default/ufw(如 IPV6=no 可禁用 IPv6)
- 规则文件:直接维护 /etc/ufw/user.rules(UFW 管理的用户规则)
使用 nftables 自定义规则
- 安装与启用
- 安装:sudo apt update && sudo apt install nftables
- 启动/开机启用:sudo systemctl start nftables,sudo systemctl enable nftables
- 编写与加载规则集
- 查看与维护
- 查看规则集:sudo nft list ruleset
- 按需修改 myfirewall.nft 后再次加载即可生效
实践建议
- 变更前先放行关键服务(如 SSH 22/TCP),再切换默认策略为拒绝入站,避免被锁死;远程操作务必谨慎。
- 使用 ufw status numbered 管理规则顺序与删除;对复杂策略建议用 nftables 统一管理并在变更前备份规则集。
- 统一启用日志(UFW 的 /var/log/ufw.log),定期审计开放端口与规则是否符合安全策略。