测试用百度搜索了一下自己的博客,发现了很多不同的域名指向了自己的博客
这些域名(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