UFW 通用防火墙规则和命令

卡拉先生
发布于 2020年08月15日 | 上次编辑:2020年08月18日

UFW防火墙基本配置与命令
UFW防火墙基本配置与命令

前言

UFW 是 Ubuntu 内置的默认防火墙配置工具。本教程是以 UFW 快速查询手册的形式为大家讲解如何为 Ubuntu 服务器架起一道防护壁垒。这些命令在 Ubuntu 日常维护和全新搭建时,非常有用。

前期准备

  • 本文所写的规则是建立在大家使用默认 UFW 规则集的前提下。
  • 我们是以手册的形式来编写本教程的,每个命令都可以单独成立。查询可直接使用Ctrl+F。
  • 复制粘贴命令时,注意将里面对应的数值替换成自己服务器的值。

注意:我们可以使用sudo ufw status 查询当前 UFW 的状态。使用sudo ufw status verbose命令查询我们制定的规则集。 这两条命令非常实用,添加规则后,都可以顺手输入看看状态。

拒绝指定特定IP地址连接

要阻止特定源的 IP 地址连入服务器,(例如:192.168.1.100)可使用以下命令。

sudo ufw deny from 192.168.1.100

指定网络接口拒绝连接

要阻止特定 IP (例如:192.168.1.100)到特定网络接口(例如:eth0),可以使用以下命令:

sudo ufw deny in on eth0 from 192.168.1.100

默认情况下 ufw 的规则会针对所有网络设备,但某些特殊情况下,我们也可以针对指定单一网络设备应用规则。比如有线网卡 eth0 (我们可以使用ifconfig命令查看服务器现有的网络设备)

SSH 连接

如果我们使用云服务器,可以使用 SSH 来连接服务器(ssh 端口默认是22),以便我们远程管理服务器。

本章我们将介绍如何使用服务器防火墙来配置 SSH 相关规则。这对服务器安全至关重要,大家多多实践。

允许 SSH 接入

允许所有 SSH 连接接入服务器

sudo ufw allow ssh

还有一种是使用端口来实现允许 SSH 接入服务器,ssh 服务默认端口为 22 ,我们也可以开放端口访问来达到相同的目的。

sudo ufw allow 22

允许从特定 IP 地址或子网传入 SSH

要允许来自特定 IP 地址或子网的 SSH 连接。我们可以指定一个范围。例如要允许 192.168.1.100/200 子网访问,可使用以下命令:

sudo ufw allow from 192.168.1.100/200 to any port 22

允许来自特定 IP 地址或子网传入 Rsync

运行在端口 873 上的 Rsync 可用于在服务器之间同步文件。

我们可以使用以下命令来允许 rsync 服务在指定 IP 或子网中使用。

sudo ufw allow from 192.168.1.100/200 to any port 873

UFW 服务器配置
UFW 服务器配置

Web 服务器

Apache 和 Nginx 之类的 Web 服务器通常分别监听 80 端口和 443 端口上的 HTTP 和 HTTPS 连接请求。如果我们的服务器默认策略是拒绝连接,那么我们就要设置允许 80 和 443 端口可以接入,不然外网就无法访问我们的在服务器上架设的网站了。

允许所有访问 IP 可以访问 HTTP

要允许所有访问 IP 可访问 HTTPS(80 端口)的连接,我们可以使用以下命令:

sudo ufw allow http

另一种方式是允许 访问 HTTP 80 端口,效果是一样的。

sudo ufw allow 80

允许所有访问 IP 可以访问 HTTPS

要允许所有访问 IP 可访问 HTTPS(443 端口)的连接,我们可以使用以下命令:

sudo ufw allow https

另一种方式是允许 访问 HTTPS 443 端口,效果是一样的。

sudo ufw allow 443

允许所有传入的 HTTP 和 HTTPS

如果要同时允许 HTTP 和 HTTPS 对外通信的话,我们也可以创建一个允许两个端口的规则。

sudo ufw allow proto tcp from any to any port 80,443

MySQL

MySQL 在端口 3306 上监听客户端连接。如果远程服务器上的客户端使用 MySQL 数据库服务器,那么我们就要允许访问这个端口。

允许来自指定 IP 或子网的MySQL

要允许指定的 IP 地址 连接 MySQL 服务,我们可以使用以下命令。(例:192.168.1.100/200)

sudo ufw allow from 192.168.1.100/200 to any port 3306

允许 MySQL 连接到某个特定网络端口

如果只想要 MySQL 连接到某个特定网络接口,例如eth1 请使用以下命令:

sudo ufw allow in on eth1 to any port 3306

默认情况下 ufw 的规则会针对所有网络设备,但某些特殊情况下,我们也可以针对指定单一网络设备应用规则。比如有线网卡 eth0 (我们可以使用ifconfig命令查看服务器现有的网络设备)

PostgreSQL

PostgreSQL 在端口 5432 上监听客户端连接。如果远程服务器上的客户端使用 PostgreSQL 数据库服务器,那么我们就要允许访问这个端口。

允许来自指定 IP 或子网的MySQL

要允许指定的 IP 地址 连接 PostgreSQL 服务,我们可以使用以下命令。(例:192.168.1.100/200)

sudo ufw allow from 192.168.1.100/200 to any port 5432

允许 PostgreSQL 连接到某个特定网络端口

如果只想要 PostgreSQL 连接到某个特定网络接口,例如eth1 请使用以下命令:

sudo ufw allow in on eth1 to any port 5432

默认情况下 ufw 的规则会针对所有网络设备,但某些特殊情况下,我们也可以针对指定单一网络设备应用规则。比如有线网卡 eth0 (我们可以使用ifconfig命令查看服务器现有的网络设备)

UFW设置mail server安全配置
UFW设置mail server安全配置

邮件Mail服务器

邮件服务器,我们用最常见的邮件服务 Sendmail 和 Postfix 来举例说明。

拒绝传出SMTP邮件

如果您的服务器不应该发送外发邮件,则可能需要阻止这种流量。要阻止使用端口25的传出SMTP邮件,请运行以下命令:

如果我们的服务器不允许向外发邮件,我们可以禁止掉 25 端口的 SMTP 服务。

sudo ufw deny out 25

此命令会使防火墙设置成阻止 25 端口上的所有流量。请注意,有时候 SMTP 端口不是使用的默认 25 端口,请根据自己的情况修改。

允许所有流量接入 SMTP

如果要允许所有流量可访问 SMTP 服务,我们可以使用此命令:

sudo ufw allow 25

允许所有流量访问 IMAP

要使我们的服务器接受所有流量访问 IMAP 服务(默认端口 143),可使用以下命令:

sudo ufw allow 143

允许所有流量访问 IMAPS

要使我们的服务器接受所有流量访问 IMAP 服务(默认端口 993),可使用以下命令:

sudo ufw allow 993

允许所有流量访问 POP3

要使我们的服务器接受所有流量访问 POP3 服务(默认端口 110),可使用以下命令:

sudo ufw allow 110

允许所有流量访问 POP3S

要使我们的服务器接受所有流量访问 POP3S 服务(默认端口 995),可使用以下命令:

sudo ufw allow 995

总结

本教程涵盖 UFW 防火墙配置的大多数常用命令,大家可以放在收藏夹,以便以后可以找到。UFW 规则非常灵活,可以随意混合规则,欢迎关注我们的后续文章。之后会有更详尽的 UFW 晋级教程。

扩展阅读:Docker系列教程

相关文章

友情链接更新日志© 2020, 卡拉搜索, Built with ❤️ in San Francisco + Beijing

京ICP备15049164号-3