ufw通过默认拒绝+精准放行保障服务器安全:先设默认入站拒绝、出站允许,再按cidr添加可信ip段对22/3306等端口的tcp访问规则,禁用非必要端口,测试时预留会话并验证连通性。

UFW(Uncomplicated Firewall)是 Ubuntu 系统上轻量易用的防火墙工具,限制特定 IP 段访问敏感端口(如 22、3306、6379、8080 等)是保障服务器安全的基础操作。核心思路是:先默认拒绝,再精确放行可信网段,同时避免规则冲突或误锁自己。
明确敏感端口并禁用默认开放
很多用户习惯先开 SSH(22),但未及时关闭其他端口。建议先检查当前开放状态:
sudo ufw status verbose若看到非必要端口(如 3306 面向公网、Redis 6379 无认证暴露),立即删除对应规则。不要依赖应用层防护替代网络层限制。
按 CIDR 格式精准添加 IP 段白名单
UFW 支持标准 CIDR 表示法(如 192.168.1.0/24、203.0.113.128/25),不支持通配符或模糊写法(如 192.168.*.* 或 192.168.1.*)。添加规则时需指定协议和端口:
- 允许某办公网段通过 SSH:sudo ufw allow from 203.0.113.0/24 to any port 22 proto tcp
- 仅允许可信管理网段访问 MySQL:sudo ufw allow from 198.51.100.64/26 to any port 3306 proto tcp
- 拒绝整个私有地址段访问 Redis(防内网横向):sudo ufw deny from 10.0.0.0/8 to any port 6379
注意规则顺序与默认策略配合
UFW 按添加顺序匹配规则,但「默认策略」(default policy)优先级高于显式规则。务必设置合理默认行为:
- 设默认入站为拒绝:sudo ufw default deny incoming
- 设默认出站为允许(通常无需限制):sudo ufw default allow outgoing
- 添加白名单规则必须在设置默认策略之后,否则可能被提前拦截
添加后用 sudo ufw status numbered 查看规则序号,必要时用 sudo ufw delete N 删除错误条目。
测试与防锁机制不可省略
修改 SSH 相关规则前,务必预留应急通道:
- 保持当前会话不断开,新开终端测试新规则是否生效且未断连
- 临时启用「自动清除」保护(30 秒无响应自动回滚):sudo ufw enable && sleep 30 && sudo ufw disable(慎用,仅调试)
- 生产环境建议搭配 fail2ban 或云厂商安全组做双重限制,UFW 不替代主机入侵检测
规则生效后,可用 telnet x.x.x.x 22 或 nc -zv x.x.x.x 3306 从白名单内外分别验证连通性。










