我想将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 文件。
创建临时目录
sudo mkdir /home/<USERNAME>/temp_dir
将 /etc/ufw/ 目录复制到临时目录
cp /etc/ufw/* /home/<USERNAME>/temp_dir/
根据您的首选设计直接编辑配置文件,编辑临时目录中的 ufw.conf 和其他配置文件
vi /home/<USERNAME>/temp_dir/ufw.conf
注意:ufw.conf 中的默认值由注释和以下两行组成:
ENABLED=no LOGLEVEL=low
通过直接将规则添加到临时文件来制定规则
ufw.conf
。保存更改:wq
复制临时目录,同时使用更新标志将原始 UFW 文件替换为临时目录中的文件
cp -u /home/<USERNAME>/temp_dir/* /etc/ufw/
重启 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