入侵偵測系統 網路安全 DDoS 惡意軟體 IoT 物聯網

掌握原理便能靈活變通 Notify停用可改換API替代

Snort偵測結合LINE通知 即時告警異常流量威脅

本文將深入探討網路型入侵偵測系統(NIDS)的工作原理,並結合Snort工具與LINE即時通知功能的實作,展示如何有效識別網路威脅。透過實踐操作來理解駭客攻擊的模式,並學會如何透過技術手段主動保護網路安全,提升面對日益複雜網路環境的應變能力。

網路是現代社會不可或缺的基礎設施,但它同時也充滿了各種安全威脅。駭客攻擊、病毒和惡意軟體、網路釣魚、DDoS以及資料洩露等,對個人隱私、企業利益甚至國家安全造成巨大危害。隨著物聯網(IoT)設備的普及,網路攻擊面積不斷擴大,讓網路威脅變得更加難以預測且複雜。在本文中,將介紹網路型入侵偵測系統(Network Intrusion Detection System,NIDS),並透過Snort工具串接LINE即時通知功能,從中了解其運作方式與原理,不僅能幫助理解如何辨識網路中的潛在威脅,更能提升在面對複雜攻擊時的應對能力。在開始之前,先介紹相關的背景知識。

認識網路型入侵偵測系統

網路型入侵偵測系統(Network Intrusion Detection System,NIDS)是一種用於保障網路安全的技術,在入侵偵測系統(Intrusion Detection System,IDS)的技術類型中,負責分析網路流量的技術。透過監控和分析網路流量,檢測潛在的惡意流量、未經授權的存取或違反規則設定的行為,如阻斷服務攻擊(Denial of Service,DoS)、未授權的入侵,以及病毒感染等威脅。NIDS能偵測常見攻擊,並即時發出警報或阻擋威脅,協助網路管理員快速地應對,減少損害。

瞭解NIDS的運作模式

NIDS主要基於特徵偵測(Signature-based)和異常偵測(Anomaly-based)技術分析封包流量,對攻擊特徵匹配或識別異常行為,並記錄相關資料以供後續分析,其工作原理如圖1所示。

圖1  NIDS運作模式流程圖。

封包收集與處理

NIDS透過網路監控並收集網路中的封包流量,這些流量可以是來自區域網路或廣域網路的即時封包。通常,NIDS會部署在重要網路節點,例如交換器,以確保能夠捕獲所有進出網路的流量。

收集到的封包流量會被分解成可分析的封包格式,例如TCP/IP協定中的標頭訊息(IP地址、通訊埠號、協定類型等)。NIDS會根據協定層級(如應用層、傳輸層)進行分類與解析,為後續分析提供結構化資料。

分析封包流量

分析封包流量時,會採用以下兩種方式:

‧特徵偵測:NIDS利用已知的攻擊特徵或特徵資料庫進行比對,這些特徵通常包含已記錄的攻擊模式,例如SQL注入(SQL Injection)、DDoS、惡意軟體下載等。當某個流量特徵與特徵資料庫中的規則相符合時,NIDS會觸發警報。這種基於特徵的檢測方法適用於處理已知攻擊,但對未知攻擊,如零日攻擊(Zero-Day Attack)的檢測能力有限。

‧異常偵測:為應對未知攻擊,NIDS還會採用異常檢測技術。該技術基於正常網路行為的基礎模型,透過機器學習(Machine Learning)和統計分析(Statistical Analysis)來識別異常模式。例如,若某一使用者短時間內發送大量請求,或某個主機嘗試存取未被授權的資源,系統可能標記此行為為可疑。

偵測警報

當檢測到威脅後,NIDS會記錄相關資料,如時間戳記(Timestamp)、來源IP、目標IP、協定類型等,並觸發警報。警報可能包括電子郵件通知、系統日誌記錄,或與其他安全系統(如防火牆)合作以採取自動化反應措施。

NIDS功能比較

NIDS作為入侵偵測系統,並同時保護網路安全的技術。如圖2所示,其與主機入侵偵測系統(Host Intrusion Detective System,HIDS)和防火牆(Firewall)有所不同。

圖2  NIDS、HIDS與防火牆之配置架構。

以下就功能與部署位置比較其與兩者之關係,來討論有關於NIDS的效益。

NIDS與HIDS的比較

NIDS通常部署於網路的關鍵位置(如外部網路或內部網路)進行全域監控,與HIDS針對單一主機的防護不同。作為一個全面網路安全策略的重要組成,NIDS透過即時監控、威脅檢測、日誌記錄和產生分析報告,不僅能夠加強網路的整體防護,還能幫助組織滿足法律和行業標準的合規要求,確保敏感資料的安全性以及可追溯性。

NIDS與防火牆的比較

NIDS與防火牆是兩種常見的網路安全工具,各有不同的功能與用途。NIDS專注於監控與分析網路流量,透過檢測攻擊特徵或異常行為(例如DDoS、Cross-Site Script、SQL Injection)來發出警報,但無法主動阻止攻擊。相較之下,防火牆則負責控制進出網路的流量,根據設定的規則即時阻擋未經授權或惡意流量,是網路的第一道防線。

NIDS被動監測網路中的潛在威脅,像是警報系統,適合補充防火牆的不足;而防火牆則像門禁系統,專注於隔離外部威脅並保護內部網路。兩者相輔相成,能在偵測和防禦層面共同提升網路的整體安全性。

IDS與IPS的差異

入侵防禦系統(Intrusion Prevention System,IPS)是一種主動防禦的系統,與IDS相似,能夠使用特徵資料庫比對、異常偵測來識別潛在威脅。兩者之間的不同處在於,IDS只發出警報但不會阻擋攻擊,而IPS會主動採取行動,阻止入侵或修復問題,以減少攻擊對系統的影響。

針對潛在威脅,IPS具有更高的防禦性能,但同時部署成本高,且配置措施複雜,適合需要即時防禦威脅的環境。IDS則會完整保留遭遇威脅時的警報日誌,使安全檢測人員能夠深入分析,進行安全評估,對於成本與性能要求低,降低系統運行的效能需求,適合需要不間斷運作的工業控制系統(Industrial Control System,ICS)。

情境模擬與實作演練

員工阿偉與主管阿明同在一間名叫史若特的公司上班,在老闆眼中,阿偉每日工作規律,做事從不拖延,是位優秀的好員工。然而,他其實是另一間名叫滴答思的公司派過來的間諜,負責侵亂史若特公司的工作秩序。每當有機會,阿偉就會趁別人不注意時偷偷用hping3來DoS攻擊公司的網路。

隨著攻擊頻率的增加,公司不得不針對此情況做應對,因為公司專門設有防火牆,保護來自外部網路的網路攻擊,於是阿明將懷疑的心思轉向內部成員,並注意到阿偉不自然的舉動。雖然想向老闆回報,奈何阿偉做事小心,犯案不留痕跡,因此阿明決定利用即時偵測技術Snort,並輔以LINE Notify通報老闆,得當場讓阿偉無法辯解。

為了執行計畫做準備,阿明在他的電腦建置以下相關的軟體環境與系統:

‧Virtual Box(https://www.virtualbox.org/)

‧Ubuntu(https://ubuntu.com/download)

‧Snort 2.9.20(https://www.snort.org/downloads)

建置好作業環境後,阿明憑藉著自身對惡意流量的掌握,觀察到公司網路出現連線中斷、無法回應與回應遲緩的狀況,分析出阿偉是利用DoS來發動網路攻擊,但對於其是利用哪種類型的DoS攻擊並無頭緒,於是阿明決定從最常見的ICMP洪水攻擊與TCP洪水攻擊著手偵測。

Snort介紹

Snort是一款開源的網路入侵檢測與防禦系統(NIDS/NIPS),能夠即時分析網路流量,根據使用者定義的規則檢測並記錄潛在的攻擊或異常行為。Snort支援多種作業系統,如Linux、Windows和MacOS,廣泛應用於資安學習、網路監控以及攻擊防禦等領域。如表1所示,以下將介紹Snort的功能與指令介紹,請務必合法使用,避免不當操作。

Snort的規則由多個部分組成,包括Action(動作)、Protocol(協定)、Source/Destination IP和Port與Rule Options(規則選項),用於定義流量檢測條件與動作,使用方法如表2所示,其中Rule Options語法定義Snort將會偵測哪種類型的封包,與記錄到alert文件中的形式,使用方法如表3所示。

阿明在閱讀完相關的文件與使用說明後,首先開啟Ubuntu 24.04.1虛擬機,並在自己的桌面設置prac資料夾,以便後續方便管理新增的檔案,以及儲存所需手動配置的資料。阿明照著以下步驟完成上述動作:

首先,右鍵點擊桌面,創建資料夾,並重新命名為「prac」。

接著,按下快捷鍵〔Ctrl〕+〔Alt〕+〔T〕開啟終端機(Terminal),並輸入「cd /home/chien/桌面/prac」,移動到「prac」資料夾,如圖3所示。

圖3  操作終端機,並移動到「prac」資料夾。

設置好存放檔案的資料夾後,阿明按照以下步驟,準備設定Snort的規則:

先在終端機輸入「sudo nano local.rules」指令,使用管理者權限,再用nano文字編輯器來開啟local.rules檔案。產生與編輯local.rules檔名的文件,用以存放Snort偵測目標的規則。然後,在local.rule檔案第一行輸入下列規則,以偵測異常的ICMP封包:

alert icmp any any -> any any (msg:"ICMP DoS Attack Detected"; itype:8; detection_filter:track by_src,count 20,seconds 10 sid:1000001; rev:1;)

接著,在第二行輸入下列規則,以偵測異常的SYN封包:

alert tcp any any -> any any (msg:"SYN Flood Detected"; flags:S; detection_filter:track by_src,count 20,seconds 10; sid:1000002; rev:1;)

如圖4所示,完成偵測規則輸入,並按下〔CTRL〕+〔O〕按鈕進行儲存,按下〔CTRL〕+〔X〕按鈕進行退出。

圖4  完成ICMP洪水攻擊與TCP洪水攻擊規則輸入。

設置好Snort的偵測規則後,阿明按照以下步驟,修改Snort執行時所依據的Snort偵測規則:

首先,操作終端機移動到預設存放Snort操作設置的檔案「/etc/snort/snort.conf」。

接著,輸入「sudo nano snort.conf」,使用管理者權限,再使用nano文字編輯器來開啟snort.conf檔案。

隨後,找到檔案內存放的預設指令「include $RULE_PATH/local.rules」,如圖5所示,將其替換成以下指令,也就是將「$RULE_PATH/local.rules」更改為阿明存放自定義Snort規則的路徑:

圖5  更改snort.conf預設路徑。

include /home/chien/桌面/prac/ local.rules

接下來,按下〔CTRL〕+〔O〕按鈕進行儲存,並按下〔CTRL〕+〔X〕按鈕退出。

為了確認輸入的語法與設定並無錯誤,阿明輸入「sudo snort -T -c /etc/snort/snort.conf」,試跑了一段測試模式,Snort運作正常,顯示「Snort successfully validated the configuration!」,確認規則的設定無誤。

LINE Notify介紹

處理好Snort網路偵測系統後,阿明開始著手處理LINE Notify的前置作業,首先要取得與之連線的LINE Token,先連結至「https://notify-bot.line.me/zh_TW/」,如圖6所示,點選右上角的「登入」。接著,阿明按照以下步驟來完成LINE Token的註冊:

圖6  點選登入開始註冊LINE Token。

先輸入自己的LINE帳號密碼登入,再輸入驗證碼。回到「https://notify-bot.line.me/zh_TW/」成功登入後,如圖7所示,點選「管理登錄服務」。

圖7  進入管理登入服務頁面。

接下來,填寫LINE官方註冊資訊,例如將服務名稱填寫「Snort網路入侵偵測通知」。接著,來到「https://notify-bot.line.me/my/」,如圖8所示,點選「發行權杖」。

圖8  選發行權杖。

然後,填寫權杖名稱「Snort網路入侵偵測通知」,並選擇「透過1對1聊天接收LINE Notify的通知」,這樣阿明私人的LINE就可以接收到LINE Notify的通知了。然後,如圖9所示,取得私人LINE Notify權杖。

圖9  複製取得私人權杖。

回到「prac」目錄,接著按照以下步驟,設置Python讀取「/var/log/snort/alert」中的Snort警報,當讀取到特定警訊時,利用LINE Notify,從帳號「Snort網路入侵偵測通知」傳送訊息給阿明私人的LINE帳號:

首先,在終端機輸入「nano Snort_Line_Notify.py」指令,用nano文字編輯器來開啟Snort_Line_Notify.py的檔案。

接下來,輸入Python指令,如圖10所示。

圖10  輸入設計好的Python指令。

一切準備就緒後,輸入以下指令來啟動Snort:

sudo snort -A full -c /etc/ snort/snort.conf -I enp0s3 -l / var/log/snort

阿明打開alert檔案,確認Snort的Log有順利輸入alert檔案,並如圖11①、②和③所示抓到了攻擊者的攻擊樣態、攻擊時間與IP地址。

圖11  警報日誌紀錄異常流量資訊。

啟動Snort的同時,如圖12所示,阿明輸入「sudo python3 snort_line_notify.py」啟動檔案,將從alert檔案抓取到的資訊,以LINE通知的方式,傳送到了阿明的手機。

圖12  輸入指令啟動Python。

收到通知後發現,某人利用SYN flood攻擊公司的網路,Snort偵測到異常大量的SYN封包後,發出警報到alert檔案,如圖13①、②所示,上面記錄著該封包的IP地址(172.20.10.12)與攻擊時間(12/15 15:23),如圖14所示,並由Snort_Line_Notify抓取該檔案的Log,及時發出告警通知。

圖13  警報日誌紀錄攻擊者IP地址與攻擊時間。
圖14  Snort網路入侵偵測通知向阿明傳送LINE訊息。

之後,阿明帶著成果向老闆回報此事,透過利用封包提供的線索一「12月15日下午3點23分」、線索二「使用主機IP位置為172.20.10.12」,與監視器交叉對比,鎖定DoS攻擊公司的犯人就是阿偉,成功以刑法360條「無故以電腦程式或其他電磁方式干擾他人電腦或其相關設備,致生損害於公眾或他人者」,妨害電腦使用罪制裁阿偉的行為,並且老闆也趁此機會,好好建置NIDS系統,結合防火牆的防護,確保公司內網和外網的安全性。

結語

本文探討了NIDS的功能與運作方式,並了解其如何透過對網路流量的即時監控來發現潛在的威脅。透過情境模擬與實作演練,能夠進一步理解NIDS如何協助提升防禦能力,並學會在複雜攻擊情境中如何應對。

<本文作者:社團法人台灣E化資安分析管理協會(ESAM, https://www.esam.io/)中央警察大學資訊密碼暨建構實驗室 & 情資安全與鑑識科學實驗室(ICCL and SECFORENSICS)1998年成立,目前由王旭正教授領軍,並致力於資訊安全、情資安全與鑑識科學、資料隱藏與資料快速搜尋之研究,以為人們於網際網路(Internet)世界探索的安全保障(https://hera.secforensics.org/)>


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!