如何在Ubuntu 18.04 LTS服务器上设置UFW防火墙
如何在Ubuntu Linux 18.04 LTS服务器上设置带有UFW(简单防火墙)的防火墙,以限制托管Cats Blog的个人Ubuntu Web服务器上的流量?
如何在Ubuntu 18.04 LTS上使用UFW设置防火墙?
说明:UFW是简单防火墙的首字母缩写。
使用简单的防火墙保护网络非常容易。
Ubuntu Linux带有称为Netfilter的数据包过滤。
iptables frontend命令用于管理netfilter。
但是,ufw为netfilter提供了易于使用的前端,它是Ubuntu系统管理员和开发人员中最受欢迎的前端之一。
在本教程中我们学习了如何使用ufw设置和保护Ubuntu 18.04 LTS服务器。
如何在Ubuntu Linux 18.04 LTS上设置UFW防火墙
在Ubuntu 18.04上使用UFW设置防火墙的过程:
- 确保已安装UFW
- 在Ubuntu上使用ufw设置默认的拒绝防火墙策略
- 在Ubuntu上使用
sudo ufw allow port
语法打开所需的端口 - 至少您需要使用ufw打开SSH,HTTP/HTTPS和其他TCP/IP端口。
- 用
sudo ufw enable
启用ufw - 删除ufw规则
ufw delete num
命令
如何检查我的Fiewall规则的状态?
使用status命令:
$ sudo ufw status $ sudo ufw status numbered $ sudo ufw status verbose
如何检查UFW防火墙状态
如何使用ufw添加更多规则(开放端口并允许IP地址)
打开tcp端口80和25的语法如下:
$ sudo ufw allow 80/tcp $ sudo ufw allow 25/tcp comment 'accept email'
打开UDP/1194(OpenVPN)服务器:
$ sudo ufw allow 1194/udp
如何通过ufw允许端口范围
您也可以允许端口范围,例如tcp和udp 4000至6000:
$ sudo ufw allow 4000:6000/tcp $ sudo ufw allow 4000:6000/udp
假设您要允许来自名为1.2.3.4的IP地址的连接,请执行:
$ sudo ufw allow from 1.2.3.4
让我们允许从名为1.2.3.4的IP地址到端口22的连接,执行:
$ sudo ufw allow from 1.2.3.4 to any port 22 proto tcp
或(目标222.222.222.222端口22)
$ sudo ufw allow from 1.2.3.4 to 222.222.222.222 port 22 proto tcp
如何允许传入的MySQL/MariaDB通信(开放端口3306)
仅允许从选定的子网访问MySQL/MariaDB端口3306(请参阅MySQL/MariaDB远程访问教程):
$ sudo ufw allow from 192.168.1.0/24 to any port 3306
仅允许访问MySQL/MariaDB端口3306 Apache服务器:
$ sudo ufw allow from 192.54.1.1 to any port 3306
通过打开端口5432设置并允许PostgreSQL通信
仅允许从选定的子网访问PostgreSQL端口5432(请参阅PostgreSQL远程访问教程):
$ sudo ufw allow from 192.168.1.0/24 to any port 5432
仅允许访问PostgreSQL端口5432 Apache服务器:
$ sudo ufw allow from 192.54.1.1 to any port 5432
打开传入的IMAP/IMAPS邮件服务器端口
$ sudo ufw allow 143 $ sudo ufw allow 993
用ufw打开POP3/POP3S端口
$ sudo ufw allow 110 $ sudo ufw allow 995
如何拒绝访问端口或连接
您要关闭端口并阻止IP地址吗?
拒绝访问的语法如下(即简单地忽略对端口443的访问):
$ sudo ufw deny 443/tcp
确保拒绝来自名为1.2.3.4的IP地址的所有连接,执行:
$ sudo ufw deny from 1.2.3.4
拒绝来自IP /子网123.45.67.89/24的所有连接,执行:
$ sudo ufw deny from 123.45.67.89/24
是否要拒绝访问端口22上的1.2.3.4(例如黑客IP)?
尝试:
$ sudo ufw deny from 1.2.3.4 to any port 22 proto tcp
如何拒绝访问端口或连接(拒绝并让用户知道它们已被防火墙阻止)
deny语法只是忽略流量。
如果要让发送方知道何时拒绝流量,而不是简单地忽略它,请使用拒绝语法:
$ sudo ufw reject in smtp $ sudo ufw reject out smtp $ sudo sudo ufw reject 1194 comment 'No more vpn traffic' $ sudo ufw reject 23 comment 'Unencrypted port not allowed'
如果有人尝试连接到端口23,他们将收到拒绝消息,如下所示:
telnet: Unable to connect to remote host: Connection refused
如何删除UFW防火墙规则
到目前为止,您已经了解了如何添加,拒绝和列出防火墙规则。
现在该删除不想要的规则了。
有两个删除规则的选项。
第一种语法是:
$ sudo ufw delete {rule-here}
在此示例中,删除HTTPS(TCP端口443)流量规则,
$ sudo ufw delete allow 443
如果您不再希望允许smptd/email(端口25)通信,请执行:
$ sudo ufw delete allow 25
第二个选项是以编号列表格式列出所有当前规则:
$ sudo ufw status numbered
输出示例:
Status: active To Action From -- ------ --- [ 1] 22/tcp ALLOW IN Anywhere [ 2] 443/tcp ALLOW IN Anywhere # Open port Apache port 443 [ 3] 22/tcp (v6) ALLOW IN Anywhere (v6) [ 4] 443/tcp (v6) ALLOW IN Anywhere (v6) # Open port Apache port 443
要删除第二条和第四条规则(允许TCP/443访问的规则,请执行以下命令:
$ sudo ufw delete 2 $ sudo ufw status numbered $ sudo ufw delete 3
通过在Ubuntu上指定ufw规则编号来删除它们
如何重置基于ufw的防火墙?
运行:
$ sudo ufw reset
如何重新加载基于ufw的防火墙?
您可以使用以下方法重新加载防火墙:
$ sudo ufw reload
编辑UFW的配置文件时,需要运行reload命令。
例如,您可以编辑/etc/ufw/before.rules,执行:
$ sudo nano /etc/ufw/before.rules
或者
$ sudo vi /etc/ufw/before.rules
要允许从eth0到eth0的所有通信(在添加为" End required lines"的行之后添加),请执行:
# allow all on eth0 -A ufw-before-input -i eth0 -j ACCEPT -A ufw-before-output -o eth0 -j ACCEPT
保存并关闭文件。
重新加载防火墙:
$ sudo ufw reload
我如何查看防火墙日志?
默认情况下,所有UFW条目都记录到/var/log/ufw.log文件中。
使用grep命令/more命令/tail命令和其他命令查看ufw日志:
$ sudo more /var/log/ufw.log $ sudo tail -f /var/log/ufw.log
我如何查看ufw报告?
添加的报告显示在命令行中添加的规则列表:
$ sudo ufw show added $ sudo ufw show listening
其他可能的报告是:
$ sudo ufw show raw $ sudo ufw show builtins $ sudo ufw show before-rules $ sudo ufw show user-rules $ sudo ufw show after-rules $ sudo ufw show logging-rules