UFW 规则手动添加到 user.rules 后消失 ubuntu 16.04

Waq*_*idi 7 firewall ufw

由于某种原因,我需要通过编辑 user.rules 向 ufw 添加规则,当我向其中添加规则并执行 do 时sudo ufw reload,规则消失了。发生这种情况的任何原因以及如何通过手动编辑user.rules文件来添加规则?

小智 7

如果您在 /etc/ufw/before*.rules 或 after*.rules 中添加自定义规则,则重新加载后它不会消失。

当在 shell 上输入有效的ufw命令(即自定义用户规则)时,它们会进入 /etc/ufw/user*.rules 文件,并且这些文件会持续存在。

root@ubuntu:~# ufw allow 22/tcp
Rule added
Rule added (v6)
root@ubuntu:~# grep tcp.*22 /etc/ufw/user*.rules
/etc/ufw/user6.rules:### tuple ### allow tcp 22 ::/0 any ::/0 in
/etc/ufw/user6.rules:-A ufw6-user-input -p tcp --dport 22 -j ACCEPT
/etc/ufw/user.rules:### tuple ### allow tcp 22 0.0.0.0/0 any 0.0.0.0/0 in
/etc/ufw/user.rules:-A ufw-user-input -p tcp --dport 22 -j ACCEPT
root@ubuntu:~# iptables -L -n | grep dpt:22
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
Run Code Online (Sandbox Code Playgroud)

如果直接编辑 user*.rules,添加的规则(如果有效)将通过ufw 重新加载来加载,但在下次重新启动 ufw 服务时不会保留。

因此,请在 /etc/ufw/before*.rules 或 after*.rules 中添加自定义规则。

参考:


F1L*_*nux 7

我刚刚遇到了这个脚本,用于自动化主机构建的规则集。 问题在于 UFW 如何验证/etc/ufw/user.rules

只需手动添加规则/etc/ufw/user.rules即可:

-A ufw-user-output -p tcp --dport 80 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

当 UFW 启动时,在没有附带注释的情况对规则集进行健全性检查时,将被清除:

### tuple ### allow tcp 80 0.0.0.0/0 any 0.0.0.0/0 out
Run Code Online (Sandbox Code Playgroud)

因此,为了手动添加允许 TCP/80 在 UFW 重新加载后幸存的规则,将是:

### tuple ### allow tcp 80 0.0.0.0/0 any 0.0.0.0/0 out
-A ufw-user-output -p tcp --dport 80 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

请注意:

手动添加的规则前面的注释不能是任意的:它必须是您通过 CLI 添加规则时 UFW 生成的注释。在此使用 TCP/80 的示例中,将是:

sudo ufw allow http/tcp
Run Code Online (Sandbox Code Playgroud)

验证此解决方案:

重现故障的步骤:

  • sudo ufw disable

  • sudo vi /etc/ufw/user.rules

  • 添加-A ufw-user-output -p tcp --dport 80 -j ACCEPT但不发表评论

  • 保存并关闭/etc/ufw/user.rules

  • sudo ufw enable

您手动添加的规则将被清除;UFW 重启后它将无法继续存在

重新创建解决方案的步骤:

  • sudo ufw disable

  • sudo vi /etc/ufw/user.rules

  • 添加### tuple ### allow tcp 80 0.0.0.0/0 any 0.0.0.0/0 out

  • 添加-A ufw-user-output -p tcp --dport 80 -j ACCEPT

  • 保存并关闭/etc/ufw/user.rules

  • sudo ufw enable

您手动添加的规则将持续存在

是的,绝对疯狂的是,具有正确语法但未以注释开头的规则将无法通过验证并被清除。对于自称不复杂的防火墙界面来说是多么讽刺 ;-)。

这让我抓狂。希望这个解决方案可以挽救其他人的悲伤-