防范DDoS攻擊最主要的手段是加錢上高防,同時隱藏網站真實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 linedo
  firewall-cmd --zone=trusted --add-source=$linedone < 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地址

2. 設置網站只監聽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密鑰路徑;
    # 其他設置}

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

CloudFlare設置ipv6解析

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

1. 絕大多數情況下,人們都會理所當然的找IPv4,不會想到你的網站根本不存在IPv4網絡上;

2. 相對于IPv4,IPv6的地址段實在太龐大。即使有zmap這種幾小時掃描完全球ipv4段的神器,或者Shodan搜索引擎,也很難從海量地址中尋找單個地址。

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

# 首先將cf的ip加入白名單while read -r linedo
  firewall-cmd --zone=trusted --add-source=$linedone < cf_ips.txt# 然后屏蔽其他地址對ipv6的訪問權限firewall-cmd --add-rich-rule="rule family='ipv6' source address='::0/0' drop"

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

CNAME

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

1. CDN回源時使用CNAME方式回源到另一個主機名上。例如tlanyan.pp.ua回源的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即可。

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

注意事項

以上操作只能讓他人在明面上無法直接訪問真實服務器,但請仔細閱讀 隱藏網站的真實ip:https://itlanyan.com/hide-site-real-ip/ 中的建議,防止有發送郵件、WordPress pingback等隱式暴露IP的行為。

遇到DDoS怎么辦?

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

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

1. 加錢上高防保平安;

2. DNS解析域名到127.0.0.1保平安;

3. 關機保平安。

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