在Ubuntu 18.04上配置Ubuntu防火墙UFW

・7 分钟阅读

安装UFW

在Ubuntu 18.04中默认安装了UFW,你可以这样验证:

 
which ufw

 

你应该收到以下输出:

 
/usr/sbin/ufw

 

如果你没有收到输出,这意味着没有安装UFW,如果是这种情况,你可以自己安装它:


sudo apt-get install ufw

允许连接

如果你正在运行Web服务器,你希望全世界都能够访问你的网站。因此,你需要确保web的默认TCP端口是打开的。


sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

通常,通过使用以下格式,可以允许任何端口:


sudo ufw allow <port>/<optional: protocol>

拒绝连接

如果需要拒绝对某个端口的访问,请使用deny命令:


sudo ufw deny <port>/<optional: protocol>

例如,你可以拒绝访问默认的MySQL端口:


sudo ufw deny 3306

UFW还支持最常见的服务端口的简化语法:


root@ubuntu:~$ sudo ufw deny mysql
Rule updated
Rule updated (v6)

强烈建议你限制访问你的SSH端口,(默认情况下,端口是22 ),可信的IP地址除外。

允许从受信任的IP地址访问

通常,你需要只允许访问公开开放的端口,例如,端口80 ,应限制或限制对所有其他端口的访问。你可以将家庭或办公室IP地址(最好是静态IP)列入白名单,以便能够通过SSH或FTP访问你的服务器:


sudo ufw allow from 192.168.0.1 to any port 22

你还可以允许访问MySQL端口:


sudo ufw allow from 192.168.0.1 to any port 3306

启用UFW

在启用(或重新启动)UFW之前,你需要确保允许SSH端口从你的IP地址接收连接。要启动/启用UFW防火墙请使用以下命令:

 
sudo ufw enable

 

你将看到以下输出:


root@ubuntu:~$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)?

按Y键,然后按回车键启用防火墙:


Firewall is active and enabled on system startup

检查UFW状态

打印UFW规则列表

 
sudo ufw status

 

你将看到类似以下内容的输出:


Status: active

To Action From
-- ------ ----
80/tcp DENY Anywhere
443/tcp DENY Anywhere
3306 DENY Anywhere
22 ALLOW 192.168.0.1
3306 ALLOW 192.168.0.1
80/tcp (v6) DENY Anywhere (v6)
443/tcp (v6) DENY Anywhere (v6)
3306 (v6) DENY Anywhere (v6)

使用verbose参数可以查看更详细的状态报告:


sudo ufw status verbose

输出将类似于以下内容:


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

To Action From
-- ------ ----
80/tcp DENY IN Anywhere
443/tcp DENY IN Anywhere
3306 DENY IN Anywhere
22 ALLOW IN 192.168.0.1
3306 ALLOW IN 192.168.0.1
80/tcp (v6) DENY IN Anywhere (v6)
443/tcp (v6) DENY IN Anywhere (v6)
3306 (v6) DENY IN Anywhere (v6)

Disable/reload/restart UFW

如果需要重新加载防火墙规则,请执行以下操作:

 
sudo ufw reload

 

要禁用或停止UFW

复制代码 sudo ufw禁用

要重新启动UFW你需要先禁用它,然后再次启用它,


sudo ufw disable
sudo ufw enable

注意:在启用UFW之前,请确保你的IP地址允许使用SSH端口。

删除规则

要管理UFW规则,需要列出它们,你可以通过使用编号参数检查UFW状态来执行此操作:


sudo ufw status numbered

你将看到类似以下内容的输出:


Status: active

 To Action From
 -- ------ ----
[ 1] 80/tcp DENY IN Anywhere
[ 2] 443/tcp DENY IN Anywhere
[ 3] 3306 DENY IN Anywhere
[ 4] 22 ALLOW IN 192.168.0.1
[ 5] 3306 ALLOW IN 192.168.0.1
[ 6] 80/tcp (v6) DENY IN Anywhere (v6)
[ 7] 443/tcp (v6) DENY IN Anywhere (v6)
[ 8] 3306 (v6) DENY IN Anywhere (v6)

现在,要删除这些规则,你需要在方括号中使用这些数字:


sudo ufw delete [number]

若要删除HTTP规则(80 ),请使用以下命令:


sudo ufw delete 1

启用IPv6支持

如果在VPS上使用IPv6,就需要确保在UFW中启用了IPv6支持,为此,在文本编辑器中打开配置文件:


sudo vi /etc/default/ufw

打开后,请确保IPV6设置为"yes":

 
IPV6=yes

 

进行这个更改后,保存文件,然后,通过禁用,并且重新启用UFW重新启动:


sudo ufw disable
sudo ufw enable

返回默认设置

如果需要返回到默认设置,只需输入以下命令,这将恢复你的任何更改:

 
sudo ufw reset

 

恭喜你,你刚刚设置了一些基本的防火墙规则,若要了解更多例子,请查阅UFW社区帮助维基

Hrh profile image