我想知道是否有可能让 UFW 在未启用时列出已配置的防火墙规则。我目前只能通过 ssh 访问服务器,如果没有配置允许 ssh 的规则,我不想启用 UFW。但是,由于 UFW 目前未启用,因此inactive
当我运行“ ”时,我只会收到一条“ ”消息ufw status
。
是否有一个特殊的标志我可以使用,或者甚至一些配置文件我可以查看以查看即使防火墙被禁用时配置了哪些规则?
答案1
现在有一个ufw show added
命令将列出已配置的规则,即使防火墙处于非活动状态。它被添加为此错误报告并在 v0.33 中添加
现在你可以这样做:
# ufw status
Status: inactive
# ufw allow ssh
Rules updated
Rules updated (v6)
# ufw show added
Added user rules (see 'ufw status' for running firewall):
ufw allow 22
# ufw enable
Firewall is active and enabled on system startup
# ufw status
Status: active
To Action From
-- ------ ----
22 ALLOW Anywhere
22 (v6) ALLOW Anywhere (v6)
输出的格式ufw show added
使得为每个规则编写删除命令变得更加容易。
答案2
目前没有办法通过 CLI 命令显示您在启用防火墙之前输入的规则。但是,您可以直接检查规则文件。/lib/ufw/user*.rules 包含通过“ufw”CLI 命令控制的规则。例如:
$ sudo grep '^### tuple' /lib/ufw/user*.rules
这将显示如下输出(对于使用“sudo ufw allow OpenSSH”添加的规则):
/lib/ufw/user.rules:### tuple ### allow tcp 22 0.0.0.0/0 any 0.0.0.0/0 OpenSSH - in
“元组”是 ufw 内部用来跟踪规则的简写,可以解释为下列之一:
### tuple ### <action> <proto> <dst port> <dst> <src port> <src> <direction>
### tuple ### <action> <proto> <dst port> <dst> <src port> <src> <dst app name> <src app name> <direction>
添加另一个状态命令来支持此功能可能会很有用。请考虑提交错误。
答案3
通用规则在/etc/ufw
。用户定义规则在/lib/ufw/user*
。
答案4
从命令行来看,似乎没有办法。但是,如果你从 Ubuntu 机器(到 Ubuntu 机器)进行 SSH 连接,你可能想尝试这个稍微复杂的方法:
基本上,在远程框上安装 gufw,然后连接 X 转发并运行 GUI。
在远程设备上,使用-X
以下选项连接后:
sudo apt-get install gufw
sudo gufw
这将向您显示规则集,而无需激活它。
请注意,如果远程设备是真正的“无头”服务器,则安装 GUFW 可能会降低大量依赖项。但除非有人知道让 UFW 无需先激活即可显示所需输出的技巧,否则这可能是您唯一的选择。
我确实尝试过sudo ufw show raw
,但是它显示的是 iptables 输出,我完全搞不懂。