阻止访问 ns1.example.com、mail.example.com

阻止访问 ns1.example.com、mail.example.com

我有一个带有 2 个 IP 地址的 VPS(CentOS 7)。

我使用 Bind 托管我自己的 DNS 服务器。运行 Apache。除其他外,我拥有以下服务器的“A”记录

ns1.example.com -> X.X.X.X
ns2.example.com -> Y.Y.Y.Y
mail.example.com -> X.X.X.X
server.example.com -> X.X.X.X (Fully Qualified Hostname)

如果我在浏览器中输入 mail.example.com,它会显示位于 example.com 的网站。

如何在不影响 DNS 设置的情况下使 mail.example.com 无法通过浏览器访问?

同样,我如何阻止对 ns1.example.com、ns2.example.com 和 server.example.com 的访问?

答案1

从 apache2 配置中删除通配符定义和/或将其设置为仅“回答”指向 example.com 和 www.example.com 的请求

这不是 DNS 问题,而是 apache2 配置问题

您应该拥有类似这里描述的设置:

https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-centos-7

但将“*:80”参数替换为与 example.com 对应的 VPS IP

<VirtualHost PUT_YOUR_VPS_IP_HERE>
    ServerName www.example.com
    ServerAlias example.com
</VirtualHost>

这里还有一些其他的例子: https://httpd.apache.org/docs/2.2/vhosts/examples.html

答案2

您可以使用Alias *它来捕获虚拟主机中允许的任何其他流量,为此您必须使用在最后的位置*具有别名的虚拟主机。

就像这样,只有定义的域才会被提供服务。

<VirtualHost *:80>
ServerName example.com
ServerAlias server.example.com
DocumentRoot /var/www/default
...
</VirtualHost>

# /!\ THIS HAS TO BE ON THE LAST POSITION /!\
<VirtualHost *:80 *:443>
# [ Server Domain ]
ServerName localhost
ServerAlias *
# [ Cancel trafic ]
RewriteRule .* - [END,R=406]
# [ Custom Log ]
CustomLog ${APACHE_LOG_DIR}/other.log combined
</VirtualHost>

在我的示例中,仅允许 example.com 和 www.example.com,所有其他域或 IP 的流量都将被取消。

要取消流量,您可以使用重定向到-,然后添加错误代码,例如我使用 RewriteRule 重定向到406 不可接受R=406)。

您可以在此处找到重定向代码列表: https://fr.wikipedia.org/wiki/Liste_des_codes_HTTP

相关内容