本質上來說,shorewall是Iptables的配置工具。因為Iptables的語法晦澀難懂,命令繁多,難以記憶和理解。所以通過配置相對容易理解的shorewall進行防火墻的配置,之后shorewall會自動的調用Iptables完成配置。
一、下載安裝與卸載
1、下載
ShoreWall的官方網址為http://www.shorewall.net,在安裝之前先要去下載它的原始碼程序,地址在http://www.shorewall.net/download.htm這個頁面,您可以選擇一個Mirror站臺來下載,筆者是選擇USA的站點來下載,進入畫面之后,選擇一個您想要使用的版本,最新的版本已經出到了3.2,它的更新速度非常的快,隨后安裝即可
2、反安裝過程
Tarball:
請在原來的安裝目錄中輸入以下的指令:
#./uninstall.sh
這個指令會將shorewall的所有設定檔給移除掉。
RPM:
#rpm-eshorewall
二、編輯設定檔
安裝完畢后,必需先要設定各個設定檔才能啟動shorewall。
1、/etc/shorewall/shorewall.conf
shorewall.conf這個設定文件是整個軟件配置中最重要的一個檔案,里面有許多的設定,若是搞錯的話,很可能會造成shorewall的啟動失敗或是錯誤:
STARTUP_ENABLED=Yes |
預設是為No,如果您決定要使用shorewall來管理您的防火墻的話,那么強烈的建議您將這個選項設定為Yes。
LOGFILE=/var/log/messages |
設定記錄文件的位置,預設的記錄文件是messages這個檔案,您也可以指定另外的檔案,以區分防火墻及一般訊息,便于除錯時較能快速掌握狀況。
LOGNEWNOTSYN=info |
設定記錄文件的等級,一般來說shorewall的記錄是由syslog這只程序來進行,一共有八級,而shorewall預設的記錄等級為info,您可以參考/etc/syslog.conf來了解其它等級的記錄內容為何。
CONFIG_PATH=/etc/shorewall:/usr/share/shorewall |
設定shorewall的所有配置文件所存放的目錄位置為何,如果您的設定檔不是放在這個位置的話,請自行修改至正確的路徑。
FW=fw |
預設的防火墻接口名稱,在shorewall中,會內定一個防火墻的Zone名稱,這個名稱不需要在/etc/shorewall/zones中定義,直接可以在各個設定檔中使用。
IP_FORWARDING=On |
預設是打開的,這個選項代表是開啟IPForward的功能,如果您的Linux主機是獨立型的主機,并不需要使用到NAT或者是DNAT等功能的話,那么這個選項就可以把它給關閉。
以一個最簡單的網絡架構來做為設定的例子,以一臺Linux主機為主要單位,有兩張以太網絡卡,eth0是對外部的網絡卡,而eth1則是對內的網絡卡,內部局域網絡透過NAT連結到外部網絡,而這臺Linux主機同時具備有簡易防火墻的功能,針對下面的各個設定檔案做說明。
2、/etc/shorewall/zones
在zones這個檔案中,您可以定義您的網絡區域代碼,限制在5個或5個字符之下,總共有三個字段,分別說明如下:
ZONE:定義的名稱,限制在5個或5個字符以下。
DISPLAY:這個接口所顯示的名稱,通常和ZONE設定是一樣的。
COMMENTS:對這個接口的簡略說明。
那么在這個例子中,筆者就定義了二個接口,在zones的設定內容如下所示:
#ZONEDISPLAYCOMMENTS loc Local Localhost net Net Internet #LAST LINE - ADD YOUR ENTRIES ABOVE THIS ONE - DO NOT REMOVE |
其中loc就是對內的網絡接口,而net就是對外部網絡的網絡接口。
3、/etc/shorewall/interfaces
接下來就要建立網絡接口及ZONE的對照表了,前面說過eth0是對因特網的接口,而eth1是對內部局域網絡的接口,那么設定的內容如下所示:
#ZONE INTERFACE BROADCAST OPTIONS net eth0 xxx.xxx.xxx.128 loc eth1 192.168.1.255 dhcp #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE |
其中第一個字段就是對應到/etc/shorewall/zones的ZONE名稱,而第二個字段就是對應到在Linux系統中的接口名稱,在這個例子中,eth0是對外部網絡的接口,所以對應到net,而eth1是對內部局域網絡的接口,所以對應到loc,第三個字段是設定該網絡接口的BROADCAST,如果是Cclass的話,就是設定成x.x.x.255。而最后一個OPTIPNS的字段就是這個接口要用什么樣的功能,比方說在這個例子中,eth1接口還要負責DHCP配發的動作,所以就在OPTIONS的字段上加入dhcp的記錄,其它的功能請參照interfaces的批注,在此不做太多的說明。
4、/etc/shorewall/policy
這個檔案是設定整個大方向的防火墻政策,通常建議較安全的方案是先將所有由外而內的政策都設定成為拒絕,然后再一個一個的打開可用的port號,所以policy的設定內容如下:
#SOURCE DEST POLICY LOG LIMIT:BURST loc net ACCEPT net all DROP info all all REJECT info #LAST LINE -- DO NOT REMOVE |
其中第一行是允許由內部局域網絡連到外部網絡,第二行是將所有外部來的封包都丟棄,并記錄到記錄文件中,第三行的功能也是一樣。
5、/etc/shorewall/masq
這個檔案是設定讓內部的虛擬IP可以偽造真實的IP聯機出去,也就是NAT的功能,設定內容如下:
#INTERFACE SUBNET ADDRESS eth0 eth1 xxx.xxx.xxx.xxx #LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE |
其中INTERFACE是對外的網絡卡,而SUBNET則是對內部虛擬網絡的網絡卡,最后的字段ADDRESS則是對外網卡的真實IP,輸入完后就存檔離開。
最后再重新啟動shorewall的防火墻,請依照下列指令重新啟動
#shorewall check #shorewall restart #chkconfig --level2345 shorewall on |
完成!
雖然這樣子就完成了最基本的防火墻建置,所有由外部對內部的服務全部都被關閉,只讓內部的虛擬IP以NAT的方式聯機到外部網絡,這樣子就算是成功的建立一座防火墻了。