基本觀念

以下介紹防火牆入門時,所需要的一些基本觀念。

TCP/IP

Figure 2. TCP/IP 四層架構

封包過濾

所謂封包過濾,是一種小軟體,它藉以檢查 IP 封包的表頭,來決定該封包的命運(接受/轉向/丟棄/拒絕)。在 Linux 中,封包過濾的功能,已整合進入 Linux 核心(kernel)之中。

如何得知核心目前是有支援封包過濾功能呢?

查看此檔 /proc/net/ip_fwchains 是否存在便知(適用 Linux kernel 2.1.x~2.x)。

若此檔不存在,則核心必須重新製作,打開封包過濾選項,重新編譯安裝之。

IP 封包,如下圖所示:

Figure 3. IP 封包

Figure 4. TCP 封包

封包過濾程式,即根據 IP 封包的表頭中的來源IP、目的IP、封包型態、取自TCP/UPD表頭的 port 及其它一些旗標資訊,來決定此封包最後的命運。

至目前為止,Linux 核心封包過濾已發展到了第四代:

第 1 代 : Linux 1.x 移植自 BSD 的 ipfw
第 2 代 : Linux 2.0 ipfwadm
第 3 代 : Linux 2.1~2.x ipchains
第 4 代 : Linux 2.4~ iptables

服務通道 (Service Ports)

所謂服務通道(port)是指:主機中應用程式對外服務的管道。

port 的範圍從 0 到 65535。1~1023 保留給系統專用,僅有 root 權限者才能使用,稱之為:privileged ports (特權通道)。1024 ~ 65535 則稱為 unprivileged ports (非特權通道)。

非特權通道有二種用途:

如下圖所示:

Figure 5. client 和 server 連線圖 (1)

Figure 6. client 和 server 連線圖 (2)

常見的服務通道

Table 1. port list

服務名稱port
ftp21
telnet23
smtp25
dns53
www80
pop3110
auth113
nntp119
ntp123
https443

IANA : port 的完整定義

IANA port numbers

封包的種類

有三種 IP 封包,我們稱之為 IP 網路訊息。這三種封包,正是封包過濾型防火牆所要專注的對象。它們各有不同的特性,如下所示:

其過程,如下圖所示。

Figure 7. ICMP ping and pong

Figure 8. UDP request/response

Figure 9. TCP 三向交握

私有 IP 空間

RFC 1918 裡規定了三段範圍的 IP,供私有網路(private network)實驗用途使用,在公開的網路上它們不會被路由,正因為這種特性,因此極適合拿它們當作內部網路的 IP,從而達到保護內部網路的目的。列出如下:

NAT

何謂 NAT ?

NAT 的 Network Address Translation 的簡稱,簡單來說,它是一種轉換位址的技術,經常運用在防火牆的建置上,使得內部的私有 IP,轉換成公開的 IP,而能和外界溝通。

IDS

何謂 IDS ?

IDS 是 Intrusion detection system 的簡稱(入侵偵測系統),它是一種監測封包進出、比對入侵型態、預防入侵攻擊,並能適時提出警告的防禦系統。

OLS3 推薦的 IDS 是 Snort,不輸商用專業級的入侵偵測系統。

Figure 10. 可愛的 Snort

DMZ

何謂 DMZ ?

DMZ 是 De-militarized zone 的簡稱(非軍事區),它是內部網路(軍事區)和外部網路之間的一小段網路,該區可受 IDS 的偵測保護,亦可受防火牆的監控,或受其它安全機制的檢測,有一點接近公開的網段,但卻可以受到整個防火牆系統的保護。

封包過濾預設政策(Default Packet-Filtering Policy)

有二種預設的政策,設定防火牆時,要選擇使用那一種。

  1. 丟棄所有,欲放行,需用設定將它打開。(deny-everything policy)

  2. 接受所有,欲丟棄,需用設定將它關閉。(accept-everything policy)

第一種比第二種安全,在設定上比較單純。但第二種,比較容易使用,唯較容易忽略了某些考量。