Ubuntu22.04默认安装了ufw,若没有安装,则使用以下命令安装:
sudo apt-get install 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 22/tcp #允许22端口的TCP
sudo ufw allow 22/udp #允许22端口的UDP
sudo ufw denty 22/tcp #阻止22端口的TCP
sudo ufw denty 22/udp #阻止22端口的UDP
如果不带有TCP或者UDP,则默认两种都可以。
sudo ufw allow 22 #允许22端口的连接
sudo ufw denty 22 #阻止22端口的连接
如果要配置一组连续的端口,则可以这样。
sudo ufw allow 20:22/tcp #允许20到22端口的TCP
sudo ufw denty 20:22/tcp #阻止20到22端口的UDP
可以设置特定的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 22 #允许特定IP通过端口22
sudo ufw denty from xx.xx.xx.xx to any poart 22 #阻止特定IP通过端口22
设置特定的子网连接:
sudo ufw allow from xx.xx.xx.xx/24 #允许特定子网连接
sudo ufw denty from xx.xx.xx.xx/24 #阻止特定子网连接
默认的规则都是进来的,我们可以通过in和out配置。
sudo ufw allow in 22 #允许22端口的流量进来
sudo ufw denty in 22 #阻止22端口的流量进来
sudo ufw allow out 22 #允许22端口的流量出去
sudo ufw denty out 22 #阻止22端口的流量出去
删除有两种方式:
通过在规则前面加上delete删除规则。
sudo ufw delete allow 22/tcp #删除 allow 22/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 1 #删除第一条规则。