• 在Debian/Ubuntu上的绑定解析程序中设置响应策略区域(RPZ)

    本教程将向您展示如何使用Debian/Ubuntu上的响应策略区域(RPZ)覆盖绑定DNS解析程序中的公共DNS记录。 什么是响应策略区? 响应策略区域(RPZ)允许DNS解析程序修改DNS记录。它最初是为了阻止访问危险网站而开发的。例如,如果计算机查询传播恶意软件的已知危险站点的IP地址,DNS解析程序可以返回127.0.0.1作为DNS响应,因此计算机无法连接到危险站点。这是最初的用例。因此,响应策略区域也称为DNS防火墙。 你可以用其他方式使用RPZ。例如 如果您在本地网络中拥有像Nextcloud这样的自托管服务,您可以使用RPZ将您的Nextcloud域(Nextcloud.your domain.com)指向本地IP地址,这样您就不必访问Internet,然后返回本地网络访问Nextcloud服务器。 家长可以使用RPZ阻止孩子访问色情网站。 你可以屏蔽不需要的广告。 我在VPS上安装了许多web应用程序。当该web应用程序不用于公共访问时,我只在BIND RPZ中添加DNS记录,不在我的域注册器中发布DNS记录以防止黑客攻击。 是的,您可以在本地计算机上的/etc/hosts文件中创建一个DNS条目来覆盖公共DNS记录,但它不能很好地扩展。此外,iOS和Android不允许您创建本地DNS条目。如果绑定DNS解析程序覆盖公共DNS记录,那么网络中使用绑定解析程序的所有设备都可以使用自定义DNS记录,这不是很好吗? 先决条件 为了学习本教程,假设您在Debian/Ubuntu服务器上运行了一个绑定DNS解析器。如果没有,请阅读以下教程之一来设置绑定解析器。 在Debian 10 Buster上设置自己的BIND9 DNS解析器 在Ubuntu 16.04/18.04上设置自己的BIND9 DNS解析器 在Ubuntu 20.04上设置自己的BIND9 DNS解析器 一旦绑定解析程序启动并运行,请按照以下说明操作。 如何在Debian/Ubuntu服务器上设置绑定响应策略区域 首先,编辑命名文件。conf.options文件。 sudo nano/etc/bind/named。形态选项 在选项{…}中添加以下行子句来启用响应策略区域。(第一行是评论。) //启用响应策略区域。响应策略{zone“rpz.local”;}; 保存并关闭文件。然后打开命名的。conf.local文件。 sudo nano/etc/bind/named。conf.local 在此文件中添加RPZ区域。 区域“rpz.local”{type master;file”/etc/bind/db.rpz.local”;允许查询{localhost;};允许转移{12.34.56.78;};}; 笔记: 在file指令中使用绝对路径而不是简单的文件名很重要,否则BIND会假定文件位于/var/cache/BIND/中。 RPZ区域应仅允许来自localhost的查询。您不需要添加本地网络客户端。 将12.34.56.78替换为从属绑定DNS解析程序的IP地址,该解析程序允许进行区域传输。如果只有一个DNS解析程序,可以像这样使用localhost:allow transfer{localhost;}; 保存并关闭文件。然后我们需要创建区域文件。我们可以使用区域模板文件,而不是从头创建区域文件。复制数据库的内容。空到一个新文件。 sudo cp/etc/bind/db。空/etc/bind/db。rpz。地方的 然后编辑数据库。rpz文件。 sudo nano/etc/bind/db。rpz。地方的 无需更改现有内容。我们只需添加自定义DNS记录。例如,如果您在本地网络上有一台IP地址为192.168.0.103的Nextcloud服务器,那么您可以添加以下DNS记录,这样Nextcloud客户端就不必为了连接到Nextcloud服务器而去互联网。 下个星期。你的领域。com A 192.168.0.103 如果你不想让你的孩子访问像pornhub这样的色情网站。com,在此文件中添加以下行以阻止整个pornhub。com域。 *.色情中心。com CNAME。 如果你不喜欢在网页上看到谷歌Adsense广告,你可以添加以下行来阻止双击。net域,用于发送Adsense广告。 *.双击。net CNAME。 下面是一些可以阻止的更多广告服务器域。 *.公共的。com CNAME.*。莫布。com CNAME.*。爱斯基米人。com CNAME.*。adcolony。xyz CNAME.*。adsrvr。org CNAME.*。无症状的。com CNAME.*。由buysellads提供服务。com CNAME。srv。buysellads。com CNAME.*。powerinboxedge。com CNAME.*。迪福。com CNAME.*。利卡斯德。com CNAME.*。利亚姆。com CNAME。 要覆盖域名的MX记录,请添加一行,如下所示。 实例com MX 0邮件。实例通用域名格式。 请注意,所有左手名不得以点结尾,所有右手名必须以点结尾。 如果需要主机名的负载平衡,那么可以创建一个包含多个值的记录,如下所示。DNS客户端将随机使用这两个IP地址,流量将分布在它们之间。 主办实例com A 12.34.56.78 A 12.34.56.79 保存并关闭文件。建议RPZ使用单独的日志文件,以便更好地分析日志。要进行配置,请编辑绑定主配置文件。 sudo nano/etc/bind/named。形态 将以下行添加到文件中。 记录{channel rpzlog{file”/var/log/named/rpz.log“版本大小不限100m;打印时间是;打印类别是;打印严重性是;严重性信息;};范畴rpz{rpzlog;};}; 保存并关闭文件。然后创建/var/log/named/目录,并将bind作为所有者。 sudo mkdir/var/log/named/sudo chown bind:bind/var/log/named/-R 接下来,运行以下命令检查主配置文件中是否存在语法错误。无声输出表示未发现错误。 sudo命名为checkconf 然后检查RPZ区域文件的语法。 sudo命名为checkzone rpz/etc/bind/db。rpz。地方的 如果没有发现错误,则重新启动BIND9。 sudo systemctl重启bind9 现在可以在绑定服务器上运行dig命令,查看RPZ是否正常工作。例如,查询响应策略区域中包含的域名的DNS记录。 再挖一块。你的领域。com@127.0.0.1 您应该在命令输出中看到如下内容,这表明DNS响应来自本地RPZ。 ;; 授权部门:rpz。NS localhost中的本地86400。 您还可以查看BIND9查询日志。 sudo tail/var/log/named/rpz。日志 您会看到下面这样的内容,这意味着响应来自本地RPZ。 (example.com):rpz QNAME本地数据重写示例。com的例子。通用域名格式。rpz。地方的 Fedora客户端不使用RPZ? 默认情况下,Fedora不使用RPZ。您可以使用dig命令行实用程序在RPZ区域中查找主机名的IP地址,但如果ping主机名,它将找不到IP地址。 要解决这个问题,需要更改/etc/nsswitch中的hosts参数。Fedora客户端上的conf文件。 sudo nano/etc/nswitch。形态 默认情况下,hosts参数定义为: 主机:文件myhostname mdns4_minimal[NOTFOUND=return]解析[!unail=return]dns 将其更改为: 主机:文件mdns4_minimal[NOTFOUND=return]dns myhostname mymachines 保存并关闭文件。RPZ现在应该可以工作了。 与转发器一起使用RPZ 如果在/etc/bind/named中的options子句中添加如下fowarders指令。conf.options文件,则绑定解析程序成为转发器,它将DNS请求转发到上游DNS解析程序,如8.8.8.8。 选项{directory”/var/cache/bind;//如果您和想要//对话的名称服务器之间有防火墙,您可能需要修复防火墙以允许多个//端口对话。请参阅http://www.kb.cert.org/vuls/id/800113//如果您的ISP为稳定的//名称服务器提供了一个或多个IP地址,您可能希望将其用作转发器。//取消对以下块的注释,并插入地址替换//all-0的占位符。货代{8.8.8.8;8.8.4.4;};..}; 响应策略区域与此转发器设置配合使用。Bind将首先查询本地响应策略区域。如果在RPZ中找不到DNS记录,则请求将转发到上游DNS解析程序。当您自己的绑定解析程序解析DNS名称花费太多时间时,您可能希望使用转发器来加速DNS解析。 配置区域传输 如果您有另一个绑定DNS解析程序,可以将其配置为从属解析程序,以自动接收来自主DNS解析程序的更新。 首先,需要编辑/etc/bind/named。主DNS解析程序上的conf.local文件。 sudo nano/etc/bind/named。conf.local 将从属DNS解析程序的IP地址添加到allow transfer指令。 区域“rpz.local”{type master;file”/etc/bind/db.rpz.local”;允许查询{localhost;};允许转移{12.34.56.78;};同时通知{12.34.56.78;};}; 如果您有多个从属DNS解析程序,请添加多个IP地址,如下所示。 允许转移{12.34.56.78;12.34.56.79;}; ALLOW notify指令将使主DNS解析程序在RPZ区域更改时向从解析程序发送通知消息。保存并关闭文件。重新启动BIND以使更改生效。 sudo systemctl重启bind9 如果主DNS解析程序上运行防火墙,则需要允许从DNS解析程序连接到端口53。例如,如果使用UFW防火墙,请运行以下命令。 sudo ufw插件1允许从12.34.56.78插入任何端口53 接下来,编辑已命名的。从DNS解析程序上的conf.options文件。 sudo nano/etc/bind/named。形态选项 在选项{…}中添加以下行子句来启用响应策略区域。(第一行是评论。) //启用响应策略区域。响应策略{zone“rpz.local”;}; 保存并关闭文件。然后编辑命名的。conf.local文件。 sudo nano/etc/bind/named。conf.local 在此文件中添加从属RPZ区域。将11.22.33.44替换为主DNS解析程序的IP地址。 区域“rpz.local”{type slave;文件“db.rpz.local”;masters{11.22.33.44;};允许通知{11.22.33.44;};允许传输{none;};允许查询{localhost;};}; 保存并关闭文件。 您还需要配置从属解析程序的防火墙,以允许主DNS解析程序发送通知消息。 sudo ufw插件1允许从11.22.33.44进入任何端口53 接下来,运行以下命令检查主配置文件中是否存在语法错误。无声输出表示未发现错误。 sudo命名为checkconf 如果没有发现错误,则重新启动BIND9。 sudo systemctl重启bind9 BIND9重新启动后,区域传输将立即启动。使用以下命令检查BIND9日志。 sudo journalctl-eu bind9 或 sudo journalctl-欧盟命名 您可以看到如下消息,这表明区域传输成功。 转移rpz。本地/来自xx。xx。xx。xx#53:转移状态:成功转移“rpz”。本地/来自xx。xx。xx。xx#53:传输完成:1条消息,34条记录,899字节,0.248秒(3625字节/秒) 注意:无论何时修改主解析器上的RPZ区域,都需要更新序列号。使其更大,以便从属解析器知道RPZ区域已更改。 创建多个RPZ区域 有时,您可能不希望将某些DNS记录传输到从属解析程序。您可以创建一个单独的RPZ区域。编辑命名文件。conf.options文件。 sudo nano/etc/bind/named。形态选项 添加一个新的RPZ区域。 //启用响应策略区域。响应策略{zone“rpz.local”zone“rpz.local.nottransfer”;}; 注意:如果两个RPZ区域有冲突的DNS记录,则以第一个条目为准。如果要反转优先级,请切换其位置,如下所示: //启用响应策略区域。响应策略{zone“rpz.local.nottransfer”;zone“rpz.local”;}; 保存并关闭文件。然后打开命名的。conf.local文件。 sudo nano/etc/bind/named。conf.local 在此文件中添加新分区的定义。 区域“rpz.local.nottransfer”{type master;文件“/etc/bind/db.rpz.local.nottransfer”;允许查询{localhost;};允许传输{localhost;};}; 保存并关闭文件。然后我们需要创建区域文件。我们可以使用区域模板文件,而不是从头创建区域文件。复制数据库的内容。空到一个新文件。 sudo cp/etc/bind/db。空/etc/bind/db。rpz。地方的不转移 然后编辑数据库。rpz文件并添加自定义DNS记录。 sudo nano/etc/bind/db。rpz。地方的转移 故障排除提示 如果辅助DNS解析程序未能从主DNS解析程序复制RPZ记录,则辅助DNS解析程序上可能存在以下情况: 防火墙规则是错误的。 绑定解析程序未运行。 BIND未在所需的网络接口上侦听。 如何将RPZ与绑定中的视图一起使用 如果你想让你的RPZ只能被内部的可信网络访问,你可以使用BIND中的视图来实现。此设置将与主从区传输兼容。 首先,编辑命名文件。conf.options文件。 sudo nano/etc/bind/named。形态选项 使用acl指令定义内部网络和来宾网络。 选项{….}acl内部{10.10.10.0/24;};acl来宾{10.10.20.0/24;}; 这里的10.10.10.0/24网络是内部可信网络。10.10.20.0/24是来宾网络。另外,从该文件中删除以下行。 响应策略{zone“rpz.local”;}; 保存并关闭文件。 接下来,编辑已命名的。conf.local文件。 sudo nano/etc/bind/named。conf.local 您需要将分区定义放在如下所示的视图子句中。注意,我们需要在view子句中启用响应策略区域。 查看“内部”{match clients{internal;}//启用响应策略区域。响应策略{zone“rpz.local”;};区域“rpz.local”{type master;file”/etc/bind/db.rpz.local”;允许查询{localhost;};允许转移{12.34.56.78;};};};}; 保存并关闭文件。然后编辑命名的。conf文件。 sudo nano/etc/bind/named。conf.default-zones 在来宾视图中放置默认区域。 查看来宾{match clients{guest;};允许递归{any;};区域”{键入提示;文件“/usr/share/dns/root.hints”;};区域“localhost”{type master;file“/etc/bind/db.local”;};…}; 保存并关闭文件。运行以下命令检查配置文件中是否存在语法错误。无声输出表示未发现错误。 sudo命名为checkconf 如果没有发现错误,则重新启动BIND9以使更改生效。 sudo systemctl重启bind9 收尾 我希望本教程能帮助您在Debian/Ubuntu上设置响应策略区域/DNS防火墙。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.23 浏览:210