眾所皆知,iptables 的設定實在不是件很 friendly 的事,而且稍一設定有誤,可能結果就出乎意料之外。因此在設定 iptables 時,老手都建議一定要在這台電腦上旁設,千萬不要在遠端設定,以免出問題時,要修改就很麻煩了。
有沒有其它的輔助方法呢?如果你有這個需求,不妨考慮 shorewall 這個軟體。在 UBUNTU 上安裝 shorewall 是很容易的,如下:
# apt-get install shorewall
這樣 shorewall 就安裝好了。shorewall 會在以下目錄安裝一些東東:
1. /sbin/shorewall
這個是 shorewall 的執行程式
2. /etc/shorewall
shorewall 的一些相關設定檔都是放在這裏,安裝完後只有一個 shorewall.conf 檔,另外一些必需的檔案,如 zones、policy、interfaces、rules.. 必需由我們產生。
shorewall.conf 這個檔案是 shorewall 的主要設定檔,在一般情況下,我們不用動到它
interfaces 則是我們電腦上的網路卡設定,一般都是 eth0
policy 這個是用來設定 shorewll 的內定規矩或策略
zones 這個比較難解釋,簡單的說就是一個區域,如以下在設定這個項目時,我們會用到 net 來代替連結到外部 internet 的區域,這就是一個 zone
rules 這個就是一些進出 firewall 的設定
3. /etc/init.d/shorewall
在 /etc/init.d/ 下的這些檔案都是一些設定檔,這可讓 shorewall 在開機時自動啟動。不過還有另一個地方需要設定,就是將 /etc/default/shorewall 檔案中的 startup=0 改為 startup=1,這樣 shorewall 在電腦啟動時,就可以自行啟動了。
4. /usr/share/shorewall/
這個目錄下都是一些預先設定好的協定,如
action.AllowDNS
action.AllowFTP
share/shorewall/action.AllowIMAP
action.AllowPing
action.AllowPOP3
action.AllowSMTP
..... 以下略 ....
不妨看一下其內容,就可了解這是做什麼用的,這可用來簡化我們設定 shorewall 的 rules。這在設定 rules 這個檔案時會加以說明。
5. /usr/share/doc/shorewall/default-config
前面說過,在 /etc/shorewall/ 這個目錄下都是 shorewall 的相關設定檔,除了 shorewall.conf 外,一般還需要 interfaces、zones、pilicy 及 rules 這四個檔案。
在這個目錄下有一些類似的檔案可供參考與修改,不妨將相關檔案 co 到 /etc/shorewall/ 這個目錄下,再做修改成符合自己需求的樣示,這樣可節省不少時間;同時參考這些檔案內部的說明,也有助於對其運作的了解。
/usr/share/doc/shorewall/default-config/zones
/usr/share/doc/shorewall/default-config/policy
/usr/share/doc/shorewall/default-config/interfaces
/usr/share/doc/shorewall/default-config/rules
---------------------------------------------------------------------------------
可以把 shorewall 想像成將一些煩人的 iptables 設定及行為都以一些設定檔來設,這樣就可以簡化設定了。另外個人覺得 shorewall 好似一些硬體 firewall,這類產品通常也是將一些設定規格、檔案化,於是設定 firewall 就給它很容易了。
首先說說我的環境及使用需求:
1. 環境
單一固定 ip,不使用 nat 功能
介面卡為 eth0
系統開放 smtp、pop3、dns、http
2. 使用需求
對外連線不限制,但由外連到這台電腦時,只開放如上的一些服務(port)
要注意的是 shorewall 需要 iproute 這個套件,我們可藉由
# which ip
來查是否已經安裝了 iproute 這個程式,其中 ip 是 iproute 的安裝後的一個程式
再來談談 shorewall 的設定。如前所言,shorewall 將一些 iptables 的相關煩人設定都已規格及檔案化,所以我們只要修改相關的設定檔(這些檔案都在 /etc/shorewall/ 目錄下),這樣是不是很簡單。
1. interfaces
這個檔案用來設定使用的網路介面,一般我們設成這樣即可
#ZONE INTERFACE BROADCAST OPTIONS
net eth0 detect
2. policy
用來設定 shorewall 的內定政策,可設成這樣
#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST
fw net ACCEPT
net all DROP info
all all REJECT info
其中 fw 代表 firewall(也可想像成內部到外面的 internet),所以第一項表示由內連到時一律開放。
第二項表示由外連到內時一律 drop 掉,所以待會我們需在 rules 中將我們所開放的服務(port)開放。
第三項是 shorewall 必需加上的,同時需在最後一個項目
3. zones
這項設定成以下即可
#ZONE DISPLAY COMMENTS
net Net Internet
這個 net 在 policy 及 interfaces 中也有設定,它們之間有著共同關連。
4. rules
這個檔案是重點中的重點,由於在 policy 中內定由內至外一律開放,但由外至內全部關閉,所以像我的情形有開放 smtp、web、dns、pop3 時,就必需在這個檔案中加以註明,如下:
#ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/
# PORT PORT(S) DEST LIMIT GROUP
AllowWeb net fw
AllowDNS net fw
AllowSMTP net fw
AllowPOP3 net fw
這些 Allow* 是從那來的呢,請參考上面的說明,這些可說是 shorewall 先定義好的一些服務,所以我們可直接叫用,我們如果不用這種方式,也可用以下的格式(以 http 為例):
ACCEPT net fw tcp 80
上項設法和 AllowWeb net fw 是一樣的。這是說由 net 到 fw(記得這兩項的意義嗎)加以開放。
---------------------------------------------------------------------------------
除了在先前說過的在電腦啟動時,開啟 shorewall 服務的方式外。我們可使用以下的方式來啟動:
# shorewall start
要停止 shorewall
# shorewall stop
重新啟動 shorewall
# shorewall restart
另外 shorewall 這個指令有一些好用的其它參數,不妨使用 shorewall help 來了解一下
---------------------------------------------------------------------------------
shorewall 官方網址:
http://www.shorewall.net
參考設定資料:
http://www.shorewall.net/2.0/standalone.htm
沒有留言 :
張貼留言