许多站长都有一个困惑 那就是为什么自己的网站套上了CDN但是自己网站的源站真实IP却暴露了呢
CDN它既能加速我们的网站也能当作网站的保护壳 但防止不了一些网站的暴力扫描
今天我教给大家如何防止被扫描
软件环境:Debian 11.7 / Nginx
一、自签名证书
首先我们需要自己创建一个自签名证书 这个自签名证书是用来骗扫描者的
因此 请不要为你的真实域名自签名证书 这属于自己拿石头砸自己脚了!
你可以通过一些在线网站提供的测试证书生成 比如:https://myssl.com/create_test_cert.html
请不要填写你的真实信息!
如图所示 有效期建议搞久点 不然到时候太麻烦了!
点击 “生成” 后生成相应的假证书 后 下载证书和密钥
当然 你也可以通过 OPENSSL 等软件进行自签名证书!
二、隐藏源站IP
当你安装完 Nginx 的时候你会发现有一个默认页 这个默认页可以作为 公网IP 访问的页面
首先将我们的证书上传到我们的服务器 路径自定义 但是请不要把真证书和假证书混一起了
编辑我们 Nginx 的默认页的配置文件 路径在/etc/nginx/sites-available/default
用 文本编辑器 打开后 你会发现默认文件的内容:
# Default server configuration
#
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
}
将原来的内容更改为:
# Default server configuration
#
server {
listen 80 default_server;
# SSL configuration
#
listen 443 ssl http2 default_server;
#证书路径别写错了!
ssl_certificate /fake/cert.pem;
ssl_certificate_key /private.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name 你的公网IP;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
}
不要直接照抄!配置文件会随着时间的迭代和改变!三思而后行!
更改 证书路径和公网IP(公网IP访问) 后 保存
重启 Nginx:
nginx -s reload
三、验证成功
使用 https://你的公网IP 访问网站
查看证书 如果是你刚刚生成的假证书 那证明成功了
理论上你的源站IP可以完成隐藏了
如果你的源站IP早就暴露了 建议更换公网IP
本教程仅作为参考 实际使用请自己甄别
四、原理
为什么会知道你的IP地址?其实你的真实IP大家开始都不知道,但是一些公司会整一些机器人通过模仿普通用户请求,扫描(请求)所有可能的 IP,而这些 IP 中可能存在着 Nginx 的默认页面
在 Nginx 中,如果在客户端请求时没有携带 Hostname(你绑定的域名,也就是前面说的访问了你的IP),则会返回第一个从配置文件中读取的 server{} 块(这个可以说是默认页面或者是你设置的default_server)
你会很好奇,明明我的证书都绑定在了 Hostname 上了,对方访问了我的默认页,那为什么会知道我的证书呢?你可能会觉得服务端不会返回东西。然而证书信息还是被返回了。这是 Nginx 的特性,熟悉熟悉吧
当你的证书返回之后对方知道了你的证书 同时对方也知道了你的域名(也就是前面说的“查看证书”)
这样 你的真实IP就暴露出来了
这个原理只是单单针对我这一篇文章所介绍的方法 其他还有更多的原理。
如有错误欢迎指出!
注释太多了,没用可以删掉
文章再加个原理分析就更好了
∠( ᐛ 」∠)_
感谢建议 !