如何在不禁用 ufw 的情况下重置它?

如何在不禁用 ufw 的情况下重置它?

我想将ufw设置重置为默认设置,应用新设置,然后重新加载防火墙。在进行更改时,我希望防火墙继续使用旧设置运行。

man ufw状态:

   reset  Disables and resets firewall to installation  defaults.  Can  also  give  the  --force
          option to perform the reset without confirmation.

因此,这似乎ufw reset不是解决方案,因为除了重置为安装默认值之外,它还禁用防火墙。

我知道我可以直接摆弄 ufw 配置文件然后。这是解决方案吗,或者在这种情况下ufw reload是否有更惯用的方式使用?ufw

答案1

这是我用来处理这个问题的逻辑。我这样做是为了能够整天通过 ssh 远程直接编辑 ufw.conf 文件,而不会干扰活动的 ufw.conf。这是一个您将直接手动配置 conf 文件的过程,而不是使用各种命令来编辑 conf 文件。

  1. 创建临时目录

    sudo mkdir /home/<USERNAME>/temp_dir
    
  2. 将 /etc/ufw/ 目录复制到临时目录cp /etc/ufw/* /home/<USERNAME>/temp_dir/

  3. 根据您的首选设计直接编辑配置文件,编辑临时目录中的 ufw.conf 和其他配置文件vi /home/<USERNAME>/temp_dir/ufw.conf

    注意:ufw.conf 中的默认值由注释和以下两行组成:

    ENABLED=no
    LOGLEVEL=low
    
  4. 通过直接将规则添加到临时文件来制定规则ufw.conf。保存更改:wq

  5. 复制临时目录,同时使用更新标志将原始 UFW 文件替换为临时目录中的文件

    cp -u /home/<USERNAME>/temp_dir/* /etc/ufw/
    
  6. 重启 UFW

    ufw disable && ufw enable && ufw status
    

这需要一点工作量,但经过测试,适用于 14.04。这对我来说很有效,可以在不破坏防火墙的情况下更新配置文件。这是因为您正在编辑一个文件,除非得到通知,否则防火墙不会使用它。此外,您可能必须更改一些权限才能使命令正常工作。

另一种类似的方法是使用 2 台服务器,在第一台服务器上重置并编辑 UFW,然后cp -u在第二台服务器上重置并编辑 UFW。

祝你好运!!

答案2

#!/bin/bash

# Backup current UFW rules
sudo cp /etc/ufw/user.rules /etc/ufw/user.rules.backup

# Clear existing rules in the user.rules file
sudo truncate -s 0 /etc/ufw/user.rules

# Apply new configuration
# Replace the following line with your custom configuration
# Example: sudo ufw allow ssh
#          sudo ufw allow 80/tcp
#          sudo ufw deny from 192.168.1.100
#          etc.
sudo ufw allow ssh

# Reload UFW to apply the new configuration
sudo ufw reload

相关内容