当前位置: 首页>>技术教程>>正文


即使处于非活动状

, ,

问题描述

我想知道是否有可能让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输出,我无法做出头部或尾部。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1477.html,未经允许,请勿转载。