介绍
UFW是iptables的防火墙配置工具,默认情况下包含在Ubuntu中。这个欺骗表单样式指南提供了一个快速参考UFW命令,将创建iptables防火墙规则在常见的日常情况下是有用的。这包括通过端口,网络接口和源IP地址允许和阻止各种服务的UFW示例。
如何使用本指南
- 如果你是刚开始使用UFW配置防火墙,看看我们的介绍UFW
- 这里描述的大多数规则假定您正在使用默认UFW规则集。也就是说,它被设置为允许通过默认策略传出和拒绝传入流量,因此您必须选择性地允许流量进入
- 使用随后的章节适用于您要实现的内容。大多数节不是基于任何其他节,因此您可以独立使用下面的示例
- 使用此页面右侧的“内容”菜单(以宽页面宽度)或浏览器的查找功能,找到所需的部分
- 复制并粘贴给出的命令行示例,将红色的值替换为您自己的值
请记住,你可以检查您当前UFW规则集
sudo ufw status
或
sudo ufw status verbose
。
阻止IP地址
要阻止所有网络连接从一个特定的IP地址发起,
15.15.15.51
例如,运行以下命令:
sudo ufw deny from 15.15.15.51
在这个例子中,
from 15.15.15.51
指定“15.15.15.51”的一个
源 IP地址。 如果你想,一个子网,如
15.15.15.0/24
,在这里可以代替规定。 源IP地址可以在任何防火墙规则中指定,其中包括
允许规则。
阻止与网络接口的连接
要阻止来自特定IP地址的连接,例如
15.15.15.51
到一个特定的网络接口,如
eth0
,使用这个命令:
sudo ufw deny in on eth0 from 15.15.15.51
这是相同的前面的例子,通过加入
in on eth0
。网络接口可以在任何防火墙规则中指定,并且是将规则限制到特定网络的好方法。
服务:SSH
如果您使用云服务器,则可能需要允许传入SSH连接(端口22),以便可以连接和管理服务器。本节介绍如何使用各种SSH相关规则配置防火墙。
允许SSH
要允许所有传入的SSH连接运行此命令:
sudo ufw allow ssh
另一种语法是指定SSH服务的端口号:
sudo ufw allow 22
允许从特定IP地址或子网接收SSH
要允许来自特定IP地址或子网的传入SSH连接,请指定源。例如,如果你想使整个
15.15.15.0/24
子网,运行以下命令:
sudo ufw allow from 15.15.15.0/24 to any port 22
允许从特定IP地址或子网接收Rsync
Rsync在端口873上运行,可用于将文件从一台计算机传输到另一台计算机。 要允许来自特定IP地址或子网的传入rsync连接,请指定源IP地址和目标端口。例如,如果你想使整个
15.15.15.0/24
子网能够Rsync在您的服务器,运行以下命令:
sudo ufw allow from 15.15.15.0/24 to any port 873
服务:Web服务器
Web服务器(如Apache和Nginx)通常分别监听端口80和443上的HTTP和HTTPS连接的请求。如果将传入流量的默认策略设置为drop或deny,您将需要创建允许服务器响应这些请求的规则。
允许所有传入的HTTP
要允许所有传入的HTTP(端口80)连接运行此命令:
sudo ufw allow http
另一种语法是指定HTTP服务的端口号:
sudo ufw allow 80
允许所有传入的HTTPS
要允许所有传入的HTTPS(端口443)连接运行此命令:
sudo ufw allow https
另一种语法是指定HTTPS服务的端口号:
sudo ufw allow 443
允许所有传入的HTTP和HTTPS
如果要允许HTTP和HTTPS流量,则可以创建允许两个端口的单个规则。要允许所有传入的HTTP和HTTPS(端口443)连接运行此命令:
sudo ufw allow proto tcp from any to any port 80,443
请注意,您需要指定协议,与
proto tcp
,指定多个端口的时候。
服务:MySQL
MySQL侦听端口3306上的客户端连接。如果远程服务器上的客户端正在使用MySQL数据库服务器,则需要确保允许该流量。
从特定IP地址或子网允许MySQL
要允许来自特定IP地址或子网的传入MySQL连接,请指定源。例如,如果你想使整个
15.15.15.0/24
子网,运行以下命令:
sudo ufw allow from 15.15.15.0/24 to any port 3306
允许MySQL到特定的网络接口
要允许特定的网络接口,说你有一个专用网络接口,MySQL连接
eth1
,例如使用这个命令:
sudo ufw allow in on eth1 to any port 3306
服务:PostgreSQL
PostgreSQL侦听端口5432上的客户端连接。如果远程服务器上的客户端正在使用您的PostgreSQL数据库服务器,则需要确保允许该流量。
PostgreSQL从特定的IP地址或子网
要允许从特定IP地址或子网传入PostgreSQL连接,请指定源。例如,如果你想使整个
15.15.15.0/24
子网,运行以下命令:
sudo ufw allow from 15.15.15.0/24 to any port 5432
如果第二个命令,允许
建立的PostgreSQL连接发送的报文,只需要
OUTPUT
的政策未设置为
ACCEPT
。
允许PostgreSQL到特定的网络接口
为了让PostgreSQL的连接到特定的网络接口,说你有一个专用网络接口
eth1
,例如使用这个命令:
sudo ufw allow in on eth1 to any port 5432
如果第二个命令,允许
建立的PostgreSQL连接发送的报文,只需要
OUTPUT
的政策未设置为
ACCEPT
。
服务:邮件
邮件服务器(例如Sendmail和Postfix)根据用于邮件传递的协议在各种端口上侦听。如果您正在运行邮件服务器,请确定您正在使用哪些协议,并允许相应类型的流量。我们还将向您展示如何创建规则以阻止传出SMTP邮件。
阻止发送SMTP邮件
如果您的服务器不应发送外发邮件,则可能需要阻止此类流量。要阻止使用端口25的传出SMTP邮件,请运行以下命令:
sudo ufw deny out 25
这将配置防火墙
删除所有出站流量在端口25上。如果你需要通过端口号拒绝不同的服务,而不是25端口,只需更换它。
允许所有传入SMTP
要允许服务器响应SMTP连接(端口25),请运行以下命令:
sudo ufw allow 25
注:这是常见的的SMTP服务器使用端口587的出站邮件。
允许所有收到的IMAP
要允许服务器响应IMAP连接(端口143),请运行以下命令:
sudo ufw allow 143
允许所有传入的IMAPS
要允许您的服务器响应IMAPS连接,端口993,请运行以下命令:
sudo ufw allow 993
允许所有传入的POP3
要允许服务器响应POP3连接,端口110,请运行以下命令:
sudo ufw allow 110
允许所有传入的POP3S
要允许服务器响应POP3S连接(端口995),请运行以下命令:
sudo ufw allow 995
结论
这应该涵盖使用UFW配置防火墙时常用的许多命令。当然,UFW是一个非常灵活的工具,所以随意混合和匹配命令与不同的选项,以满足您的具体需要,如果这里不包括。 祝你好运!