原文在 https://tlanyan.me/do-hide-site-real-ip/
防范DDoS攻擊最主要的手段是加錢上高防,同時隱藏網站真實IP。前文 隱藏網站的真實ip 簡要介紹了網站隱藏真實ip的基本操作,但不夠詳細和深入。本文詳細介紹幾種網站隱藏真實ip的方法和優缺點,讓你能真正做一個永不暴露真實IP的網站。

做一個永不暴露真實IP的網站

既然不想暴露網站的真實IP,那么真實服務器前面至少套一層代理。一般來說,位于最前線的反向代理主要有如下幾種:

CDN:內容分發網絡,就近為用戶提供服務,加速訪問;
高防IP:高防IP一般位于大帶寬的骨干網節點上,用于清洗DDoS流量;
SLB:負載均衡器,用在大流量、繁忙的網站上,常見的SLB有LVS、F5等。

這三種反向代理主要作用不一樣,配置好的情況下都能隱藏服務器真實IP。對于普通的網站,使用CDN或者高防就足夠,業務量的情況下才會用到SLB。

下面介紹使用了反向代理的情況下,隱藏網站真實IP的操作。

防火墻

使用防火墻是最簡單的做法,即:將反向代理的回源IP加入白名單,屏蔽其他IP的任何請求。

例如使用CloudFlare的免費CDN服務,其回源IP可從 https://www.cloudflare.com/zh-cn/ips/ 獲取,然后將其加入白名單,同時屏蔽其他IP:

將cf ip地址放在 cf_ips.txt

首先將cf的ip加入白名單

while read -r line
do
firewall-cmd --zone=trusted --add-source=$line
done < cf_ips.txt

然后移除其他ip對http和https服務的訪問

firewall-cmd --remove-service=http
firewall-cmd --remove-service=https
復制代碼

經過上述設置,Cloudflare 的IP能正常訪問,其他IP完全無法訪問真實ip的網站服務器,很好的隱藏了真實IP。

該方法設置簡單,適用于服務器托管單站點的情形。當服務器上托管多個網站,并且某些站點需要直接暴露外網時,這種做法缺乏靈活性,無法實現。

也可以通過Nginx的allow/deny指令達到相同效果

IPv6

對于防火墻和網絡不熟悉的網友,可以考慮使用IPv6來隱藏網站的真實IP。具體操作為:

1.找一臺有IPv6地址的服務器,只有IPv6的NAT VPS更好。目前IPv6地址正在普及中,許多商家都免費提供IPv6地址,例如 一些VPS商家整理 中的 阿里云、Vultr、Linode、CloudCone,有的還提供不止一個IPv6地址;

  1. 設置網站只監聽IPv6端口。以Nginx為例,網站配置文件形如:

server {

listen [::]:80;
server_name 主機名; # 請改成自己的主機名

return 301 https://主機名$request_uri;

}
server {

listen      [::]:443 ssl http2;
server_name  主機名;
ssl_certificate 證書路徑;
ssl_certificate_key ssl密鑰路徑;
# 其他設置

}
復制代碼

  1. 找一家支持只有IPv6的CDN,例如 Cloudflare,設置IPv6解析:

經過上面三步設置,基本上可確保不會泄漏真實IP,原因如下:

  1. 絕大多數情況下,人們都會理所當然的找IPv4,不會想到你的網站根本不存在IPv4網絡上;
  2. 相對于IPv4,IPv6的地址段實在太龐大。即使有zmap這種幾小時掃描完全球ipv4段的神器,或者Shodan搜索引擎,也很難從海量地址中尋找單個地址。

如果不放心,可以同樣加上防火墻,就萬無一失了:

首先將cf的ip加入白名單

while read -r line
do
firewall-cmd --zone=trusted --add-source=$line
done < cf_ips.txt

然后屏蔽其他地址對ipv6的訪問權限

firewall-cmd --add-rich-rule="rule family='ipv6' source address='::0/0' drop"
復制代碼

該方法同樣設置簡單,以奇招勝出,單臺服務器能托管多個網站,并且其他網站可直接暴露不受影響。

CNAME

另一種常見隱藏真實IP方式是使用CNAME,同樣無需設置防火墻。其操作如下:

  1. CDN回源時使用CNAME方式回源到另一個主機名上。例如www.tlanyan.me回源的www.abcdexfd.com。需要注意的是,前端域名和源站域名最好不是同一個,防止通過爆破二級域名泄漏真實IP;
  2. 在源站服務器上設置默認站點,防止通過host方式爆破。由于默認站點只是為了防止SNI方式泄漏真實IP,因此使用自簽證書即可:

生成密鑰

openssl genrsa -out example.key 2048

生成證書,期間需要填一些信息

openssl req -new -x509 -days 3650 -key example.key -out example.pem
復制代碼

接著以Nginx為例,設置默認站點:

server {
listen 80 default_server;
server_name example.com;
return 301 https://example.com$request_uri;
}

server {
listen 443 ssl http2;
server_name example.com default_server;
ssl_certificate example.pem;
ssl_certificate_key example.key;
}
復制代碼

然后重啟Nginx即可。

該方法無需設置防火墻,設置較為簡單,但是需要額外一個域名。

遇到DDoS怎么辦?

如果域名之前從未用過,一出道就用上面提到的方法,基本上可以保證不會泄漏網站的真實IP。

但是不泄漏真實IP不代表不會被DDoS或者CC攻擊,遇到DDoS怎么辦?解決辦法主要有:

  1. 加錢上高防保平安;
  2. DNS解析域名到127.0.0.1保平安;
  3. 關機保平安。

請根據實際情況和業務需求采取相應措施。

最后修改:2020 年 10 月 17 日 04 : 11 PM
如果覺得我的文章對你有用,請隨意贊賞