我应该如何启用UFW:通过“systemctl启用”或“ufw启用”?

我应该如何启用UFW:通过“systemctl启用”或“ufw启用”?

我知道启动 UFW 的两种方法:通过 systemctl 和通过 ufw 本身。例如,当我使用 时systemctl enable ufw,我得到以下状态:

systemctl status ufw

● ufw.service - CLI Netfilter Manager
   Loaded: loaded (/usr/lib/systemd/system/ufw.service; enabled; vendor preset:>
   Active: active (exited) since Sun 2019-12-01 12:34:29 +05; 6min ago

但 ufw 自己说:

ufw status verbose

Status: inactive

我无法通过它看到规则,GUFW 实用程序说 UFW 不活动。但如果我这样做:

systemctl disable ufw
systemctl stop ufw
ufw enable
ufw status verbose

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

然后我可以使用 GUFW 并查看 UFW 实用程序中的详细状态和规则。

那么通过 systemctl 启动和 ufw 本身启动有什么区别以及正确的方法是什么?

答案1

如果这样做ufw enablesystemctl disable ufw然后重新启动系统,ufw status verbose重新启动后的输出是什么?

我猜一定会的inactive

如果这是真的,那么解释如下:

  • ufw enable= 立即启用防火墙规则,并记录所需状态是从现在开始启用防火墙。 (如果需要防火墙管理守护进程,这也会自动启动它。)

  • ufw disable= 立即禁用防火墙规则,并记录所需的状态是禁用防火墙,直到另有命令为止。

  • systemctl start ufw= 恢复之前记录的防火墙所需状态(如果所需状态是禁用防火墙,则无需执行任何操作)。另外,如果需要,启动任何防火墙管理守护进程,以便管理进程将被识别为systemd不属于任何用户会话的后台进程。如果您希望永久启用防火墙,您将希望在启动时自动发生这种情况,并且ufw enable设置。

  • systemctl stop ufw= 停止防火墙管理守护进程;也可能会或可能不会禁用任何现有的防火墙规则(使用iptables -vnLnft list tables检查内核中有效的实际规则,独立于ufw)。

  • systemctl enable ufw= 在任何后续重新启动时,systemctl start ufw作为启动过程的一部分自动运行。

  • systemctl disable ufw= 在任何后续重新启动时,不要执行任何操作来恢复防火墙状态,也不要自动启动防火墙管理守护进程:采用完全没有防火墙规则的内核默认值。


例如,如果您需要远程设置新的防火墙规则,并且必须确保自己不会将自己锁在外面,您可以设置systemctl disable ufw,设置在 15 分钟左右自动重新启动,然后添加您的规则并使用ufw enable。如果仍然可以连接到系统,则就远程访问而言,规则是正确的;您可以设置systemctl enable ufw(以便规则在重新启动后也有效)并删除定时重新启动作业。

但是,如果您犯了一个错误,导致您无法访问,只需等待重新启动作业触发,系统将不会出现任何防火墙规则(因为systemctl disable ufw),您将能够重新登录以修复规则配置。

相关内容