ufw是ubuntu上最稳妥的白名单入口,先执行sudo ufw default deny incoming拒绝所有入站,再逐条添加允许规则(如sudo ufw allow from 192.168.1.100 to any port 22 proto tcp),最后sudo ufw enable启用,规则才生效。

ufw 是 Ubuntu 上最稳妥的白名单入口
Ubuntu 默认预装 ufw,它本质是 iptables 的封装,但规则语义清晰、不易误锁自己。别一上来就改 sshd_config 或硬写 iptables,那容易 SSH 断连且难恢复。
关键动作只有三步:
- 先执行
sudo ufw default deny incoming—— 这会拒绝所有入站连接,但不会立即生效,留出窗口加白名单 - 再逐条加允许规则,比如只让
192.168.1.100访问 SSH:sudo ufw allow from 192.168.1.100 to any port 22 proto tcp - 最后启用:
sudo ufw enable—— 此时规则才真正加载
注意:ufw 启用后,ufw status verbose 能看到每条规则的编号和方向;删错规则可用 sudo ufw delete N(N 是编号),比手动清理 iptables 安全得多。
iptables 白名单必须保 SSH 不中断
直接操作 iptables 风险高,尤其远程调试时——规则顺序错或漏掉 ESTABLISHED 就可能把自己踢出去。核心原则是:先放行已建立连接 + 本地回环 + SSH,再加白名单,最后设默认 DROP。
典型安全顺序:
sudo iptables -A INPUT -i lo -j ACCEPTsudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT-
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT(这步必须在 DROP 前) -
sudo iptables -A INPUT -s 203.0.113.42 -j ACCEPT(你的白名单 IP) -
sudo iptables -P INPUT DROP(最后才设,默认策略)
切记:不要用 -F 清空规则后再重写,而是用 -I 插入或 -D 删除单条;临时测试可加 at now + 10 minutes 自动回滚,例如:echo "sudo iptables-restore
Ubuntu 26.04 LTS(代号“Resolute Raccoon”)是Canonical于2026年4月23日发布的下一代长期支持版操作系统,提供长达10年的技术支持。它搭载Linux 7.0内核与GNOME 50桌面环境,全面转向Wayland协议,并引入Rust重写的核心工具以增强安全性。官方提供适用于AMD64和ARM64架构的桌面及服务器ISO镜像,是追求前沿技术与极致稳定的开发者
sshd_config 白名单只管登录,不管端口暴露
修改 /etc/ssh/sshd_config 加 AllowUsers 或 AllowGroups,只能限制谁能在认证后登录,**不阻止 TCP 连接到 22 端口**。攻击者仍能发 SYN 包、触发爆破扫描,只是登录失败而已。
真正隔离网络层访问,得靠防火墙(ufw/iptables)。如果硬要用 sshd 层控制,唯一有效写法是:
Match Address 192.168.1.0/24AllowUsers alice bob
但这要求 OpenSSH ≥ 7.2 且配置块必须放在文件末尾;AllowUsers 全局写法(如 AllowUsers alice@192.168.1.100)在新版 OpenSSH 中已被弃用,会静默失效。
域名白名单不能直接用,得转成 IP 再加
iptables 和 ufw 都不支持直接写域名(如 example.com),DNS 解析发生在应用层,防火墙工作在网络层。强行写域名会导致规则无效或匹配失败。
正确做法分两步:
- 用
dig +short example.com A或nslookup example.com获取当前解析 IP(注意:CDN 或负载均衡可能返回多个 IP) - 对每个 IP 单独加规则,例如:
sudo ufw allow from 93.184.216.34 to any port 443 proto tcp
如果目标服务 IP 经常变(比如云 API),别依赖静态白名单,改用反向代理+身份令牌,或者上 ipset 配合定时脚本更新 —— 否则每次 IP 变更都得人工同步,极易遗漏。
sudo iptables-save > /etc/iptables/rules.v4(路径因版本而异),否则 reboot 后白名单就没了。










