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