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