本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Lightsail 中使用防火墙控制实例流量
Amazon Lightsail 控制台中的防火墙充当虚拟防火墙,用来控制允许通过其公有 IP 地址连接到实例的流量。您在 Lightsail 中创建的每个实例都具有两个防火墙;一个防火墙用于 IPv4 地址,另一个用于 IPv6 地址。每个防火墙均包含一组规则来过滤进入实例的流量。两个防火墙相互独立;您必须分别为 IPv4 和 IPv6 配置防火墙规则。可以通过添加和删除允许或限制流量的规则,来随时编辑实例的防火墙。
Lightsail 防火墙
每个 Lightsail 实例都具有两个防火墙;一个防火墙用于 IPv4 地址,另一个用于 IPv6 地址。流入和流出 Lightsail 实例的所有 Internet 流量都将通过其防火墙。实例的防火墙控制允许流入实例的 Internet 流量。但是,防火墙不控制流出实例的流量,而是允许所有出站流量。可以通过添加和删除允许或限制传入流量的规则,来随时编辑实例的防火墙。请注意,两个防火墙相互独立;您必须分别为 IPv4 和 IPv6 配置防火墙规则。
防火墙规则始终是允许型的;您无法创建拒绝访问的规则。可以向实例的防火墙添加规则以允许流量到达实例。向实例的防火墙添加规则时,您可以指定要使用的协议、要开放的端口以及允许连接到实例的 IPv4 和 IPv6 地址,如以下示例中所示(针对 IPv4)。您还可以指定应用层协议类型,这是一种预设,根据您计划在自己实例上使用的服务来为你指定协议和端口范围。
重要
防火墙规则仅影响通过实例的公有 IP 地址传入的流量。其不会影响通过实例的私有 IP 地址传入的流量,私有 IP 地址可能来自您账户中位于同一AWS 区域 的 Lightsail 资源,或者来自同一 AWS 区域 中某个对等虚拟私有云(VPC)中的资源。
本指南接下来的几个部分将说明防火墙规则及其可配置的参数。
创建防火墙规则
您可以创建防火墙规则,以使客户端能够与您的实例或其上运行的应用程序建立连接。例如,要允许所有 Web 浏览器都能连接到实例上的 WordPress 应用程序,您可以配置一条允许从任何 IP 地址通过端口 80 启用传输控制协议(TCP)的防火墙规则。如果实例的防火墙上已配置此规则,您可以将其删除以阻止 Web 浏览器连接到实例上的 WordPress 应用程序。
重要
您可以使用 Lightsail 控制台一次最多添加 30 个源 IP 地址。要一次添加最多 60 个 IP 地址,请使用 Lightsail API、AWS Command Line Interface(AWS CLI)或 AWS SDK。将单独为 IPv4 规则和 IPv6 规则实施此配额。例如,防火墙可以有 60 个 IPv4 流量入站规则和 60 个 IPv6 流量入站规则。建议您将单个 IP 地址整合到 CIDR 范围内。有关更多信息,请参阅本指南的指定源 IP 地址部分。
您还可以允许 SSH 客户端连接到实例并在服务器上执行管理任务,方法是配置一个防火墙规则,该规则仅从需要建立连接的计算机的 IP 地址,通过端口 22 上启用 TCP。在这一使用情形中,您应该不希望任意 IP 地址都与您的实例建立 SSH 连接;因为这可能会给实例带来安全风险。
注意
此部分中描述的防火墙规则示例可能默认存在于您实例的防火墙中。有关更多信息,请参阅本指南后面的默认防火墙规则。
如果特定端口有多条规则,我们会使用最宽松的规则。例如,如果添加一个允许从 IP 地址 192.0.2.1 访问 TCP 端口 22 (SSH) 的规则。然后,添加另一个允许每个人访问 TCP 端口 22 的规则。结果就是每个人都能访问 TCP 端口 22。
指定协议
协议是用来在两台计算机之间传输数据的格式。Lightsail 允许您在防火墙规则中指定以下协议:
-
传输控制协议(TCP)主要用于建立和维持客户端与实例上运行的应用程序之间的连接,直到数据交换完成。它是一种广泛使用的协议,您可能经常在防火墙规则中指定该协议。TCP 可保证不会丢失任何已传输的数据,并且已发送的数据都将发送给预期的接收者。它最适用于需要高可靠性且传输时间相对不太重要的网络应用程序,例如 Web浏览、金融交易和文本消息传递。这些使用情形中,如果部分数据丢失,将造成重大价值损失。
-
用户数据报协议 (UDP) 主要用于在客户端和实例上运行的应用程序之间建立低延迟的容损连接。它最适用于所感知的延迟至关重要的网络应用程序,例如游戏、语音和视频通信。这些使用情形可承受某种程度的数据丢失,而不会对所感知的质量产生负面影响。
-
Internet 控制消息协议(ICMP)主要用于诊断网络通信问题,例如,确定数据是否及时到达预期目的地。它最适用于 Ping 实用程序,可以使用该实用程序来测试本地计算机和实例之间的连接速度。它会报告数据到达实例并返回到本地计算机所花费的时间。
注意
当您使用 Lightsail 控制台将 ICMP 规则添加到实例的 IPv6 防火墙时,该规则将自动配置为使用 ICMPv6。有关更多信息,请参阅 Wikipedia 上的 IPv6 的 Internet 控制消息协议
。 -
所有用于允许所有协议流量流入实例。当不确定要指定哪个协议时,请指定此协议。这包括所有 Internet 协议;而不仅仅是上面指定的协议。有关更多信息,请参阅互联网编号分配机构网站上的协议编号
。
指定端口
与计算机上的物理端口(允许计算机与键盘和鼠标等外围设备进行通信)类似,网络端口将充当实例的 Internet 通信终端节点。当计算机寻求与您的实例连接时,它会公开一个端口来建立通信。
可在防火墙规则中指定的端口范围是 0 到 65535。在创建防火墙规则以允许客户端与实例建立连接时,可以指定将使用的协议(本指南前面已介绍)以及可用于建立连接的端口号。还可以指定允许使用协议和端口建立连接的 IP 地址;本指南的下一部分将介绍这一点。
以下是一些常用端口以及使用它们的服务:
-
通过文件传输协议 (FTP) 进行的数据传输操作使用端口 20。
-
FTP 命令控制使用端口 21。
-
Secure Shell(SSH)使用端口 22。
-
Telnet 远程登录服务,以及未加密的文本消息使用端口 23。
-
简单邮件传输协议 (SMTP) 电子邮件路由使用端口 25。
重要
要在实例上启用 SMTP,您还必须为实例配置反向 DNS。否则,您的电子邮件可能会受到 TCP 端口 25 的限制。有关更多信息,请参阅为您的 Amazon Lightsail 实例上的电子邮件服务器配置反向 DNS。
-
域名系统 (DNS) 服务使用端口 53。
-
Web 浏览器用来连接到网站的超文本传输协议 (HTTP) 使用端口 80。
-
电子邮件客户端用来从服务器中检索电子邮件的邮局协议 (POP3) 使用端口 110。
-
网络新闻传输协议 (NNTP) 使用端口 119。
-
网络时间协议 (NTP) 使用端口 123。
-
用于管理数字邮件的 Internet 消息访问协议 (IMAP) 使用端口 143。
-
简单网络管理协议 (SNMP) 使用端口 161。
-
Web 浏览器用来建立与网站的加密连接的 HTTP Secure (HTTPS) 或 HTTP over TLS/SSL 使用端口 443。
有关更多信息,请参阅互联网编号分配机构网站上的服务名称和传输协议端口号注册表
指定应用层协议类型
可以在创建防火墙规则时指定应用层协议类型,它是一种预设,用于根据要在实例上启用的服务为您指定规则的协议和端口范围。这样一来,您便无需搜索要用于像 SSH、RDP、HTTP 这样的服务以及其他服务的通用协议和端口。您只需选择这些应用层协议类型即可为您指定协议和端口。如果您想指定自己的协议和端口,则可以选择自定义规则应用层协议类型,这样您便能控制这些参数。
注意
您只能使用 Lightsail 控制台指定应用层协议类型。无法使用 Lightsail API、AWS Command Line Interface (AWS CLI) 或开发工具包指定应用层协议类型。
以下应用层协议类型在 Lightsail 控制台中可用:
-
自定义 - 选择此选项可指定您自己的协议和端口。
-
所有协议 - 选择此选项可指定所有协议,并指定您自己的端口。
-
所有 TCP - 选择此选项可使用 TCP 协议,但不指定要开放哪个端口。这将在所有端口 (0-65535) 上启用 TCP。
-
所有 UDP - 选择此选项可使用 UDP 协议,但您不指定要开放哪个端口。这将在所有端口 (0-65535) 上启用 UDP。
-
所有 ICMP - 选择此选项可指定所有 ICMP 类型和代码。
-
自定义 ICMP - 选择此选项可使用 ICMP 协议并定义 ICMP 类型和代码。有关 ICMP 类型和代码的更多信息,请参阅 Wikipedia 上的控制消息
。 -
DNS - 如果要在实例上启用 DNS,请选择此选项。这将在端口 53 上启用 TCP 和 UDP。
-
HTTP - 如果要使 Web 浏览器能够连接到实例上托管的网站,请选择此选项。这将在端口 80 上启用 TCP。
-
HTTPS - 如果您要使 Web 浏览器能够与实例上托管的网站建立加密连接,请选择此选项。这将在端口 443 上启用 TCP。
-
MySQL/aurora - 选择此选项可使客户端连接到实例上托管的 MySQL 或 Aurora 数据库。这将在端口 3306 上启用 TCP。
-
Oracle-RDS - 选择此选项可使客户端连接到实例上托管的 Oracle 或 RDS 数据库。这将在端口 1521 上启用 TCP。
-
Ping (ICMP) - 选择此选项可使您的实例响应使用 Ping 实用程序发出的请求。在 IPv4 防火墙上,这将启用 ICMP 类型 8(回显)和代码 -1(所有代码)。在 IPv6 防火墙上,这将启用 ICMP 类型 129(回显回复)和代码 0。
-
RDP - 选择此选项可使 RDP 客户端连接到您的实例。这将在端口 3389 上启用 TCP。
-
SSH - 选择此选项可使 SSH 客户端连接到您的实例。这将在端口 22 上启用 TCP。
指定源 IP 地址
默认情况下,防火墙规则允许所有 IP 地址通过指定的协议和端口连接到实例。这最适用于像通过 HTTP 和 HTTPS 传输的 Web 浏览器流量等情形。但是,这会给 SSH 和 RDP 等流量带来安全风险,因为您不希望允许所有 IP 地址使用这些应用程序连接到您的实例。因此,您可以选择将防火墙规则限制为一个 IPv4 或 IPv6 地址或 IP 地址范围。
-
针对 IPv4 防火墙 - 可以指定单个 IPv4 地址(例如 203.0.113.1)或 IPv4 地址范围。在 Lightsail 控制台中,可以使用短划线(例如 192.0.2.0-192.0.2.255)或 CIDR 块表示法(例如 192.0.2.0/24)来指定范围。有关 CIDR 块表示法的更多信息,请参阅 Wikipedia 上的无类域间路由
。 -
针对 IPv6 防火墙 - 您可以指定单个 IPv6 地址(例如,2001:0db8:85a3:0000:0000:8a2e:0370:7334)或 IPv6 地址范围。在 Lightsail 控制台中,只能使用 CIDR 块表示法(例如,2001:db8::/32)指定 IPv6 范围。有关 IPv6 CIDR 块表示法的更多信息,请参阅 Wikipedia 上的 IPv6 CIDR 块
。
默认 Lightsail 防火墙规则
在创建新实例时,将为其 IPv4 和 IPv6 防火墙预配置下面的一组默认规则来允许对您的实例进行基本访问。默认规则因您创建的实例的类型而异。这些规则将以应用程序、协议、端口和源 IP 地址的方式列出(例如,应用程序 - 协议 - 端口 - 源 IP 地址)。
- AlmaLinux、Amazon Linux 2、Amazon Linux 2023、CentOS、Debian、FreeBSD、openSUSE 和 Ubuntu(基础操作系统)
-
SSH - TCP - 22 - 所有 IP 地址
HTTP - TCP - 80 - 所有 IP 地址
- WordPress、Ghost、Joomla!、PrestaShop 和 Drupal(CMS 应用程序)
-
SSH - TCP - 22 - 所有 IP 地址
HTTP - TCP - 80 - 所有 IP 地址
HTTPS - TCP - 443 - 所有 IP 地址
- cPanel 和 WHM(CMS 应用程序)
-
SSH - TCP - 22 - 所有 IP 地址
DNS (UDP) - UDP - 53 - 所有 IP 地址
DNS (TCP) - TCP - 53 - 所有 IP 地址
HTTP - TCP - 80 - 所有 IP 地址
HTTPS - TCP - 443 - 所有 IP 地址
自定义 - TCP - 2078 - 所有 IP 地址
自定义 - TCP - 2083 - 所有 IP 地址
自定义 - TCP - 2087 - 所有 IP 地址
自定义 - TCP - 2089 - 所有 IP 地址
- LAMP、Django、Node.js、MEAN、GitLab 和 Nginx(开发堆栈)
-
SSH - TCP - 22 - 所有 IP 地址
HTTP - TCP - 80 - 所有 IP 地址
HTTPS - TCP - 443 - 所有 IP 地址
- Magento(电子商务应用程序)
-
SSH - TCP - 22 - 所有 IP 地址
HTTP - TCP - 80 - 所有 IP 地址
HTTPS - TCP - 443 - 所有 IP 地址
- Redmine(项目管理应用程序)
-
SSH - TCP - 22 - 所有 IP 地址
HTTP - TCP - 80 - 所有 IP 地址
HTTPS - TCP - 443 - 所有 IP 地址
- Plesk(托管堆栈)
-
SSH - TCP - 22 - 所有 IP 地址
HTTP - TCP - 80 - 所有 IP 地址
HTTPS - TCP - 443 - 所有 IP 地址
自定义 - TCP - 53 - 所有 IP 地址
自定义 - UDP - 53 - 所有 IP 地址
自定义 - TCP - 8443 - 所有 IP 地址
自定义 - TCP - 8447 - 所有 IP 地址
- Windows Server 2022、Windows Server 2019 和 Windows Server 2016
-
SSH - TCP - 22 - 所有 IP 地址
HTTP - TCP - 80 - 所有 IP 地址
RDP - TCP - 3389 - 所有 IP 地址
- SQL Server Express 2022、SQL Server Express 2019 和 SQL Server Express 2016
-
SSH - TCP - 22 - 所有 IP 地址
HTTP - TCP - 80 - 所有 IP 地址
RDP - TCP - 3389 - 所有 IP 地址