如何在Ubuntu/Debian Linux上删除UFW防火墙规则

时间:2020-01-09 14:17:02  来源:igfitidea点击:

如何删除在Ubuntu或Debian Linux上运行的UFW防火墙规则?
在CentOS Linux服务器上删除ufw规则的命令是什么?
使用UFW时如何列出和删除防火墙规则?
本教程说明"如何使用命令行选项删除ufw防火墙规则"。

UFW是简单防火墙的首字母缩写。
使用简单的防火墙保护网络非常简单,建议使用。

Ubuntu Linux带有称为Netfilter的数据包过滤。

iptables frontend命令用于管理netfilter。
但是,ufw为netfilter提供了易于使用的前端,它是Ubuntu和Debian Linux系统管理员和开发人员中最受欢迎的前端之一。

列出和删除UFW防火墙规则的过程

  • 显示ufw防火墙规则,运行:sudo ufw status numbered
  • 通过规则编号3删除ufw防火墙规则:sudo ufw delete 3
  • 删除防火墙规则的另一个选项是运行:sudo ufw delete allow 22/tcp

让我们详细查看所有示例。

如何列出UFW防火墙规则

要列出并显示防火墙状态,请运行:

sudo ufw status

输出示例:

Status: active
 
To                         Action      From
--                         ------      ---
22/tcp                     ALLOW       Anywhere                  
25/tcp                     ALLOW       Anywhere                   # accept email
80/tcp                     ALLOW       Anywhere                  
443/tcp                    ALLOW       Anywhere                  
22/tcp (v6)                ALLOW       Anywhere (v6)             
25/tcp (v6)                ALLOW       Anywhere (v6)              # accept email
80/tcp (v6)                ALLOW       Anywhere (v6)             
443/tcp (v6)               ALLOW       Anywhere (v6)

有可能看到防火墙状态为"规则"的编号列表,请执行:

sudo ufw status numbered

另外一个可以显示详细的防火墙状态,运行:

sudo ufw status verbose

列出UFW规则

这是输出:

$ sudo ufw show added

该页面演示了使用命令行选项列出和删除/擦除UFW防火墙规则的各种方法。
确保您在此处阅读ufw手册页,并在下面查看我们的其他页面。

Added user rules (see 'ufw status' for running firewall):
ufw allow from 192.168.2.0/24 to 192.168.2.25 port 22 proto tcp
ufw allow from 192.168.2.0/24 to 192.168.2.26 port 22 proto tcp
ufw allow from 139.59.1.155 to any port 22 proto tcp
ufw allow 80/tcp comment 'accept Apache'
ufw allow 443/tcp comment 'accept HTTPS connections'

如何删除UFW防火墙规则

有两个删除UFW规则的方法。

按规则编号删除UFW规则

首先列出规则以及行号:

sudo ufw status numbered

示例输出在第一栏中显示了我所有的UFW规则及其编号的列表:

Status: active
 
     To                         Action      From
     --                         ------      ---
[ 1] 22/tcp                     ALLOW IN    Anywhere                  
[ 2] 25/tcp                     ALLOW IN    Anywhere                   # accept email
[ 3] 80/tcp                     ALLOW IN    Anywhere                  
[ 4] 443/tcp                    ALLOW IN    Anywhere                  
[ 5] 22/tcp (v6)                ALLOW IN    Anywhere (v6)             
[ 6] 25/tcp (v6)                ALLOW IN    Anywhere (v6)              # accept email
[ 7] 80/tcp (v6)                ALLOW IN    Anywhere (v6)             
[ 8] 443/tcp (v6)               ALLOW IN    Anywhere (v6)

假设您需要删除打开TCP端口25(电子邮件服务器)的规则编号2,请运行:

sudo ufw delete {rule-number-here}
sudo ufw delete 2

当提示您从系统中删除规则并再次验证时,您需要确认y:

sudo ufw status numbered

通过ufw语法删除UFW规则

假设您使用以下语法添加或打开了TCP端口80和443:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw deny 23/tcp

您可以使用以下语法(仅在带有delete的前缀原始规则)中删除这两个规则:

sudo ufw delete allow 80/tcp
sudo ufw delete allow 443/tcp
sudo ufw delete deny 23/tcp

如何禁用ufw?

sudo ufw disable

要再次启用,请运行:

sudo ufw enable

如何重置ufw?

如何禁用防火墙并将其重置为安装默认值?

sudo ufw reset
Resetting all rules to installed defaults. This may disrupt existing ssh
connections. Proceed with operation (y|n)? y
Backing up 'user.rules' to '/etc/ufw/user.rules.20190714_171037'
Backing up 'before.rules' to '/etc/ufw/before.rules.20190714_171037'
Backing up 'user6.rules' to '/etc/ufw/user6.rules.20190714_171037'
Backing up 'after6.rules' to '/etc/ufw/after6.rules.20190714_171037'
Backing up 'before6.rules' to '/etc/ufw/before6.rules.20190714_171037'
Backing up 'after.rules' to '/etc/ufw/after.rules.20190714_171037'

如何批量列出和删除UFW防火墙规则

假设您要使用delete命令删除所有以192.168.184.8开头的源IP地址的ufw规则。
以下是使用UFW和grep命令列出所有此类规则的方法:

$ sudo ufw show added | grep 192.168.184.8

输出示例:

ufw allow from 192.168.184.8 to any port 3306 proto tcp
ufw allow from 192.168.184.8 to any port 22 proto tcp
ufw allow from 192.168.184.8 to any port 3307 proto tcp
ufw allow from 192.168.184.8 to 192.168.217.103 port 8443 proto tcp
....
...
....
ufw allow from 192.168.184.8 to any port 80 proto tcp
ufw allow from 192.168.184.8 to any port 443 proto tcp

我们将使用awk命令来查找ufw并将其替换为ufw delete Linux命令。
让我们以--dry-run选项开始,并确保您以root用户身份运行命令:

# ufw show added | grep 192.168.184.8 \
| awk '{ gsub("ufw","ufw --dry-run delete",
# ufw show added | grep 192.168.184.8 \
| awk '{ gsub("ufw","ufw delete",
# ufw show added \
| awk '/192.168.184.8/{ gsub("ufw","ufw delete",##代码##); system(##代码##)}'
); system(##代码##)}'
); system(##代码##)}'

--dry-run选项告诉ufw不要修改任何东西,只显示更改以避免错误。
如果没有错误,请按照以下步骤删除--dry-run

##代码##

gsub()用于查找ufw的所有实例,并替换为ufw delete,然后调用system($0)执行最终的delete命令。
有关更多信息,请参见" Awk查找和替换字段值"。
我们可以如下跳过grep命令,并使用AWK本身来完成所有工作:

##代码##