資訊與網路安全技術 第 十章 防火牆  上一頁      下一頁

 

10-7 TCP 封包過濾 範例:telnet

內容:

  • 10-7-1 TCP 封包過濾範例:telnet

  • 10-7-2 允許 telnet 無 ack 判斷

  • 10-7-3 允許 telnet 有 ack 判斷

  • 10-7-4 僅允許內部往外 telnet 連線

10-7-1 TCP 封包過濾範例:Telnet 連線

接下來,我們利用 Telnet 連線為範例來說明 IP/TCP 封包過濾規則的設定方法,以及是否加入 ACK 旗號可能出現的問題。圖 10-12 Telnet 連線範例,首先我們來觀察 Telnet 連線會產生哪些訊號,如下:(IP TCP 埠口位址皆為假設值,Telnet 埠口位於 23/tcp

10-12 IP/TCP 封包過濾範例

  • 外部使用者要求建立 Telnet 連線之封包:IP 標頭之目的位址為 163.15.2.3、來源位址為 138.4.5.23、協定是 TCPTCP 標頭之目的埠口為 23、來源埠口為 5860>1024)、ACK 未設定。

  • 內部主機回應 Telnet 連線之封包:目的位址=138.4.5.23、來源位址= 163.15.2.3、協定= TCP、目的埠口= 5860、來源埠口= 23ACK =1(有設定)。

  • 內部使用者要求 Telnet 連線到外部主機之封包:目的位址= 138.4.5.23、來源位址= 163.15.2.3、協定= TCP、目的埠口= 23、來源埠口= 4567ACK =0(未設定)。

  • 外部主機回應內部使用者 Telnet 連線之封包:目的位址= 163.15.2.3、來源位址= 138.4.5.23、協定= TCP、目的埠口= 4567、來源埠口= 23ACK = 1

吾人依照網路內外發送 Telnet 連線,可能產生的訊息建立一個『封包訊息表』,如表 10-2 所示。

10-2 Telnet 封包訊息表

序號

服務方向

封包

方向

來源

位址

目的

位址

封包型態

來源埠口

目的埠口

設定 ACK

1

出去

出去

任意

內部

TCP

>1024

23

No

2

出去

進入

內部

任意

TCP

23

>1024

Yes

3

進入

進入

任意

內部

TCP

> 1024

23

No

4

進入

出去

內部

任意

TCP

23

>1024

Yes

序號(1) 為內部工作站利用 telnet 連結外部工作站,所產生的封包訊息。序號(2) 是外部工作站同意 telnet 連結所產生的訊息。序號(3) (4) 則是外部工作站向內部發送 telnet 連線與回應所產生的訊息。接下來,我們依照幾個防火牆的安全措施,再參照『訊息封包表』,來建立『封包過濾規則表』,以及討論可出現哪些問題。

10-7-2 允許 Telnet ack 判斷

假設防火牆僅允許內部與外部之間利用 telnet 通訊,且不允許利用其他協定連線。假設吾人所採用的封包過濾表不考慮 ACK 訊號,依照表 13-2 的封包訊息表,所建立『封包過濾表』,如表 10-3 所示(未採用 ACK 旗號)。

10-3 Telnet 封包過濾規則表之一(無 ACK 旗號)

規則

封包方向

來源位址

目的位址

協定

來源埠口

目的埠口

措施

A

出去

內部

任意

TCP

>1023

23

允許

B

進入

任意

內部

TCP

23

>1024

允許

C

進入

任意

內部

TCP

>1023

23

允許

D

出去

內部

任意

TCP

23

>1024

允許

E

皆可

任意

任意

TCP

任意

任意

拒絕

在正常情況下,測試這些規則是否可行,如下:

  • 外部主機要求對內部主機做 Telnet 連線時,符合規則 C D,連線是許可的。

  • 內部主機要求對外部主機做 Telnet 連線時,符合規則 A B,連線是許可的。

  • 外部主機要求對內部主機做 FTP 連線(埠口為 TCP/21)時,不符合 ABC D 規則,且符合規則 E,封包被拒絕通過。

10-7-3 允許 Telnet ack 判斷

假設封包過濾如表 10-3 方式設定,其中沒有考慮到 ACK 旗號,吾人來探討它可能產生的漏洞與補救方法。一般製作過濾規則時,大多假設客戶端的傳輸埠口都大於 1024;而伺服端的傳輸埠口都小於 1024。但有許多情況並非如此,目前在 Internet 有些伺服器可能架設於 1024 以後的埠口上,譬如,較常見的 Proxy Server 便架設在 8080 埠口上,還有許多資料庫伺服器也是一樣;另一方面,客戶端的埠口也可以由使用者自行選定(並非一定是動態),甚至可以使用小於 1024 的埠口(假設使用者有系統管理的權限),然而上述的假設是非常危險的。

舉一個簡單的例子,原來圖 10-11 架構是僅允許 telnet 連線通過,但內部網路有一個 X-Server 設定在 TCP/6000 埠口上,並不允許外部使用者透過防火牆進入連線。外部入侵者發現了這個伺服器之後,並利用自己主機的 23 埠口來要求連線,所傳送的封包如表 10-4

10-4 X-Server 訊息表

服務方式

封包方向

來源位址

目的位址

封包型態

來源埠口

目的埠口

 

要求連線

進入

外部

內部

TCP

23

6000

符合規則 B

同意連線

出去

內部

外部

TCP

6000

23

符合規則 D

結果發現這個連線是被允許的,其中原來規則 B 是內部網路連結(Telnet)到外部網路時,防火牆讓外部網路的回應訊息進入所使用的,竟被用來同意外部網路要求連結內部網路的 X-Server。最主要原因是,防火牆並未判別『要求連線』和『回應連線』封包之間的不同點,如何去判別它們之間的不同,這需視 ACK 旗號而定;如果 ACK 旗號未設定,則表示是『要求連線』封包;否則為其它封包。

如果您堅持不使用 ACK 旗號,是否可達到防護的能力,答案當然是肯定的。但您必須非常清楚系統上到底有多少伺服器被啟動,並且針對每一個伺服器去做限制的過濾規則。我們用上述的例子,假設系統中有一個 X-Server 位於 TCP/6000 埠口上,並不願意讓外界使用,則防火牆設定規則如表 10-5

10-5 Telnet 封包過濾規則表之二(無 ACK 旗號)

規則

封包方向

來源位址

目的位址

協定

來源埠口

目的埠口

措施

A

出去

內部

任意

TCP

>1023

23

允許

B

進入

任意

內部

TCP

23

>1024

允許

C

進入

任意

內部

TCP

>1023

23

允許

D

出去

內部

任意

TCP

23

>1024

允許

E

進入

任意

內部

TCP

>1023

6000

拒絕

F

出去

內部

任意

TCP

6000

>1023

拒絕

G

皆可

任意

任意

TCP

任意

任意

拒絕

上表中增加了規格 E F 便可限制外部使用者存取 X-ServerTCP/6000),接下來,我們來探討加入 ACK 旗號的現象。

假設允許內部與外部網路之間的 Telnet 連線,但拒絕其它連線;還是利用前面的『封包訊息表』來設定規則,但如考慮到 ACK 旗號,則設定規則如表13-6

10-6 Telnet 封包過濾規則表之三(有 ACK 旗號)

規則

封包方向

來源位址

目的位址

協定

來源埠口

目的埠口

ACK 設定

措施

A

出去

內部

任意

TCP

>1023

23

皆可

允許

B

進入

任意

內部

TCP

23

>1024

允許

C

進入

任意

內部

TCP

>1023

23

皆可

允許

D

出去

內部

任意

TCP

23

>1024

允許

E

皆可

任意

任意

TCP

任意

任意

皆可

拒絕

當過濾規則設定好之後,如前述圖 10-12 範例,入侵者欲以來源埠口 23,連接內部 X-ServerTCP/6000)的運作情形變為:

  • 入侵者要求連線的封包:來源位址 = 外部主機、目的位址 = 內部主機、協定 = TCP、來源埠口 = 23、目的埠口 = 6000ACK = 否。可以比較一下規則 B,規則 B 上的 ACK 必須是被設定的,因此不符合規則 B 的條件,此封包是被拒絕的。

  • X-Server 回應入侵者的封包:來源位址 = 內部主機、目的位址 = 外部主機、協定 = TCP、來源埠口 = 6000、目的埠口 = 23ACK = 是。可以比較一下規則 A,它是被允許通過的,但這個封包是在要求連線封包可以進來的情況下,才有可能發生,所以永遠不會發生。

10-7-4 僅允許內部往外 Telnet 連線

假設只允許內部使用者以 Telnet 連線到外部主機,但不允許外部使用者連線到內部主機;還是利用上述的『封包訊息表』,所設定的過濾規則如 10-7

10-7 Telnet 封包過濾規則表之四(有 ACK 旗號)

規則

封包方向

來源位址

目的位址

協定

來源埠口

目的埠口

ACK 設定

措施

A

進入

任意

內部

TCP

>1023

23

皆可

允許

B

出去

內部

任意

TCP

23

>1024

允許

C

皆可

任意

任意

TCP

任意

任意

皆可

拒絕

由以上的過濾規則範例,我們大略可以知道設定規則最基本的原則如下:首先所有可能進出的封包都設定為『拒絕』(如上述的規則 C);欲開放哪一種服務再依照該服務的埠口、協定設定開放規則;接下來,必須追蹤所開放的規則中是否有漏洞,如有的話,必須針對漏洞找出原因,並且將它設定成『拒絕』。

主講人:粘添壽博士

 

資訊與網路安全技術