ufw作为ubuntu20.04的默认防火墙,刚好最近需要用到防火墙,所以研究了ufw的基本用法。

ufw的下载

ufw是ubuntu20.04上的防火墙配置工具,一般是默认安装的,如果你没有安装,则可以使用如下命令来安装。

sudo apt update
sudo apt install ufw

查看ufw的状态

一般ufw是不会开启的,激活ufw用sudo ufw enable来激活。需要注意的是,在激活的时候,默认是不允许ssh端口连接的,ufw会保持当前的连接,这时候执行sudo ufw allow ssh

来开启ssh的端口。如果不执行,重启后下次ssh连接就不能正常连接,因为ufw默认允许内部流量出去,但不允许外部流量进来。

你可以通过下面的命令来检查ufw的状态。

sudo ufw status verbose

一般ufw命令只能在具有sudo权限的用户以及root用户下执行。执行完上面的命令后,如果开启了ufw则会输出下面这段文字和防火墙的规则。

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

如果没有激活ufw,则输出应该为Status: inactive

查看ufw的规则还有另一条命令

sudo ufw status

这条指令相比于上面的sudo ufw status verbose。这条指令则没有上面那条输出的信息多,上面那条指令会输出更为详细的端口规则。

还有一条查看的命令会给规则前面加上序列号,通过序列号可以删除规则。

sudo ufw status numbered

端口规则设置

ufw激活后的默认的策略是允许出去,不允许流量进来,这个可以在ufw的配置文件中看到。在配置文件/etc/default/ufw中可以看到DEFAULT_OUTPUT_POLICY="ACCEPT"

,如果需要端口可以出去,则需要自己配置。

可以通过ufw的命令来直接修改端口规则。

ufw allow port_number/protocol

ufw配置了一些特定的端口的规则,我们可以直接用。

sudo ufw allow http #允许http连接
sudo ufw denty http #阻止http连接

这些特定的端口定义在文件/etc/services 中。

我们也可以自己配置端口的规则。

sudo ufw allow 2222/tcp #允许2222端口的TCP
sudo ufw allow 2222/udp #允许2222端口的UDP
sudo ufw denty 2222/tcp #阻止2222端口的TCP
sudo ufw denty 2222/udp #阻止2222端口的UDP

如果不带有TCP或者UDP,则默认两种都可以。

sudo ufw allow 2222 #允许2222端口的连接
sudo ufw denty 2222 #阻止2222端口的连接

如果要配置一组连续的端口,则可以这样。

sudo ufw allow 2200:2222/tcp #允许2200到2222端口的TCP
sudo ufw denty 2200:2222/tcp #阻止2200到2222端口的UDP

设置特定IP连接

我们可以设置特定的IP可以连接过来。

sudo ufw allow from xx.xx.xx.xx #允许特定IP连接过来
sudo ufw denty from xx.xx.xx.xx #阻止特定IP访问

还可以指定特定IP连接到特定端口

sudo ufw allow from xx.xx.xx.xx to any poart 2222 #允许特定IP通过端口2222
sudo ufw denty from xx.xx.xx.xx to any poart 2222 #阻止特定IP通过端口2222

还可以设置特定的子网连接

sudo ufw allow from xx.xx.xx.xx/24 #允许特定子网连接
sudo ufw denty from xx.xx.xx.xx/24 #阻止特定子网连接

配置出入

默认的规则都是进来的,我们可以通过inout配置。

sudo ufw allow in 2222 #允许2222端口的流量进来
sudo ufw denty in 2222 #阻止2222端口的流量进来
sudo ufw allow out 2222 #允许2222端口的流量出去
sudo ufw denty out 2222 #阻止2222端口的流量出去

删除端口规则

删除有两种方式。

通过在规则前面加上delete删除规则。

sudo ufw delete allow 2222/tcp #删除 allow 2222/tcp这条规则

还有一种方法是通过查看规则序列号来删除。

sudo ufw status numbered
#执行后的接结果
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                     ALLOW IN    Anywhere
[ 2] 80/tcp                     ALLOW IN    Anywhere
[ 3] 8080/tcp                   ALLOW IN    Anywhere

sudo ufw delete 3 #删除第三条规则。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐