记一次网站被恶意劫持的经历

最初发现被劫持是在百度统计页面,有个奇怪的域名入口带来了一部分流量,访问那个域名后(下文就成为B域名),傻眼了,和我的网站一模一样,我立即上网查询一番,了解到域名恶意解析会出现类似的情况。

情况介绍

访问B域名时会显示我的首页(此时浏览器的地址栏是B域名),而且和我真正的首页是动态一致的,但是在B域名的首页点击文章或者菜单栏,还是会跳转到真实的网站

第一次尝试

最初我以为是IP被B域名恶意解析了,就在apache的配置文件中限制了IP直接访问(这个漏洞确实是因为自己不太懂web安全才留下的),另外还限制只有我自己的域名才能直接访问。

apache禁止IP直接访问,在/etc/apache2/sites-available/000-default.conf中添加

<VirtualHost *:80>
    ServerName 你的服务器IP
    <Location />
        Order Allow,Deny
        Deny from all
    </Location>
</VirtualHost>

另外只允许指定的域名访问,继续添加

<VirtualHost *:80>
    DocumentRoot 网站目录
    ServerName 域名
    ServerAlias 域名
    <Directory 网站目录>
        Options Indexes FollowSymLinks
        AllowOverride all
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

但是,添加之后,访问B域名,仍指向我的网站,此时我就有点怀疑是否真的是域名恶意解析?

第二次尝试

后面我又查了一下,发现检查是否被恶意解析很简单,直接ping 域名,就可知道域名解析的IP是多少,我通过ping发现B域名并不是解析我的服务器IP。此间我还查询到B域名是在阿里云注册的,服务器位于美国。

第三次尝试

这次我直接查看了apache的后台日志,发现了一个有意思的地方(日志路径为/var/log/apache2/access.log),我发现每次访问B域名,apache就会收到B域名对应IP的GET请求,而GET的对象就是我的首页。也就是说,每次访问B域名,B域名对应的IP服务器就会抓取我的首页显示出来,所以这就不像是域名恶意劫持,更像是一个网页的转发。

总结

当发现有其它域名的网站和你的网站一模一样时,可以借鉴我的排查过程,简单来说
– 先检查服务器是否被B域名恶意解析,ping 域名,查看是否是你的服务器IP
– 访问B域名,查看你的apache后台日志,根据时间确定B域名下具体哪个IP访问了你的网站,然后屏蔽它,建议使用iptables

附录

  1. 如何使用iptables屏蔽ip访问
    要禁止一个IP,使用下面这条命令:
iptables -I INPUT -s ***.***.***.*** -j DROP

要解封一个IP,使用下面这条命令:

iptables -D INPUT -s ***.***.***.*** -j DROP

参数-I是表示 Insert (添加),-D表示 Delete (删除)。后面跟的是规则, INPUT 表示入站,... 表示要封停的IP, DROP 表示放弃连接。
查看当前屏蔽的IP

sudo iptables -L

屏蔽一个ip段

iptables -I INPUT -s 121.0.0.0/8 -j DROP

发表评论

电子邮件地址不会被公开。