Shorewall – a Frontend of iptables

之前在使用 linux cd router 時, 看到有內建 shorewall, 所以說就拿來玩玩看.

玩了一下, 感覺是個還不錯的 frontend, 至少不用記太多參數 :p

還有內建一些 Traffic Shaping 及 QoS 的 patterns, 可以少寫某些 rules, 只要寫與使用環境相關的 firewall 設定便可.

在 debian 底下, 只要 apt-get install shorewall 就好.

Main Configuration Files:

1. /etc/shorewall/interfaces

interface 設定檔在此, 如果要設定哪個 interface 對外, 哪個 interface 走 NAT 之類的, 在此設定

2. /etc/shorewall/zones

設定你的 network zone. 常用設定如對外網路, 對內網路, firewall. 這跑預設值就好.

3. /etc/shorewall/policy

設定 iptables 在 zones 的 default policy, 例如拒絕所有連入連線.

預設值是: 允許所有連出連線, 但是拒絕所有連入連線.

4. /etc/shorewall/rules

這邊就是設定你要允許哪些 services, ports 通過 firewall, 以及做 SNAT, DNAT 的 rules.

功能等同於 iptables -A INPUT (or OUTPUT) –sport (or –dport) -j ACCEPT.

在這邊, shorewall 提供了 Macro 的功能 (參照 /usr/share/shorewall/macro.services_name )

所以說, 例如你要允許 ssh 連線, 那只要下如此規則:

AllowSSH net fw

這樣就是允許 ssh 連線. 當然如果你看不習慣的話, 直接寫以下方式也是可以的:

ACCEPT net fw tcp 22

(上述規則用 iptables 解讀就是: iptables -A INPUT -i eth_in -p tcp –dport 22 -j ACCEPT)

當然實際上看過 macro.SSH 以後, 你會發覺, 其實寫的就是 ACCEPT net fw tcp 22 :p

還有, iptables 本來就提供的 limit rate 也是可以寫的

5. /etc/shorewall/shorewall.conf

這就是 shorewall 主設定檔的部份, 主要是控制啟動與 log 怎麼處理的問題.

若要將 shorewall 在開機時自動執行, 請 STARTUP_ENABLED=Yes .

詳細請參考 /usr/share/doc/shorewall/examples, 範例檔的註解寫的很清楚.

Limitiations:

1. 對 random port 的 service 會有問題 (e.g. : NFS)

請參考 Securing NFS 的設定方式, 這設定方法簡單說就是自己鎖定 port, 也增加被打的機率就是了 zzz

2. 請不要拿他來當 personal firewall, 因為他沒辦法設定允許某個程式通過 :p, 要的話, 請用 TuxGuardian.

3. 看 shorewall cannot do.

如果覺得 iptables 很難維護的人, 可以考慮看看 :p

廣告