防止域名被恶意解析

一、何为域名恶意解析

外部未知的域名持有者,将域名解析到非其所持有的服务器公网IP上,间接或直接造成损害他人利益的行为。

二、借刀杀人

域名的恶意解析,可以用于借刀杀人。
这个手法很骚,轻则可以将对手的SEO排名拉低,重则可以让工信部封杀其站点。

具体实现条件如下:

  • 未备案的域名或已被接入工信部黑名单的域名
  • 获取要攻击的站点,其源服务器使用的公网IP
  • 确认要攻击的网站80端口和443端口可以直接用IP直接访问
  • 将黑域名解析到该公网IP

危害如下:

  • 不同域名解析到同个站点,真身域名权重被降低,SEO排名被假域名挤占
  • 非法域名解析,导致源服务器被工信部封杀,网站停止服务

三、解决方法

将无效域名的HTTP请求,全部拒绝响应

以下是我的个人站点的nginx配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
server{
listen 80 default_server;
server_name _;
access_log off;
return 444;
}

server{
listen 443 default_server;
server_name _;
ssl_certificate cert/www.wangxiaokai.vip.pem;
ssl_certificate_key cert/www.wangxiaokai.vip.key;
access_log off;
return 444;
}

3.1 筛选无效域名

1
server_name _;

这个代表的就是无效域名,_符号可以用-!@#代替,都可以达到相同的效果。

3.2 不记录访问日志

1
access_log off;

访问日志是需要存储空间的,如果没有设置自动清理脚本,也是可以把服务器存储空间打爆的。

3.3 不处理无效域名的请求

1
return 444;

444是Nginx服务器扩展的HTTP错误状态码,为非标准HTTP状态码。
它的作用是:服务器不向客户端返回任何信息,并关闭连接, 断开客户端和服务器的连接,防止恶意软件攻击威胁。

3.4 一些细节

这两个server模块,应该放在最前,优先处理。