Censys 搜索引擎很强大。Censys 每天都会扫描 IPv4 地址空间,以搜索所有联网设备并收集相关的信息,并返回一份有关资源(如设备、网站和证书)配置和部署信息的总体报告。
在 IP 前加上 https 访问时,Nginx 会自动返回该网站的 https 证书,从而暴露相关域名信息。哪怕是套了 CDN 也还是会被扫到。Censys 还会扫描端口,例如 80、8000、8080、443、4433。
所以为了防止,自己的网站被攻击我们需要屏蔽掉 Censys 的扫描。据我所知有四种办法,分部是屏蔽 Censys 的 UA、屏蔽 Censys 的 IP 段、建立虚假网站以及使用 Nginx 的特性。四种方法,选其一即可。当然如果你觉得不够安全,可以都使用。
系统: ubuntu22.04
nginx: 1.25.5
1.屏蔽 Censys 的 IP 段
Censys 的 IP 段在其官网有。我的机子使用的是 Ubuntu 系统,带有 UFW 防火墙,按照下面的命令建立规则即可。
Censys IP段 :https://support.censys.io/hc/en-us/articles/360043177092-Opt-Out-of-Data-Collection
sudo ufw deny from 162.142.125.0/24
sudo ufw deny from 167.94.138.0/24
sudo ufw deny from 167.94.145.0/24
sudo ufw deny from 167.94.146.0/24
sudo ufw deny from 167.248.133.0/24
sudo ufw deny from 199.45.154.0/24
sudo ufw deny from 199.45.155.0/24
sudo ufw deny from 206.168.34.0/24
sudo ufw deny from 2602:80d:1000:b0cc:e::/80
sudo ufw deny from 2620:96:e000:b0cc:e::/80
sudo ufw deny from 2602:80d:1003::/112
sudo ufw deny from 2602:80d:1004::/112
开启ufw和重载ufw,重启nginx
sudo ufw reload #重载ufw
ufw status # 查看状态
sudo systemctl reload nginx # 重启nginx
2.屏蔽 Censys 的 UA
如果你使用了 CDN ,那么就要在 CDN 中屏蔽掉 Censys 扫描使用的 UA。
Censys 扫描使用的 UA 如下:
Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)
例如cloudflare cdn
安全性–WAF–自定义规则
字段:用户代理
运算符: 等于
值:Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)
3.使用 Nginx 1.19.4 的新特性(推荐)
Nginx 1.19.4 新增了一个特性,ssl_reject_handshake 。在 IP 访问时会终止 TLS 握手,也就不会暴露域名了。
例如宝塔面板:
在/www/server/panel/vhost/nginx目录找到0.default.conf,删除原有代码,添加如下代码:
server {
listen 443 ssl default_server;
# 如果有 IPv6 地址的需要,则加入下面这行。
# listen [::]:443 ssl default_server;
ssl_reject_handshake on;
}
重启nginx生效::
/etc/init.d/nginx restart
4.建立虚假网站
- 网站是一个纯静态网站,网站的文件,除了 .htaccess 和 .user.ini 这两个文件,其他的全删除。
- 添加自签的空白 SSL 证书,强制 HTTPS,设置为默认网站
1.生成自签名证书(一路回车键)
mkdir -p /opt/signcert && cd /opt/signcert
openssl req -x509 -newkey rsa:4096 -keyout OpenLiteSpeed-key.pem -out OpenLiteSpeed-cert.pem -nodes -days 365 # 一路回车
2.替换证书
cat /opt/signcert/OpenLiteSpeed-cert.pem > /www/server/panel/vhost/cert/ip.com/fullchain.pem
cat /opt/signcert/OpenLiteSpeed-key.pem > /www/server/panel/vhost/cert/ip.com/privkey.pem
/etc/init.d/nginx restart
3.下一步到假站点保存一下ssl证书使其生效
设置假站点为默认站点