如何在Ubuntu 20.04 LTS上使用UFW配置防火墙

时间:2020-01-09 14:16:58  来源:igfitidea点击:

如何在Ubuntu 20.04 LTS服务器上使用UFW设置和配置防火墙?

UFW是简单防火墙的首字母缩写(uncomplicated firewall)。
使用简单的防火墙保护网络非常简单,强烈建议使用。
本教程说明如何使用ufw设置和保护Ubuntu 20.04 LTS服务器。

步骤1设置默认UFW策略

要查看ufw的状态,请执行:

sudo ufw status

输出示例:

Status: inactive

默认策略防火墙对服务器和台式机都适用。
始终关闭服务器上的所有端口并仅一次打开所需的端口始终是一个好策略。
让我们阻止所有传入连接,仅允许来自Ubuntu 20.04 LTS框的传出连接:

sudo ufw default allow outgoing
sudo ufw default deny incoming

步骤2打开SSH TCP端口22连接

下一步的逻辑步骤是允许传入的SSH端口。
我们可以使用UFW轻松打开SSH TCP端口22,如下所示:

sudo ufw allow ssh

如果在TCP端口2222上运行ssh,请执行:

sudo ufw allow 2222/tcp

某些系统管理员在家庭或办公室位置具有静态IP地址(例如192.54.2.5)。
在这种情况下,仅允许从静态IP地址(例如192.54.2.5)到Ubuntu服务器IP地址172.24.13.45的ssh访问题描述:

sudo ufw allow proto tcp from 192.54.2.5 to 172.24.13.45 port 22

步骤3开启防火墙

现在我们启用了基本配置。
换句话说,防火墙将丢弃除ssh TCP端口22之外的所有传入流量。
让我们在UFW上启用它,执行:

sudo ufw enable

请记住,启用UFW后,它也会在系统重新引导后运行。
我们可以使用systemctl命令轻松地验证这一点:

sudo systemctl status ufw.service

是否要禁用基于UFW的防火墙?尝试

如果您需要停止防火墙并在系统启动时禁用,请执行:

sudo ufw disable

输出示例:

Firewall stopped and disabled on system startup

步骤4打开特定的传入连接/端口

让我们添加更多规则。
假设您要打开端口并使用ufw允许IP地址。
打开TCP端口80和443的语法如下:

sudo ufw allow 80/tcp comment 'accept Apache'
sudo ufw allow 443/tcp comment 'accept HTTPS connections'

打开UDP/1194(OpenVPN)服务器:

sudo ufw allow 1194/udp comment 'OpenVPN server'

通过ufw允许端口范围

我们也可以允许端口范围,例如tcp和udp 3000到4000:

sudo ufw allow 3000:4000/tcp
sudo ufw allow 3000:4000/udp

在此示例中,您要允许来自名为104.22.10.214的IP地址的所有连接,执行:

sudo ufw allow from 104.22.10.214

让我们允许从名为104.22.11.213的IP地址到端口25的连接,执行:

sudo ufw allow from 104.22.11.213 to any port 25 proto tcp

我们也可以为端口25设置dest IP 222.222.222.222:

sudo ufw allow from 104.22.11.213 to 222.222.222.222 port 25 proto tcp

步骤5阻止和拒绝传入的连接/端口

您要关闭端口并阻止某些IP地址吗?
拒绝访问的语法如下。
换句话说,只需忽略对端口25的访问即可:sudo ufw deny 25/tcp确保我们拒绝来自名为203.5.1.43的IP地址的所有连接,执行:

sudo ufw deny from 203.5.1.43

拒绝来自IP /子网103.13.42.13/29的所有连接,执行:

sudo ufw deny from 103.13.42.13/29

是否要拒绝访问端口22上的1.1.1.2(例如恶意IP)?
尝试:

sudo ufw deny from 1.1.1.2 to any port 22 proto tcp

步骤6验证UFW的状态

使用status命令,如下所示:

sudo ufw status
Status: active
 
To                         Action      From
--                         ------      ---
22/tcp                     ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere                   # accept Apache
443/tcp                    ALLOW       Anywhere                   # accept HTTPS connections
1194/udp                   ALLOW       Anywhere                   # OpenVPN server
3000:4000/tcp              ALLOW       Anywhere                  
3000:4000/udp              ALLOW       Anywhere                  
Anywhere                   ALLOW       104.22.10.214             
25/tcp                     ALLOW       104.22.11.213             
222.222.222.222 25/tcp     ALLOW       104.22.11.213             
Anywhere                   DENY        203.5.1.43                
Anywhere                   DENY        103.13.42.8/29            
22/tcp                     DENY        1.1.1.2                   
22/tcp (v6)                ALLOW       Anywhere (v6)             
80/tcp (v6)                ALLOW       Anywhere (v6)              # accept Apache
443/tcp (v6)               ALLOW       Anywhere (v6)              # accept HTTPS connections
1194/udp (v6)              ALLOW       Anywhere (v6)              # OpenVPN server
3000:4000/tcp (v6)         ALLOW       Anywhere (v6)             
3000:4000/udp (v6)         ALLOW       Anywhere (v6)

想要详细的输出?
尝试:

sudo ufw status verbose

Ubuntu 20.04 LTS UFW删除规则

到目前为止,我们学习了如何添加,拒绝和列出防火墙规则。
现在该删除不想要的规则了。
语法如下,以编号列表格式列出所有当前规则:

sudo ufw status numbered
Status: active
 
     To                         Action      From
     --                         ------      ---
[ 1] 22/tcp                     ALLOW IN    Anywhere                  
[ 2] 80/tcp                     ALLOW IN    Anywhere                   # accept Apache
[ 3] 443/tcp                    ALLOW IN    Anywhere                   # accept HTTPS connections
[ 4] 1194/udp                   ALLOW IN    Anywhere                   # OpenVPN server
[ 5] 3000:4000/tcp              ALLOW IN    Anywhere                  
[ 6] 3000:4000/udp              ALLOW IN    Anywhere

要删除第六条规则,请输入以下命令:

sudo ufw delete 6
sudo ufw status numbered

用于通过UFW配置防火墙的其他命令

让我们学习一些更重要的命令。

重置UFW

sudo ufw reset

重新加载UFW

sudo ufw reload

查看防火墙日志

默认情况下,所有UFW条目都记录到/var/log/ufw.log文件中。
使用NA命令/更多命令/tail命令和其他命令查看ufw日志:

sudo more /var/log/ufw.log
sudo tail -f /var/log/ufw.log

让我们打印所有试图通过SSH端口登录但被UFW丢弃的IP地址的列表:

grep 'DPT=22' /var/log/ufw.log |\
egrep -o 'SRC=([0-9]{1,3}[\.]){3}[0-9]{1,3}' |\
awk -F'=' '{ print  }' | sort -u

显示规则列表

sudo ufw show added
sudo ufw show listening