10-10 traceroute 封包過濾範例 另一個重要的管理命令是 traceroute,當我們希望瞭解封包到達目的地的路徑時,就必須利用 traceroute 來追蹤封包所經過的路徑。入侵者常利用 traceroute 探測內部網路的架構,防火牆也大多會阻止 traceroute 封包進入內部網路,以達到隱密性的要求。 traceroute 是使用 ICMP 及 IP 標頭裡的 TTL(Time-to-Live)欄位,作為判斷已經追蹤過多少個網路端點(路由器)。一般情況下,封包每經過一個網路閘門 TTL 值就被減 1,如果路由器收到一個 TTL 值減 1 以後為 0 時,便會回送一個 ICMP Time Exceeded(Type 11)(逾時)給原發送端,並將該封包丟棄,traceroute 就是利用這種特性來追蹤路徑。它的運作情況如下:首先 traceroute 送出一個 TTL 為 1 的 IP 封包到目的主機,第一個收到的路由器將 TTL 減 1,丟棄該封包,並回送 ICMP 給原發送主機,這個過程確認了這條路徑的第一個路由器;接下來,traceroute 再送 TTL 為 2 的 IP 封包,又可以得到第二個路由器位址,如此重覆一直到封包到達目的主機為止。但當封包到達目的位址時,它的 TTL 同樣被減成 0,也回應 ICMP Time Exceeded 封包,發送端如何判斷封包已到達目的與否? 因為 traceroute 是以 UDP 封包格式發送,我們只要將 UDP 埠口設定在不可能使用的埠口,一般都會將它設定較大的值,通常是在 33434 到 33523 之間任一個即可。當目的主機收到後,判斷是自己的 IP 位址,但無此埠口服務,便會回應一個 ICMP Port Unreachable(埠口無法到達)給發送端。發送端就可利用『ICMP 埠口無法到達』和『ICMP 逾時』來判斷是否到達目的主機。一般封包的 TTL 欄位預設值為 255(如 ping),這可能造成 traceroute 的封包在網路上無窮的回繞,因此,traceroute 的 TTL 預設值為 30,表示最高可以追蹤 30 個經過的網路閘門,但可以設定改變其大小。
圖 10-17 為 traceroute 封包過濾範例,它可能通過防火牆的封包如表 10-12 所示。
如將圖 10-16 防火牆設定成允許內部主機以 traceroute 去追蹤外部網路,也就是說,允許內部主機的 traceroute 命令通過防火牆;但另一方面,不允許外部網路以 traceroute 命令來測試內部網路,則封包過濾規則如表 10-13 所示。
由上述表格可以發現,為了開放 tranceroute 命令,我們幾乎允許所有 UDP 封包通過防火牆到達外部網路;開放了這一條規則,可能會影響到其他連線的限制,這便是設定封包過濾規則的風險所在。 |
翻轉工作室:粘添壽
資訊與網路安全技術
翻轉電子書系列:
|