Apache 禁止未经许可的域名访问 ECS 上的网站
问题现象
有时 ECS 上的网站会被人恶意指向,譬如说您的 ECS 的 IP 地址为 123.123.123.123,正常服务的域名为 www.abc.com,但是此时有恶意用户使用其他的域名,恶意指向到您的网站;
如恶意用户注册了一个域名 www.fake.com,然后指向到了 IP 123.123.123.123,这样会使访问原本不属于您网站的域名 www.fake.com 也会出现您的网站内容。
解决方案
通过 Apache 的虚拟主机可以变通的解决这个问题。
测试场景:
服务器上有两个网站,分别为 http://t1.huigher.cn/ 和 http://p1.huigher.cn/。
Apache 版本为 2.2.15。
打开 Apache 的配置文件,CentOS 下默认位置在 /etc/httpd/conf/httpd.conf,在其中加入以下内容:
注意:以实际 Apache 配置文件路径为准。
1、 首先是加入以下代码,告知 Apache 使用了基于 host 名的虚拟主机功能:
NameVirtualHost *:80
2、 然后加入以下代码,作用是当客户端携带的 host 头不在之后设置的网站域名内时,指向一个 403 错误页面告知用户域名非法,其中 DocumentRoot 即是放置错误提示页面的目录,在下面可以放置一个简单的 html 页面提示用户访问的域名非法。
3、 最后加入以下代码,告知 Apache 合法的网站主机头,这个代码块根据实际情况修改内容,该实例中加入了两个网站,分别是 p1.huigher.cn 和 t1.huigher.cn。
4、 最后重新启动 Apache 就可以看到效果了。
5、若希望使用其他域名访问时直接返回 403 错误,可以在第二步中将代码改为以下形式:
重启 Apache 后再使用其他域名访问就会直接返回 403 错误了。