如何在Ubuntu 20.04 LTS上使用UFW配置防火墙
如何在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