觀點

不可埋沒的資安寶藏-路由器紀錄

2005 / 11 / 04
ERIC COLE
不可埋沒的資安寶藏-路由器紀錄

在企業網路中,任何對內、對外的封包都會經過路由器(Router),路由器會根據定義的存取控制清單(ACLs, Access control list)來過濾網路之間的流量。路由器就像是網路上的警察,可惜許多管理者沒讓它發揮所長,浪費了它潛在的功能。若能好好地使用路由器,可以協助找出、並解決網路上許多問題。
路由器的紀錄檔(logs)是企業網路安全資訊裡的寶藏,如果能有效地進行分析,可以協助管理者主動地修正防火牆的設定問題、調校入侵偵測系統(IDS),以及規劃網路安全架構。
觀念其實很簡單,只要摸清楚,什麼在你家門外,而什麼東西跑進你家裡去。
路由器本身便可儲存紀錄,但是有其容量限制。本文第一課就是『先建立一個syslog伺服器來儲存你的外部與內部路由器的紀錄,這台伺服器也可以收納數個路由器所丟出來的紀錄。』做更有效率的儲存及分析。由這些資訊,管理者就可以對各種網路設備的紀錄來做稽核動作。不過本文將著重與防火牆、入侵偵測系統的關係。首先我們還是先來看看怎麼使用script來將雜亂無章的紀錄資訊減少成可以分析的東西。
善用Script
把路由器log導出成一般文字檔很簡單,但是把所有內部與周邊路由器的紀錄蒐集起來,然後解析成有意義的安全資訊卻不容易。
Scripts可以使收取與解析logs自動化,你所撰寫的scripts必須要反應你的網路安全政策-『像是什麼封包你不允許通過。』在外部流量中,最需要注意的無外乎是RPC和SNMP Query以及NetBIOS掃描,這些都不應該進入你的網路。對於NetBIOS協定,關閉TCP/UDP通訊埠135-139和通訊埠445便可以阻止駭客在發動攻擊前的掃描、探測行為。
管理者可以用任何語言撰寫script,在設定政策規則時便可以開始著手撰寫。使用PERL,並且善用grep指令便可以撰寫出簡單又彈性的script。Grep是個強大的script輔助工具,它可以讓你快速的分離重要資訊。想想看,要在20,000行的log中找出DNS攻擊,是多麼令人抓狂的事情,但是若是能利用script輔助,將相關流量從這麼多的資訊中解析出來,發現只有30行是跟DNS有關的流量,這樣一來分析安全紀錄就不是那麼痛苦的事情了。

檢驗防火牆規則
防火牆優劣取決於其規則,建立與維護一個有效率的規則集(Rule sets)不容易,就算已經設定了一個很優的規則,也會因為新的漏洞或時間改變而逐漸失去其功效,通常都是在蠕蟲打進家門裡才會發現問題。
而現在,在出現問題前,你可以利用內部或外部路由器的紀錄來找出許多規則上的問題。外部路由器紀錄應該是顯示所有嘗試要進入網路的封包,而內部路由器紀錄則是顯示那些已經進入的封包。如果你的防火牆設定良好的話,內部路由器的紀錄應該只有防火牆規則所允許進入的封包紀錄,所以當發現內部路由器紀錄有不應該出現的封包類型時,就應該知道是規則設定有誤了。
防火牆都應該將阻擋封包或是違反政策的動作紀錄下來,一個設定不良的防火牆可能會讓惡意封包通過並且沒有做任何紀錄。
主動去分析這些log,在攻擊成功前你就可以偵測到它們或是提早修正防火牆的不良設定。舉例來說,仔細分析log後發現,從某個來源IP發出了許多連線,這種行為可能就是在進行Portscan。

驗證入侵偵測系統
入侵偵測系統所產生的假警報(False alarm),就像狼來了這個故事一樣,讓資訊安全人員耗盡心力在追查無意義事件,最後,安全人員對入侵偵測系統的能力喪失信心,使得其無法發揮原本的功效。
但是,藉由路由器的紀錄,你可以好好地重新調校入侵偵測系統的設定,降低其誤判率,從紀錄中,將實際發生的攻擊與來源,與入侵偵測系統的紀錄做比對,你可以讓入侵偵測系統做更有效的運作。
入侵偵測系統基本上是一個具備特徵資料庫的Sniffer,可鑑別出網路異常或被禁止的流量。因此在某個觀點上,入侵偵測系統和路由器的紀錄會顯示相同的結果。兩者最大的差異是在,路由器紀錄可以得知封包的進出點,而入侵偵測系統可以看到封包內容。當擁有許多顆路由器資訊時,這時便很重要了,這些路由器資訊可以提供管理者更多的事件判斷依據。
舉例來說,在蠕蟲事件爆發時,入侵偵測系統僅能得知所監控網路上的惡意流量,管理者可由入侵偵測系統得知哪幾個機器有攻擊行為。雖然因為效率問題,你不一定能夠得知所有路由器流量資訊。但仍可從路由器紀錄得知,顯示蠕蟲的來源點是從公司外部網路到合作廠商的線路,而非防火牆外的Internet來的。而這種分析的技巧就是如何取得這些資訊並且找出其關聯性。Scripts可以定時收取log,並且與入侵偵測系統上的資訊比對來達到這個目的。有些入侵偵測系統允許撰寫外部scripts,即時收取路由器上的資訊,來針對可疑的事件與警報來做確認的動作。

網路安全好幫手
雖然路由器紀錄可以拿來稽核防火牆以及入侵偵測系統,同樣的原則也可以應用在其他能夠產生紀錄的網路設備。
許多企業防火牆有提供VPN的功能,路由器紀錄資訊同樣也可以告訴這些VPN設備是否有遭受攻擊:VPN資訊會顯示合法的連線建立資訊,因此藉由比對路由器紀錄資訊,可得知哪些是針對VPN的攻擊。
路由器資訊也可以協助誘捕陷阱(Honeypot)來進行分析,誘捕陷阱是用來故意給駭客入侵的機器,藉以得知駭客行為模式,而誘捕陷阱沒有任何保護措施,所以路由器紀錄可以提供系統管理者做為事件分析與追查的資訊依據。
路由器可以為網路安全更盡一份力量:調查網路事件、稽核、執行網路政策。路由器本身雖然不是完善的安全解決方案,但是若與其他網路安全設備配合,便可以強化企業的安全架構。

本文作者ERIC COLE,CISSP,他是Sytex集團的首席科學家,也是Hackers Beware與Network Security Bible的作者,曾任SANS的講師,Honeynet計畫的成員,如果有任何建議請來信至iseditor@asmag.com

一個簡單的紀錄檔解析程式:底下是一個簡易的路由器解析程式,第一步先將紀錄檔拷貝至一個新位置,可確保原始紀錄的完整,本程式使用grep指令,將可能的攻擊資訊匯出成不同的檔案以便進一步地分析。(例如:異常大量的TCP reset封包、ICMP unreachable封包)
cp /var/log/messages.1 /root/logcheck/full_router.log
cd /root/logcheck
grep ' R ' full_router.log > resets.txt
grep udp full_router.log | grep '\.53[: ]' > dns_udp.txt
grep tcp full_router.log | grep '\.53[: ]' > dns_tcp.txt
grep '\.25: ' full_router.log | grep ' S ' > smtp.txt
grep '\.22[: ]' full_router.log > internal_ssh.txt
grep '\.123: ' full_router.log > ntp.txt
grep '\.3307[: ]' full_router.log > op-session-proxy.txt
grep unreachable full_router.log > icmp-unreachables.txt

SCRIPTS 活用路由器
你可以使用路由器來協助維護企業網路安全,除了輔助稽核其他安全設備,許多路由器,尤其是市佔率極高的路由器都有內建防火牆以及入侵偵測功能,由於路由器的技術與效能的提升,所以增加了這些新能力。
以下是你可以利用路由器來達到的額外功能︰
防止封包偽造攻擊:
路由器是Layer 3設備,可以處理IP標頭資訊,所以使用路由器來過濾ingress/egress封包,以避免IP spoof攻擊,不會對路由器造成過大的負擔,當路由器檢驗到一個外部進至內部的封包時,發現來源位址竟然是企業Public IP時(理應目的地位址為企業Public IP),表示這是一個偽造的封包,可以設定路由器來丟棄此類不合理的封包。
進行傳輸層的阻擋動作:
除了可設定ACL阻擋IP(第三層阻擋),可以設定路由器來阻擋特定TCP或UDP通訊埠,不過因為路由器本身是Layer 3設備,這樣的設定會造成些許額外負擔。
防火牆功能:
新款的路由器具備一些進階防火牆功能,像是動態封包狀態檢查功能(Stateful inspection),不過同樣的,打開此項功能可能會耗費路由器資源和影響效能。