前言
域名的恶意解析,可以用于借刀杀人。这个手法很骚,其危害如下:
- 不同域名解析到同个站点,真实域名权重被降低,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