點解要防止IP洩漏
我地呢d係屋企開server既用家,被人炸ser真係全屋唔洗上網。開game server有大把痴線佬或者小學雞會炸鳩你server,為遊戲積分又好,為fun都好。
痴線佬一拎到屋企個public IP,你就玩完了。DDoS流量係講緊5Gbps起跳,你屋企通常得果最多1Gbps。就算你用10Gbps網絡,你都唔好以為10Gbps好多。
痴線佬/小學雞點炸人屋企
一張圖講晒。
呢張圖都有唔準確既地方—果d所謂booter,係Google search free booter
已經有幾個免費既,仲要威力唔差。唔一定要拎錢出黎先玩得DDoS。
基本保護措施
- 唔好開game server。
- DNS record跟足CloudFlare既呢個指示咁set。
- E-mail果d既MX record都route左過GMail,姐係跟足晒以上既指示。
基本上,你粒server既IP已經好難漏出黎。
但係呢,現實係冇咁理想。CloudFlare只會保護你個web server。除左web server之外,你可能都會開埋d SSH server或者FTP server。Web server既野set錯左,都會可能漏左自己粒IP出黎,而attacker有可能因為咁搵到你粒public IP跟住再炸你,因為損人不利己既野真係有痴線佬會做。
再加強保護
以下情況有機會令到你既public IP洩漏:
有網頁洩漏IP
你有一兩個web page漏左自己public IP出黎。我有兩個活生生既例子比到出黎:
我試過用一chatroom page黎做實驗,而果個page會log名+IP。我打左句野之後,我既名(Saren)同屋企public IP就被log低同出街,過幾日之後就被人炸。
我有setup Gitlab server。果個server d public project,入面全部指住我個SSH既URL,而SSH URL個domain係指住我個server既public IP,有機會因為咁而洩漏IP。我已經set晒所有project做internal/private,停用SSH URL。
從server既open port認得出你部機
你被人炸,所以你轉左IP,但新IP係相約既/18 /20 /22甚至/24 range度。同時,你部機既service有fingerprint,或者service port既combination係一樣。例如我既SSH server setup係8080 port,係呢個subnet入面係獨一冇二。
換句話講,attacker只要keep住scan x.x.0.0/16,搵到有人係8080開ssh,就知我個真IP。
對於我個人而言,有兩種解決方法:
Port knocking
白名單入面IP先可以access FTP/SSH server,否則一律用
iptables
DROP。將ipset
、iptables
、CloudFlare同埋網頁程式混用,可以做到呢個效果。你要去setup幾樣野:
- 一個神祕網址,例如你係
victim.com
既owner既話,就setuphttp://victim.com/fkubitch
,然後再用CloudFlare保護victim.com
。 - 入到果個網址既request IP,就會加入
ipset
白名單。網頁server要成功run到呢個command:# ipset add allow <IP>
- 係
iptables
入面加呢個rule:-A TCP -p tcp -m set --match-set allow src -m tcp -m multiport --dports 21,22 -j ACCEPT
好處:
- 你部屋企server完全變成隱形。
- 就算SSH/FTP server有0day漏洞都難以成為攻擊目標。
- 唔洗再被人撞密碼。
壞處:
- 需要一d寫程式技巧。
- HTTP server要有root access。
- Server reboot/去到咩新地方/用手機流動上網都要入一入個網址先。
- 一個神祕網址,例如你係
GRE Tunnel
想開game server又唔想比好貴租勁vps既話,GRE Tunnel係唯一既解決方案。Linux系統限定。
總之簡單講就係用其他街外server cover住自己既server,並且通常果d街外server既IP係DDoS protected或者係即棄式既。
其實set起上黎有d麻煩。逼不得已又或者有興趣既,可以參考下教學呢個網址,算幾詳盡: http://wiki.buyvm.net/doku.php/gre_tunnel
未來會試下教人用DigitalOcean / AWS / buyvm做round-robin fallback & monitoring & instance scaling。
雖然我自己都己經用左好多DDoS protected (會自己blackhole) 既IP set左個round-robin A record。已陣亡
$ dig gre.wtako.net
; <<>> DiG 9.10.3-P3 <<>> gre.wtako.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38517
;; flags: qr rd ra; QUERY: 1, ANSWER: 24, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;gre.wtako.net. IN A
;; ANSWER SECTION:
gre.wtako.net. 300 IN A 103.53.226.63
gre.wtako.net. 300 IN A 103.53.226.65
gre.wtako.net. 300 IN A 103.53.226.58
gre.wtako.net. 300 IN A 103.53.226.59
gre.wtako.net. 300 IN A 103.53.226.42
gre.wtako.net. 300 IN A 103.53.226.55
gre.wtako.net. 300 IN A 103.53.226.49
gre.wtako.net. 300 IN A 103.53.226.64
gre.wtako.net. 300 IN A 103.53.226.54
gre.wtako.net. 300 IN A 103.53.226.45
gre.wtako.net. 300 IN A 103.53.226.48
gre.wtako.net. 300 IN A 103.53.226.52
gre.wtako.net. 300 IN A 103.53.226.46
gre.wtako.net. 300 IN A 103.53.226.57
gre.wtako.net. 300 IN A 103.53.226.47
gre.wtako.net. 300 IN A 103.53.226.50
gre.wtako.net. 300 IN A 103.53.226.53
gre.wtako.net. 300 IN A 103.53.226.60
gre.wtako.net. 300 IN A 103.53.226.56
gre.wtako.net. 300 IN A 103.53.226.44
gre.wtako.net. 300 IN A 103.53.226.43
gre.wtako.net. 300 IN A 103.53.226.51
gre.wtako.net. 300 IN A 103.53.226.61
gre.wtako.net. 300 IN A 103.53.226.62
;; Query time: 9 msec
;; SERVER: 192.168.0.1#53(192.168.0.1)
;; WHEN: 二 3月 08 21:10:45 HKT 2016
;; MSG SIZE rcvd: 426
HTTP Server賣你屎忽
假設你個server仍然host緊http://victim.com
,當你被人炸,你轉完IP之後,你部server仲係expose緊一d web server既port,例如80, 443, 8080等。
Attacker掃你個IP range之後,會得到一堆有開web server既IP。佢之後可以就咁連下所有IP既web server port,睇下邊個IP會出302 redirect去http://victim.com
,果個IP之後就會被痴線佬炸。
即使你個web server set左直入http://<你個IP>會出403,attacker仍然可以寫script,request header寫明Host: http://victim.com
,邊粒IP出到http://victim.com
既網頁既話,果粒IP就係目標。
解決方法,都係用ipset
同iptables
,但今次係allow CloudFlare所擁有既IP,同埋屋企既private IP。
暫時CloudFlare有咁多IP:
103.21.244.0/22
103.22.200.0/22
103.31.4.0/22
104.16.0.0/12
108.162.192.0/18
131.0.72.0/22
141.101.64.0/18
162.158.0.0/15
172.64.0.0/13
173.245.48.0/20
188.114.96.0/20
190.93.240.0/20
197.234.240.0/22
198.41.128.0/17
199.27.128.0/21
屋企既private IP,黎黎去去都係10.0.0.0/8
、127.0.0.0/8
、172.16.0.0/12
同埋192.168.0.0/16
結論
樹大招風、槍打出頭鳥。唔想成為攻擊目標?
- 唔好開server,nas都唔好開。game server唔洗講。
- 唔好上論壇串柒柒,即使你串得起。呢個世界好多妒忌人既痴線佬。
參考父子騎驢既故事:
你點做人,或者唔做人,都會有人鬧你,所以請自求多福。
- 唔好上網,最好唔好做人。😂