前言

域名的恶意解析,可以用于借刀杀人。这个手法很骚,其危害如下:

  • 不同域名解析到同个站点,真实域名权重被降低,SEO 排名被假域名挤占。
  • 非法域名解析,导致源服务器被工信部封杀,网站停止服务。
  • 网站被镜像,无形之中增大了服务器负担。

解决方法:筛选无效域名的 HTTP 请求,全部重定向返回 502 错误。

注意事项:进行以下操作后,其它正常的站点需要做好 server_name 的配置,否则正常站点的域名都会被拦截。

操作步骤

1.如果 nginx 有默认站点配置文件,需要先将其重命名或删除

mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak

2.新建文件夹用于存放 SSL 证书

mkdir -p /www/cert/denied

3.生成自签 TLS 证书

openssl req -x509 -nodes -newkey ec:<(openssl ecparam -name prime256v1) -keyout /www/cert/denied/server.key -out /www/cert/denied/server.crt -subj "/CN=127.0.0.1" -days 36500

证书:/www/cert/denied/server.crt

密钥:/www/cert/denied/server.key

4.新增 nginx vhost 配置文件

nano /etc/nginx/sites-available/denied

写入代码:

server {
    # 监听80端口
    listen 80 default_server;
    listen [::]:80 default_server;

    # 监听443端口
    listen 443 ssl default_server;
    listen [::]:443 ssl default_server;

    # SSL证书配置
    ssl_certificate /www/cert/denied/server.crt;
    ssl_certificate_key /www/cert/denied/server.key;

    # 筛选无效域名
    server_name _;
    # 访问日志文件
    access_log /var/log/nginx/denied_access.log;
    # 错误日志文件和记录级别设定
    error_log /var/log/nginx/denied_error.log warn;

    # 返回 502 错误
    return 502;
}

5.创建站点软链接,启用网站。

ln -s /etc/nginx/sites-available/denied /etc/nginx/sites-enabled/denied

6.测试 Nginx 配置文件

nginx -t

7.重新加载 Nginx

systemctl reload nginx

8.浏览器通过 IP 访问服务器,测试返回 502 错误。

最后修改:2023 年 10 月 24 日
如果觉得我的文章对你有用,请随意赞赏