在我们编写防火墙规则时,可能只是简单地使用了网络接口/端口和 IP 地址的预定义别名,例如“LAN net”、“LAN interface”、“HTTP”、“HTTPS”、等等,使用预定义的别名不仅方便,而且有助于理解规则。
当我们开始扩展或隔离我们的网络时,可能会发现维护规则变得有点困难,特别是如果在规则中为所有具有静态地址的设备使用 IP 地址,如果没有为规则输入准确的描述,我们可能会忘记一些规则的目的。
这个时候,我们就可以使用防火墙规则的别名,别名允许将一个或多个 IP 地址、网络地址、端口和主机名分组并在规则中引用。别名可以帮我们减少编写的规则数量。
当我们使用了别名时,在查看每个接口的防火墙规则时,将鼠标悬停在别名上时,就会看到一个工具提示。工具提示将显示别名的内容以及输入的描述,非常方便。
创建别名
下面以创建主机别名作为示例。转至“防火墙 > 别名”页面。默认情况下列表中有 4 个预定义的别名。单击“+”按钮添加别名。
输入别名的“名称”。从下拉列表中选择“类型”。有多种别名可供选择。“内容”取决于选择的别名类型。在本示例中,对于“Host(s)”别名,可以输入 IP 地址或主机名。也可以包含另一个别名。输入“描述”内容,帮助了解别名的用途或详细信息。
单击“保存”后,在列表中就可以看到新别名。这时还会出现一个通知,指出需要应用更改才能在防火墙规则中使用别名。完成后单击“应用”按钮。
别名类型
别名类型有很多种,下面将详细介绍每一种类型。
主机
“主机”别名类型允许输入 IP 地址、本地主机名或完全限定域名 (FQDN)。如果需要经常在规则中引用 IP 地址,则可以将其设为主机别名并在规则中使用该别名。由于防火墙规则仅允许 IP 或网络地址,因此必须使用别名才能在规则中使用主机名或 FQDN。
主机别名还允许使用“!”排除对象。例如,如果输入『!192.168.1.10』,则表示排除192.168.1.10。排除选项只对 IP 地址有效。
主机别名示例:
- IP 地址: 192.168.1.10 或 !192.168.1.10(也允许 IPv6 地址)
- 本地主机名(不带域名): myserver 或 !myserver
- FQDN: pfchina.org或 !pfchina.org
可以在别名中输入以逗号分隔的 IP 地址、主机名和 FQDN 的任意组合的多个值,例如:
- 192.168.1.10, 192.168.1.11, myserver1, pfchina.org
网络
“网络”别名允许以 CIDR 格式输入网络的 IP 地址范围。CIDR 表示法是通过使用设置为1 的位数来定义子网掩码的方法。其余设置为 0。在 192.168.1.0/24 的示例中,“/24”是 CIDR 表示法网络地址的一部分,相当于子网掩码 255.255.255.0。允许排除网络别名,如主机别名。
网络别名示例:
- 192.168.1.0/24 或 !192.168.1.0/24(也允许 IPv6 地址)
可以输入多个网络:
- 192.168.1.0/24, 192.168.2.0/24
端口
“端口)”别名允许指定端口号。可以输入 0 到 65,535 之间的数字。要指定一系列连续端口,请在端口号之间使用冒号。
端口别名示例:
- 端口: 8080
- 端口范围: 8000:8080
可以输入多个端口,包括端口范围:
- 22, 8000:8080
URL (IPs)
“网址(IPs)”别名用于托管在网站上的 IP 地址列表。在OPNsense文档中没有提及“URL (IPs)”的别名类型。将“URL (IPs)”与“URL Table (IPs)”进行比较时,主要区别在于“刷新频率”,URL (IPs)”用于 IP 地址的静态列表。
URL (IPs)别名示例:
- https://domainname.com/ip-list.txt
可以输入多个 URL:
- https://domainname.com/ip-list.txt, https://domainname2.com/ip-list2.txt
URL Table (IPs)
“URL Table (IPs)”别名用于 IP 地址列表,如“URL (IPs)”别名。大多数用户最喜欢使用这个 URL 别名类型,它可以定期刷新,对于阻止列表很有用。URL Table (IPs)别名可以指定更新间隔。
URL Table (IPs)别名示例:
- https://domainname.com/ip-list.txt
可以输入多个 URL:
- https://domainname.com/ip-list.txt, https://domainname2.com/ip-list2.txt
GeoIP
当需要阻止来自其他国家/地区的 IP/网络地址时,可以使用“GeoIP”别名。托管在云上的服务和通过 VPN、Tor 或 SSH 建立隧道网络连接,很容易绕过GeoIP阻止。但是它仍然很有用,它可以阻止来自不熟练的攻击者或来自其他国家的受感染机器的随机攻击。
要设置“GeoIP”别名,必须注册MaxMind的 GeoIP 服务以获取完全配置 GeoIP 别名所需的 GeoIP 地址范围。
网络组
“网络组”别名可用于对除“端口”和“外部(高级)”别名类型之外的其他别名类型进行分组。该别名类型仅允许对兼容的别名进行分组。使用“网络组”别名的主要好处是它可以防止对不兼容的别名进行分组。
网络组别名示例:
- hostalias1, hostalias2, urlalias(从下拉列表中选择)
MAC地址
“MAC 地址”别名允许在别名中使用 MAC 地址。“MAC 地址”别名无法杜绝恶意用户使用欺骗MAC地址,这是该别名使用存在的缺陷。
MAC 地址别名示例:
- 3f:cf:3f:1f:7f:bf
也可以输入多个 MAC 地址:
- 3f:cf:3f:1f:7f:bf, 3e:ce:3e:1e:7e:be
外部(高级)
当希望外部进程管理防火墙中别名的值时,可以使用“外部(高级)”别名类型。如果需要动态更改别名的值,这会非常方便。由于 OPNsense 具有防火墙 API,可以更好的从外部进程更新/管理防火墙规则。
别名嵌套
对于所有别名类型,可以在别名中嵌套别名。如果希望将多个别名组合在一起,这会很有用。例如,如果有“server1”和“server2”的别名,可以创建一个名为“myservers”的第三个别名,其中包含“server1”和“server2”。这样做,可以在它们自己的特定防火墙规则中使用“server1”和“server2”别名,但随后有适用于两个服务器的更广泛的防火墙规则。
删除别名
要删除嵌套在另一个别名中和/或防火墙规则当前正在使用的别名,将收到错误消息。这样的设置可以防止违反任何防火墙规则。
规则示例
下面的示例将“MyServer”主机别名用作目标,假设服务器存在于另一个DMZ网络中。该示例显示了创建 LAN 规则以允许从 LAN 网络中的设备访问 DMZ 网络中的服务器。
减少规则数量
在使用别名之前,有2个规则允许 HTTPS 访问 DMZ 网络中的 2 个服务器。由于一次只能在没有别名的规则中输入一个 IP 地址,因此每个服务器都需要一个规则:
例如,如果使用别名调用“MyServers”,它包含两个有IP地址的服务器,则只需创建一个将“MyServers”别名作为“目标”的规则,以允许对 DMZ 中的两个服务器进行 HTTPS 访问:
由此可见,别名减少了需要创建的规则数量,同时使规则更易于理解。
结论
防火墙别名是一个简单但非常强大的功能,如果希望掌握编写防火墙规则,并使规则易于理解和使用,则应重视别名的使用。