新聞中心
我們通常會(huì)用cdn套到服務(wù)器ip上,來(lái)為網(wǎng)站或者后端程序做加速、防御??墒莕ginx在設(shè)計(jì)上有個(gè)小缺陷,會(huì)因?yàn)閟sl證書(shū)泄露網(wǎng)站的原IP

建網(wǎng)站原本是網(wǎng)站策劃師、網(wǎng)絡(luò)程序員、網(wǎng)頁(yè)設(shè)計(jì)師等,應(yīng)用各種網(wǎng)絡(luò)程序開(kāi)發(fā)技術(shù)和網(wǎng)頁(yè)設(shè)計(jì)技術(shù)配合操作的協(xié)同工作。創(chuàng)新互聯(lián)專業(yè)提供成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站制作(企業(yè)站、響應(yīng)式網(wǎng)站開(kāi)發(fā)、電商門(mén)戶網(wǎng)站)等服務(wù),從網(wǎng)站深度策劃、搜索引擎友好度優(yōu)化到用戶體驗(yàn)的提升,我們力求做到極致!
原 理
用Nginx部署網(wǎng)站,在默認(rèn)或不正確的配置下,網(wǎng)站開(kāi)啟ssl,直接訪問(wèn)ip的443端口,即ip:443,Nginx會(huì)返回默認(rèn)一個(gè)站點(diǎn)的ssl證書(shū),間接的能讓別人掃到這個(gè)ip對(duì)應(yīng)的域名。
原理就是對(duì)ip的443端口發(fā)送clienthello,對(duì)方回復(fù)的 serverhello中有ssl證書(shū),ssl證書(shū)里的common name 有域名信息。這樣就知道了解析這個(gè)ip的域名。所以更準(zhǔn)確的說(shuō)是IP的443端口可能會(huì)暴露了域名。
動(dòng)作再大一點(diǎn),批量掃描機(jī)房的ip段,把對(duì)應(yīng)的域名-ip 的多值映射表統(tǒng)計(jì)起來(lái)。以后想查某個(gè)域名對(duì)應(yīng)的源站 ip 查這個(gè)表就夠了,這是黑產(chǎn)喜歡干的事。
同時(shí)也是很多站點(diǎn),明明套上了cdn,依然能被打到源站IP的原因。
解決辦法
- # 禁止IP直接訪問(wèn)網(wǎng)站
- server {
- listen 80 default_server;
- listen [::]:80 default_server;
- server_name _;
- return 444;
- }
自簽IP的SSL證書(shū),返回444
自簽證書(shū)的目的不是為了訪問(wèn),而是避開(kāi)Nginx的這個(gè)缺陷。生成自簽的IP SSL證書(shū)可以用開(kāi)源的Mkcert(https://myssl.com/create_test_cert.html)工具。Mkcert使用起來(lái)稍微麻煩,或者用一個(gè)測(cè)試證書(shū)的在線網(wǎng)頁(yè)工具:https://myssl.com/create_test_cert.html
在填寫(xiě)域名的位置填上IP地址,點(diǎn)生成按鈕會(huì)自動(dòng)測(cè)試證書(shū)展示在下面,各自保存為.pem文件和.key文件。然后在nginx里配置上“return 444”,類似配置大概:
- {
- listen 80 ;
- listen 443 ssl http2 default_server;
- server_name ip;
- #HTTP_TO_HTTPS_END
- ssl_certificate xxxx.pem;
- ssl_certificate_key xxxx.pem;
- ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
- return 444;
- }
購(gòu)買合法IP站點(diǎn)的SSL證書(shū)
花點(diǎn)小錢(qián)買個(gè)合法的IP SSL證書(shū)配置到nginx里,IP證書(shū)一般一二百左右。加錢(qián),世界觸手可及。
僅允許指定cdn的IP訪問(wèn)
Nginx僅允許指定cdn的IP訪問(wèn),避免放到公網(wǎng)上被任何人掃。以騰訊云CDN段為例,在Nginx網(wǎng)站配置文件里,添加如下:
- location / {
- allow 58.250.143.0/24;
- allow 58.251.121.0/24;
- allow 59.36.120.0/24;
- allow 61.151.163.0/24;
- allow 101.227.163.0/24;
- allow 111.161.109.0/24;
- allow 116.128.128.0/24;
- allow 123.151.76.0/24;
- allow 125.39.46.0/24;
- allow 140.207.120.0/24;
- allow 180.163.22.0/24;
- allow 183.3.254.0/24;
- allow 223.166.151.0/24;
- deny all;
- }
查一下使用的CDN商家的文檔,如果有新的IP段更新,也加到里面。
本文轉(zhuǎn)載自微信公眾號(hào)「Linux就該這么學(xué)」,作者倪家興。轉(zhuǎn)載本文請(qǐng)聯(lián)系Linux就該這么學(xué)公眾號(hào)。
本文題目:別讓SSL證書(shū)暴露了你的網(wǎng)站服務(wù)器IP
標(biāo)題鏈接:http://www.dlmjj.cn/article/ccepici.html


咨詢
建站咨詢
