![如何禁用从互联网访问 DNS 服务器,同时保持内联网完好无损?使用 iptables](https://linux22.com/image/607305/%E5%A6%82%E4%BD%95%E7%A6%81%E7%94%A8%E4%BB%8E%E4%BA%92%E8%81%94%E7%BD%91%E8%AE%BF%E9%97%AE%20DNS%20%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%8C%E5%90%8C%E6%97%B6%E4%BF%9D%E6%8C%81%E5%86%85%E8%81%94%E7%BD%91%E5%AE%8C%E5%A5%BD%E6%97%A0%E6%8D%9F%EF%BC%9F%E4%BD%BF%E7%94%A8%20iptables.png)
我必须管理一台开启了 Open DNS 服务的服务器。最近,它被未知的互联网攻击者严重滥用,用于 ddos dns 放大攻击。一些本地主机程序和内联网客户端以我不完全理解的方式使用此 DNS 服务,这就是为什么我害怕对 DNS 服务本身进行任何重新配置。但是我认为,如果我拒绝来自外部互联网的所有 DNS 请求,它可能会解决我的问题。
我的问题是:
1)如何使用 iptables 拒绝来自外部互联网的所有 DNS 请求,同时保持本地主机和内联网(IP:10.0.0.X 和 10.0.1.X)完好无损?
2)这不会损害内网DNS服务的可用性吗?
3)这不会损害服务器上其他互联网服务(web+mail+db)的可用性吗?
我们网站当前使用的所有域名均由另一家公司在其服务器上管理,据我所知,外部互联网上的任何人都不需要访问我们的 DNS 服务。
谢谢。
答案1
删除外部访问的最简单方法是阻止对 UDP(可能还有 TCP)端口 53 的所有外部访问,这将阻止它向外提供请求,但保持到端口 53 的传出流量开放,这样它就可以对您的内部服务器发出递归请求。
如果您要为互联网提供递归名称服务器,建议您充分了解服务器的安全性和配置。否则,请将其交给专业人士或托管服务。
答案2
您不需要 Netfilter/iptables。所有递归名称服务器软件都允许您仅响应本地网络。假设您的网络是 10.1.0.0/16,使用 Unbound:
access-control: 0.0.0.0/0 refuse
access-control: 10.1.0.0/16 allow
使用 BIND:
acl mynet {
10.1.0.0/16;
};
allow-recursion { mynet; };
allow-query-cache { mynet; };