你可能永远没有机会设置自己的DNS服务器,但是拥有自己的DNS服务器可以减少管理开销并提高DNS查询的速度,尤其是随着网络的增长。
pfSense有两个单独的DNS服务。在2.2版之前,DNS服务可通过DNS转发器来配置,它调用dnsmasq程序。对于2.2及更高版本,“ Unbound”是默认的DNS解析器,可以导航到系统服务>DNS解析器来进行配置。
一般情况下,新安装的pfSesne2.2或更高版本的DNS解析器已默认为启用状态,而从较早版本进行升级将默认启用DNS转发器 。虽然可以在较新的版本上使用DNS转发器 ,但如果这样做,则必须禁用 DNS解析器或更改其端口设置。因为在默认情况下,DNS转发器和DNS解析器都绑定到端口53,但是两个服务不能都绑定到同一端口。
一、DNS解析器配置
常规设置的第一个选项是选择是否启用,如果启用,它将启用unbound,在默认情况下,这一般为选中状态。
监听端口,它允许你设置用于响应DNS查询的端口。默认为端口53。DNS通常使用端口53和UDP,尽管DNS还将TCP用于大于数据报的响应,包括DNSSEC和某些IPv6查找。因此,在为DNS创建防火墙规则时要考虑到这一点。
SSL / TL服务,如果启用,它将允许DNS解析器通过TLS查询来响应DNS,从而使客户端更不容易受到DNS欺骗的攻击。在 SSL / TLS证书下拉框,你可以选择查询中使用的证书。基于TLS的DNS的默认端口是853,但是你可以通过在“ SSL / TLS侦听端口”栏中输入其他端口号来更改此端口 。
网络接口,允许你选择unbound使用哪些接口来响应来自客户端的查询。未选中的接口查询将被丢弃。但是,如果启用了unbound,则必须为此选项选择All或 localhost。
出站网络接口,允许你选择DNS解析器可用于将查询发送到权威服务器并接收其答复的网络接口。
如果本地数据中没有域匹配项,则“系统域本地区域类型”将确定DNS解析器如何处理查询。此下拉框中有几个可用选项:
- Deny:如果本地数据中存在匹配项,则DNS解析器将仅回答查询。如果没有匹配项,查询将被静默删除。
- Refuse:此选项与“Deny”类似,不同之处在于,当本地数据不匹配时,将返回rcode REFUSED,因此客户端知道查询被拒绝。
- Static:DNS解析器在本地数据中查找匹配项。如果没有匹配项,则不返回任何数据或nxdomain,但如果本地数据中存在此类信息,它将返回根域的授权开始(SOA)。
- Transparent: 如果存在匹配项,则DNS解析器将从本地数据中回答查询。如果本地数据不匹配,则查询将传递到上游DNS服务器。如果本地数据中存在匹配项,但是本地数据中不存在要查询的数据类型,则DNS解析器将返回没有错误/没有数据消息。
- Type transparent:此选项类似于Transparent,但是在本地数据匹配但不存在要查询的数据类型的情况下,DNS解析器会将查询传递给上游DNS服务器。
- Redirect: DNS解析器将尝试从本地数据回答查询。如果除区域名称外没有其他本地数据,则将重定向查询。
- Inform:与Transparent相同,不同之处在于,还将记录客户端IP地址和端口号。
- Inform / Deny:与Deny相同,除了查询将被记录。
- No default:查询不会返回AS112区域的默认内容。
启用DNSSEC支持,默认为启用。DNSSEC是一种保护DNS数据免受使用伪造或操纵的DNS数据的攻击(例如DNS缓存中毒)的手段。在启用状态下,如果DNS请求转发到的上游DNS服务器不支持DNSSEC,则DNS解析可能不起作用。
启用转发模式,可以控制unbound是否直接查询根服务器(如果未选中此选项)或是否将查询转发到上游DNS服务器。仅当上游DNS服务器受信任时,才启用此选项。如果启用了DNSSEC支持,并且认为这很重要,则还应确保上游DNS服务器提供DNSSEC支持。
如果您使用的是没有默认网关切换的多WAN配置,则必须使用转发模式。
在DNS解析器中注册DHCP租约, 可让你注册DHCP静态映射。反过来,这可以解析由DHCP服务器分配的IP地址的主机名。
在DNS解析器中注册DHCP静态映射,类似于“注册DHCP租约” 的DNS解析器,除了前者允许你注册DHCP静态映射,而不是DHCP租约。
单击“ 自定义选项”按钮将显示一个文本框,你可以在此处输入任何其他参数。
主机覆盖, 允许你配置特定的主机名,以解决与DNS转发器使用的DNS服务器不同的问题。
这可用于拆分DNS配置。它还提供了一种阻止访问某些站点的可能方法(尽管用户总是可以通过简单地输入目标域的正确IP地址来击败此措施)。
域覆盖,如果要在解析某些域时指定其他DNS服务器,则可以使用“ 域覆盖”,这将允许你指定其他DNS服务器的IP地址。这在许多情况下很有用:例如,在Windows Active Directory设置中指定Active Directory DNS服务器。
也可以使用它来阻止对某些站点的访问,尽管最终用户可以通过输入站点的IP地址来规避这一点。也可以以任意方式使用它,例如,将必应搜索引擎https://www.bing.com/重定向到https://www.baidu.com/。
单击添加按钮将弹出一个页面,输入主机、域、IP地址和简要说明。
二、高级设置
第二个选项卡是“高级设置”。以下是一些主要设置内容:
- 预取DNS密钥支持:启用此选项可使DNSKEY在验证过程中更早获取,从而减少了请求的延迟(但增加了CPU使用率)。
- 消息高速缓存大小:控制消息高速缓存的大小,消息高速缓存存储DNS响应代码和验证状态。默认大小为4 MB。
- 实验性0x20位支持:DNS事务ID的较小位长(16位)使其经常成为伪造的目标,这会带来安全风险。改善DNS交易安全性的方法之一是将问题名称的ASCII字母中的0x20位随机化。例如,请求者将www.mydomain.com和WWW.MYDOMAIN.COM的名称视为相同,但响应者会将其视为不相等。因此,它可以充当一种秘密加密通道,并使DNS交易更加安全。
三、访问列表
最后一个选项卡为”访问列表”。该选项卡使你能够允许或拒绝(并且拒绝可以是通用的,也可以仅针对非本地数据)访问指定子网(netblock)的DNS服务器。
如果你需要对不同的网络使用不同的策略,或者需要将DNS服务器的访问权限授予某些用户(例如通过VPN连接的远程用户),这个功能 将十分有用。单击 “添加”按钮来添加访问列表条目。
在此处,你可以指定(解析的)列表名称。选择设定的“动作”,这是一个下拉框。在这里,你可以指定源自指定网络范围的DNS查询接下来干什么。它包括以下选项:
- Deny:停止来自已定义网络范围的查询。查询被静默丢弃。
- Refuse:停止来自已定义网络范围的查询。而不是静默地删除查询,它发送回REFUSED DNS rcode。
- Allow:允许从定义的网络范围内的主机进行查询。
- Allow Snoop:类似于Allow,但是允许从定义的网络范围内的主机进行递归和非递归访问。仅仅为管理员配置此功能,以便进行故障排除。
- Deny Nonlocal:仅允许从定义的网络范围内的主机进行权威的本地数据查询;其他查询将被静默删除。
- Refuse Nonlocal:仅允许从定义的网络范围内的主机进行权威的本地数据查询;其他查询将发回REFUSED DNS rcode。
在“描述” 字段输入该条目的说明内容(不解析的),在“ 网络”字段中输入访问列表生效的网络范围(子网)、子网CIDR、描述。输入完成后,单击底部“添加网络”按钮来添加新定义的访问列表 。
四、DNS防火墙规则
在配置pfSense来充当DNS服务器之后,如果网络上的最终用户可以绕过pfSense并指定所需的任何DNS服务器,那将不是我们所期望看到的。但是,在我们的客户端操作系统,大多是可以自定义DNS服务器,如下图所示:
用户禁用自动获取DNS,自己手动指定公共DNS服务器。即使我们已经将pfSense设置为本地网络的DNS服务器,用户的计算机也可以绕过pfSense并直接转到自定义的DNS服务器。这种行为除了破坏我们试图执行的策略外,还有其他一些不利因素:
- 每次用户访问进行新的DNS查询时,只会将查询结果缓存在其自己的计算机上。如果用户使用pfSense作为其DNS服务器,则查找结果将缓存在pfSense系统上,因此对本地网络上的其他所有人都可使用,这将大大加快查询的速度。
- 用户如果指定了安全性受到威胁的DNS服务器,这将使他们的计算机容易受到DNS缓存中毒和其他攻击威胁。
解决办法:DNS使用端口53进行通信,因此我们可以在防火墙上建立阻止或允许端口53流量的规则,具体来说,需要添加两条如下规则:
- 在LAN网络上添加一条允许端口53到LAN地址的规则。
- 在LAN网络上添加一条禁止端口53通行的规则。
由于防火墙规则是从上到下应用的,遇到的第一个规则适用于要应用的流量,因此我们必须在这些规则之上创建一个规则,如下图所示(因为我的示例网络是多LAN和WAN,所以跟你的可能有所不同):
检查规则是否有效,可以使用nslookup尝试使用其他服务器来查找域名。例如:
nslookup baidu.com 114.114.114.114
该命令将使用其中一台公共DNS服务器对百度进行DNS查询。如果我们创建的规则有效,则此操作将失败。
nslookup baidu.com
而在省略第二个参数后,执行相同的命令(因nslookup将使用默认的DNS服务器)应该有效。
这些规则在阻止最终用户绕过pfSense DNS服务器方面可能非常有效,但也存在两个缺陷:
- 该规则仅适用于LAN网络。在较大的网络上,如果存在几个网段。我们需要在多个网络上添加规则。
- 如果建立了VPN,则可以绕过防火墙创建的规则。
原文地址。