问题描述
我想知道是否有可能让UFW列出配置的防火墙规则,即使它没有启用。我此时只有ssh访问服务器,如果没有配置允许ssh的规则,我不想启用UFW。但是,由于UFW当前未启用,我在运行”ufw status”时只收到”inactive”消息。
是否有一个特殊的标志我可以使用甚至一些配置文件,我可以看看,即使禁用防火墙,配置规则是什么?
最佳解决办法
在通过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
‘tuple’是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>
能够添加另一个状态命令来支持它可能是有用的。请考虑提交错误。
次佳解决办法
现在有一个ufw show added
命令,即使防火墙处于非活动状态,也会为您列出配置的规则。它被添加为this bug report的修复程序
所以现在你可以这样做:
# 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
的输出格式使得为每个规则编写删除命令也变得更加容易。
第三种解决办法
一般规则在/etc/ufw
中。用户定义的规则位于/lib/ufw/user*
中。
第四种办法
在Ubuntu 16.04中,用户定义的规则存储在/etc/ufw/user.rules
中。因此,您可以看到以下规则:
sudo cat /etc/ufw/user.rules
第五种办法
从命令行,似乎没有办法。但是,如果从Ubuntu框(到Ubuntu框)你’re SSH’ing,你可能想尝试这个,有点复杂的方法:
基本上,在远程盒子上安装gufw,然后连接X转发并运行GUI。
在远程设备上,与-X
连接后作为选项:
sudo apt-get install gufw
sudo gufw
这将显示规则集而无需激活它。
请注意,如果远程设备是真正的”headless”服务器,那么安装GUFW可能会导致令人不快的依赖关系。但除非有人知道一个技巧,让UFW首先显示你需要的输出而不是激活它,那么这可能是你唯一的选择。
我确实尝试过sudo ufw show raw
,但这显示了iptables输出,我无法做出头部或尾部。