SuSEfirewall2 是讀取 /etc/sysconfig/SuSEfirewall2
中變數集的程序檔,可以產生一組 iptables 規則。它定義三個安全性區域,但是以下範例組態僅考慮第一個和第二個區域:
假設沒有方法可以控制外部網路上發生的情況,因此需要保護主機。在大部分的情況中,外部網路就是網際網路,但是也可能是其他不安全的網路,例如 WLAN。
這是指私用網路,通常是指 LAN。如果此網路上的主機使用私用範圍的 IP 位址 (請參閱第 30.1.2 節「網路遮罩與路由」),請啟用網路位址轉譯 (NAT),這樣內部網路上的主機即可存取外部網路。
儘管外部及內部網路可以連接位於此區域中的主機,但是這些主機本身無法存取內部網路。這種設定可以在內部網路前加上額外的防護線,因為 DMZ 系統與內部網路是隔離的。
過濾規則集未明確允許的任何網路流量類型會由 iptables 封鎖。因此,具有內送流量的每個介面必須放置在三個區域中的其中一個。對於每個區域,定義允許的服務或通訊協定。規則集僅套用到遠端主機產生的封包。本地產生的封包不會被防火牆攔截。
使用 YaST 可以執行組態 (請參閱第 43.4.1 節「以 YaST 設定防火牆」)。也可以在檔案 /etc/sysconfig/SuSEfirewall2
中手動進行,該檔案的註解完整。不僅如此,在 /usr/share/doc/packages/SuSEfirewall2/EXAMPLES
中還提供一些範例案例。
![]() | 自動防火牆組態 |
---|---|
在安裝後,YaST 在所有已設定的介面上會自動啟動防火牆。如果已設定系統並在系統上啟用,YaST 會使用伺服器組態模組中的 或 選項,以修改自動產生的防火牆組態。有些伺服器模組對話方塊具有 按鈕,可以啟用其他服務和連接埠。YaST 防火牆組態模組僅能啟用、停用或獨立重新設定防火牆。 |
YaST 的圖形組態對話方塊可從「YaST 控制中心」存取。選取
+ 。該組態一共分成七個部份,可以在左手邊的三個結構直接存取。在此對話方塊中設定啟動行為。預設的安裝中,會自動啟動 SUSEfirewall2。您也可以在此啟動和停止防火牆。若要在執行中的防火牆設定新的設定,請使用
。所有已知的網路介面都列在這裏。若要從區域移除介面,請選取介面,按
後選擇 。若要新增介面至區域,請選取介面,按 後選擇任何可用的區域。您也可以使用 ,以自己的設定建立特殊的介面。您需要此選項以從系統提供服務至受保護的區域。按照預設值,只會保護系統不受外部區域的侵犯。明確的規範允許外部區域可使用的服務。在
中選取所需的區域後,啟用清單中的服務。偽裝可將內部網路隱身於外部網路,如網際網路,但允許內部網路的主機存取外部網路。從外部網路發出對內部網路的要求會遭到封鎖,但是從內部網路發出的要求,從外部看起來會像是從偽裝伺服器發出。如果內部機器的特殊服務需要開放給外部網路使用,可以針對服務增加特殊的重新指向規則。
在此對話方塊中,已設定允許廣播的 UDP 埠。新增必需的連接埠號碼或服務到適當的區域,由空格分隔。請參閱 /etc/services
檔案。
不被接受的廣播紀錄可以在此啟動。這有可能會有問題,因為 Windows 主機使用廣播瞭解彼此,也因而產生許多不被接受的封包。
在此對話方塊設定 IPsec 服務是否可供外部網路使用。在
下,設定可信任的封包。有兩種登入規則:接受與不接受封包。不被接受的封包包括 DROPPED 或 REJECTED。為這兩個封包選取
、 或 。當完成防火牆組態時,請按
結束此對話方塊。開啟防火牆設定的區域導向摘要。在此,勾選所有設定。所有已允許的服務,埠和通訊協定都會列在此摘要中。若要修改組態,使用 。按 可儲存您的組態。
以下段落提供成功組態的逐步指示。每個組態項目會依據是否與防火牆或偽裝功能相關加以標示。無論是否合適,均使用埠範圍 (例如,500:510
)。這裡並沒有涵蓋組態檔中所提與 DMZ (廢除區域) 相關的觀點。這些觀點僅適用較大型組織的更複雜網路基礎結構 (公司網路),因為需要全面的組態以及對該主題的深入瞭解。
首先,使用 YaST 模組系統服務 (Runlevel) 以啟動 runlevel 中的 SUSEfirewall2 (最有可能是 3 或 5)。它在 /etc/init.d/rc?.d/
目錄中會設定 SUSEfirewall2_* 程序檔的符號連結。
FW_DEV_EXT
(防火牆、偽裝)
連結到網際網路的設備。如果是數據機連接,請輸入 ppp0
。如果是 ISDN 連結,請使用 ippp0
。DSL 連接則使用 dsl0
。指定 auto
使用與預設路由對應的介面。
FW_DEV_INT
(防火牆、偽裝)
連結到內部私用網路的設備 (如 eth0
)。如果沒有內部網路且防火牆僅保護執行的主機時,請留置空白。
FW_ROUTE
(防火牆、偽裝)
如果需要偽裝功能,將此設定為 yes
。外界將無法看到您的內部主機,因為網際網路路由器會忽略其私用網路位址 (例如,192.168.x.x
)。
對於沒有偽裝的防火牆,如果想要允許存取內部網路,僅將此設定為 yes
。在這種情況下,您的內部主機需要使用正式註冊的 IP 位址。不過,通常您「不」應該允許外界存取您的內部網路。
FW_MASQUERADE
(偽裝)
如果需要偽裝功能,將此設定為 yes
。這可以提供網際網路主機,建立虛擬/直接的連接到網際網路。在內部網路和網際網路的主機之間使用代理伺服器較為安全。對於代理伺服器所提供的服務並不需要偽裝。
FW_MASQ_NETS
(偽裝)
指定要偽裝的主機或網路,在個別項目之間加上空格。例如:
FW_MASQ_NETS="192.168.0.0/24 192.168.10.1"
FW_PROTECT_FROM_INT
(防火牆)
將此設定為 yes
,保護您的防火牆主機免於來自內部網路的攻擊。如果確實啟用,只有內部網路才可以使用服務。另請參閱 FW_SERVICES_INT_TCP
與 FW_SERVICES_INT_UDP
。
FW_SERVICES_EXT_TCP
(防火牆)
輸入應該可用的 TCP 連接埠。對於不應該提供任何服務的一般家用工作站,請留置空白。
FW_SERVICES_EXT_UDP
(防火牆)
除非執行 UDP 服務且希望讓外界使用,否則請留置空白。使用 UDP 的服務包括 DNS 伺服器、IPsec、TFTP、DHCP 以及其他。如果要讓外界使用,輸入要使用的 UDP 連接埠。
FW_SERVICES_INT_TCP
(防火牆)
利用此變數,定義可讓內部網路使用的服務。其表示法與 FW_SERVICES_EXT_TCP
相同,但是設定是套用到「內部」網路。只有在 FW_PROTECT_FROM_INT
設定為 yes
時,才需要設定變數。
FW_SERVICES_INT_UDP
(防火牆)
請參閱 FW_SERVICES_INT_TCP。
設定防火牆後,測試您的設定。防火牆規則集的建立是以 root 身份輸入 SUSEfirewall2 start
。接著使用 telnet,例如,從外部主機查看是否已實際拒絕連接。之後,檢視 /var/log/messages
,在其中應該會看到如下內容:
Mar 15 13:21:38 linux kernel: SFW2-INext-DROP-DEFLT IN=eth0 OUT= MAC=00:80:c8:94:c3:e7:00:a0:c9:4d:27:56:08:00 SRC=192.168.10.0 DST=192.168.10.1 LEN=60 TOS=0x10 PREC=0x00 TTL=64 ID=15330 DF PROTO=TCP SPT=48091 DPT=23 WINDOW=5840 RES=0x00 SYN URGP=0 OPT (020405B40402080A061AFEBC0000000001030300)
其他測試防火牆設定的套件為 nmap 或 nessus。安裝各自的套件後,nmap
的文件可在 /usr/share/doc/packages/nmap
中找到,而 nessus
的文件則位於 /usr/share/doc/packages/nessus-core
目錄中。