域名恶意解析现象及Nginx防止未绑定域名访问

测试用百度搜索了一下自己的博客,发现了很多不同的域名指向了自己的博客

这些域名(www.sitt-cargo.com; m.whnmsjz.com; www.37xyx.net)点进去都是自己博客niliu.me的首页,ping结果也是自己的服务器IP

Google搜索了下,这种现象就叫“域名恶意解析”,只要你的Web服务器可以通过公网IP直接访问,那么别人的域名就可以解析到你的IP上进行访问。

有三方面危害:
一、如果有一天这几个域名被指向了其他 IP,那么就会失去对应的流量;
二、不同域名指向同一个网站对 SEO 的效果不好。
三、被利用当作代理去请求其他服务。

知道了原因,解决就很简单,Nginx增加限制IP直接访问的配置就可以了。
在nginx配置文件nginx.conf中新增server块

server {
    listen       80  default_server;
    server_name  _;
    return       444;
}

server_name 指定”_”, 或者 “–” 或者 “!@#”都可以表示一个无效的域名,Nginx通过HTTP请求中Host值来找对应的server_name,如果找不到Nginx就会讲请求送到指定了default_server的节点来处理

如果是https的站点,80换成443,增加ssl on就好了

server {
     listen 443 default_server;
     server_name _;
     ssl on;
     return 444;
}

这样遇到恶意解析的时候,就返回444,提示无法打开页面,该网页无法正常运作。(注意:444是非标准状态码,是Nginx服务器扩展的Http错误状态码,服务器不向客户端返回任何信息,并关闭连接, 断开客户端和服务器的连接,防止恶意软件攻击威胁。)

图片来自网络:图片地址

当然返回403禁止访问也可以,或者为了减少流量流失redirect 301到自己的域名,搜索引擎会调整搜录,测试发现Google还挺明显,301跳转几次后就搜索不到原来的地址了。

rewrite ^(.*) http://niliu.me$1 permanent;

后记【2018-10-12】: 购买的ECS带宽是按量付费的,最近发现每小时的消费比之前都增长了0.3元,查看nginx access-log看到如下的大量请求:

分析大概有人把这台ECS当作代理服务器,去抢票 https://mobile.12306.cn/otsmobile/app/mgs/mgw.htm?

原来是443端口没有添加未绑定域名限制, 添加上就好了。同时注意到, 添加未绑定域名限制后,未绑定域名访问在access-log中没有记录。

另外,遇到恶意解析还是建议return 444吧,redirect 301到自己的域名,遇到非法请求,会占用大量带宽,如果是按量付费就亏大了。看来这个防范还是相当重要啊,危及到财产损失了。

参考:
https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#4xx_Server_Error
http://nginx.org/en/docs/http/server_names.html
https://blog.csdn.net/qq_25475209/article/details/81046910

发表评论

电子邮件地址不会被公开。 必填项已用*标注