以下介紹防火牆入門時,所需要的一些基本觀念。
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 |
所謂服務通道(port)是指:主機中應用程式對外服務的管道。
port 的範圍從 0 到 65535。1~1023 保留給系統專用,僅有 root 權限者才能使用,稱之為:privileged ports (特權通道)。1024 ~ 65535 則稱為 unprivileged ports (非特權通道)。
非特權通道有二種用途:
開放給系統中其它應用服務程式使用,如 mysql 用 3306, X11 用 6000。
當使用 client 端程式(如 ssh),連接到其它 server 主機的服務時(如 ssh server),系統會在 1024 ~ 65535 中,隨機抽出一個未被佔用的 port,指定給 client 連線端,來當作 client 端這邊的通訊 port,此時 client端的IP、port 以及 server端的IP、port,四者形成連線時唯一的連結識別,當雙方完成連線所需的溝通時,我們說:client 端和 server 端的連線,已經建立(ESTABLISHED)。(我們稱這四者形成一組 socket pair。)
如下圖所示:
Figure 5. client 和 server 連線圖 (1)

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

Table 1. port list
| 服務名稱 | port |
|---|---|
| ftp | 21 |
| telnet | 23 |
| smtp | 25 |
| dns | 53 |
| www | 80 |
| pop3 | 110 |
| auth | 113 |
| nntp | 119 |
| ntp | 123 |
| https | 443 |
IANA : port 的完整定義
有三種 IP 封包,我們稱之為 IP 網路訊息。這三種封包,正是封包過濾型防火牆所要專注的對象。它們各有不同的特性,如下所示:
ICMP (network layer / IP control / status messages)
UDP (request / response)
TCP (syn, syn/ack, ack 三向交握)
其過程,如下圖所示。
Figure 7. ICMP ping and pong

Figure 8. UDP request/response

Figure 9. TCP 三向交握

RFC 1918 裡規定了三段範圍的 IP,供私有網路(private network)實驗用途使用,在公開的網路上它們不會被路由,正因為這種特性,因此極適合拿它們當作內部網路的 IP,從而達到保護內部網路的目的。列出如下:
Class A : 10.0.0.0/8 (整個 10.0.0.0 的 A Class 的 IP,約 1 千 6 百多萬個可用 IP
Class B : 172.16.0.0/12 (共 16 個 B Class 的 IP,由 172.16.0.0 ~ 172.31.0.0,約一百萬個可用 IP)
Class C : 192.168.0.0/16 (共有 255 個 C Class 的 IP,即:192.168.1.0 ~ 192.168.255.0,約 65000 個可用 IP
何謂 NAT ?
NAT 的 Network Address Translation 的簡稱,簡單來說,它是一種轉換位址的技術,經常運用在防火牆的建置上,使得內部的私有 IP,轉換成公開的 IP,而能和外界溝通。
何謂 IDS ?
IDS 是 Intrusion detection system 的簡稱(入侵偵測系統),它是一種監測封包進出、比對入侵型態、預防入侵攻擊,並能適時提出警告的防禦系統。
OLS3 推薦的 IDS 是 Snort,不輸商用專業級的入侵偵測系統。
Figure 10. 可愛的 Snort

何謂 DMZ ?
DMZ 是 De-militarized zone 的簡稱(非軍事區),它是內部網路(軍事區)和外部網路之間的一小段網路,該區可受 IDS 的偵測保護,亦可受防火牆的監控,或受其它安全機制的檢測,有一點接近公開的網段,但卻可以受到整個防火牆系統的保護。
有二種預設的政策,設定防火牆時,要選擇使用那一種。
丟棄所有,欲放行,需用設定將它打開。(deny-everything policy)
接受所有,欲丟棄,需用設定將它關閉。(accept-everything policy)
第一種比第二種安全,在設定上比較單純。但第二種,比較容易使用,唯較容易忽略了某些考量。