其實本來沒有想要這麼快弄防火牆,畢竟遊戲正在收尾,忙都忙死了。
但很不幸的,最近Server有兩次不明原因死機(電源仍開著,但已無任何回應)
,只能用電源鍵重開機了。這情況有點像被攻擊,但眼下跟本沒時間追查。
於是,最快的方法就是先啟動防火牆了。
是的,這次就是繼續上次架站時,被暫時乎略的「防火牆」─ iptables
總之先介紹一下我家裡的網路配置,比較好了解我要做的事:
因為攻擊應該是來自外網,也就是透過Linux Server的ppp0介面的連入,
所以現在要做的事情就是先擋掉ppp0的所有連線,再來一個一個開例外。
(eth0對我的設置來說是內網,就完全pass)
# 擋下所有來自ppp0介面的所有連線
iptables -A INPUT -i ppp0 -j DROP
# 檢視目前的防火牆規則(含編號顯示,方便之後用编號操作)
iptables -L -v --line-numbers
看一下結果:
這時,如果是用固定IP去連Linux Server就會連不進,別說連不進,連ping都ping不到。
接下來就是要新增例外了,因為我的工作機都是用wifi連線上網的,所以只要對無線AP的撥接浮動IP:220.129.142.27,加入例外就可以了。唯一一個固定IP已經被Server占用,所以無線AP的對外IP是浮動的,不過沒關係,只要不重開機這個IP就不會變。
# 在檔下pppoe的連入連線基礎上,新增一個例外,這裡要用insert (-I),不要用append (-A)
iptables -I INPUT -i ppp0 -s 220.129.142.27 -j ACCEPT
# 檢視目前的防火牆規則(含編號顯示,方便之後用编號操作)
iptables -L -v --line-numbers
再看一下目前的所有規則:
接下來,現在可以試著用筆電(192.168.2.x)去ping Linux Server的外網IP:1.x.x.x,應該就能ping到了。不過這個只是指令測試啦,畢竟是內部網路,本來就能用192.168.1.102去連Linux Server。
最後順便介紹一下要怎麼刪除規則,如果不小心用錯還可以刪掉。
# 刪除位於INPUT鏈裡的第一個規則
iptables -D INPUT 1
刪除時用編號就很快,這就是為什麼在列舉所有規則時都要加--line-numbers
然而,這台Server主要是用來處理SVN,所以接下來要開放所有SVN連入。
我這裡用Port來擋,SVN port是3690
# 允許所有SVN連入TCP port 3690
iptables -I INPUT -i ppp0 -p tcp --dport 3690 -j ACCEPT
再來看一下結果
以上,這樣這台Server就只針對port 3690來做服務,其他全部會被擋掉,包含ping
但如果無論如何都想要ping,也可以用加入這個規則:
# 允許別人來測心跳 ping (這個非必要)
iptables -I INPUT -i ppp0 -p icmp --icmp-type echo-request -j ACCEPT
最後的最後,如果覺得自己設定得很滿意,就可以存檔了。
這部分Slackware只有留一個接口給你接,其他什麼都沒有喔。
這個接口是/etc/rc.d/rc.inet2裡面有一段code
if [-x /etc/rc.d/rc.firewall ]; then
/etc/rc.d/rc.firewall start
fi
也就是說,如果 /etc/rc.d/rc.firewall 這個檔案存在的話就去執行。
這邊的意思就是我們要自行發揮啦。網路上查了幾種方式,大概這種最普遍了。
# 間單來說就是把iptables-save的資料導到/etc/firewall.rules
iptables-save > /etc/firewall.rules
# 然後再建立一個/etc/rc.d/rc.firewall檔案,
# 內容是iptables-restore < /etc/firewall.rules
echo "iptables-restore < /etc/firewall.rules" > /etc/rc.d/rc.firewall
# 設定可執行權限
chmod 744 /etc/rc.d/rc.firewall
# 重開機驗證
reboot
好了,iptables防火牆的設定就先到這!後續如果有想到再補充了。
當然這算是學習筆記啦,網路上有更多更厲害的設定可以google看看喔。
啊如果有高手有更好的建議也歡迎分享討論,謝謝。