如何在Ubuntu 18.04 LTS服务器上设置UFW防火墙

时间:2020-01-09 10:39:44  来源:igfitidea点击:

如何在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