Ubuntu 22.04 安裝 Snort 3 教學:編譯、設定到第一條偵測規則(附影片)

Ubuntu 22.04 安裝 Snort 3 教學:編譯、設定到第一條偵測規則(附影片)

Snort 是由 Cisco Talos 維護的開源網路入侵偵測/防禦系統(IDS/IPS),Snort 3 是全面改寫的新世代版本,支援多執行緒、改用 Lua 設定檔,規則語法也更直覺。這篇整理在 Ubuntu 22.04 從原始碼編譯安裝 Snort 3 的完整流程,最後寫一條自訂規則實際偵測 ICMP 封包,確認環境能正常運作。

影片教學

想先看實際操作可以直接看影片,下面再把每個步驟的指令整理成文字版,方便複製。

安裝前準備

  • 作業系統:Ubuntu 22.04 LTS(實體機或 VM 皆可)
  • 具備 sudo 權限的帳號
  • 一張用來監聽的網卡,先用 ip a 查出網卡名稱(例如 ens33、enp0s3)。網卡代號每台電腦都不同,後面的指令記得換成自己的。

步驟 1:安裝相依套件

sudo apt update
sudo apt install -y build-essential cmake pkg-config git autoconf libtool \
  flex bison libdumbnet-dev libhwloc-dev libluajit-5.1-dev libssl-dev \
  libpcap-dev libpcre2-dev zlib1g-dev liblzma-dev uuid-dev ethtool

步驟 2:編譯安裝 LibDAQ

DAQ(Data Acquisition library)是 Snort 3 用來擷取封包的抽象層,必須先安裝。

mkdir -p ~/snort-src && cd ~/snort-src
git clone https://github.com/snort3/libdaq.git
cd libdaq
./bootstrap
./configure
make
sudo make install

步驟 3:編譯安裝 Snort 3

cd ~/snort-src
git clone https://github.com/snort3/snort3.git
cd snort3
./configure_cmake.sh --prefix=/usr/local
cd build
make -j$(nproc)
sudo make install
sudo ldconfig

編譯時間依機器效能約 10~30 分鐘。完成後確認版本:

snort -V

步驟 4:調整網卡設定

網卡的 GRO / LRO 功能會把多個封包合併,導致 Snort 看到的封包長度不正確,建議關閉:

sudo ip link set dev ens33 promisc on
sudo ethtool -K ens33 gro off lro off

步驟 5:設定 HOME_NET 並驗證設定檔

編輯 /usr/local/etc/snort/snort.lua,把 HOME_NET 改成你要保護的網段,例如:

HOME_NET = '192.168.1.0/24'

接著用 -T 測試設定檔,看到 Snort successfully validated the configuration 就代表沒問題:

snort -c /usr/local/etc/snort/snort.lua -T

步驟 6:寫第一條規則並測試

建立自訂規則檔:

sudo mkdir -p /usr/local/etc/rules
sudo nano /usr/local/etc/rules/local.rules

寫入一條偵測 ICMP(ping)的規則:

alert icmp any any -> $HOME_NET any (msg:"ICMP Ping detected"; sid:1000001; rev:1;)

啟動 Snort 監聽網卡,並把告警直接印在畫面上:

sudo snort -c /usr/local/etc/snort/snort.lua \
  -R /usr/local/etc/rules/local.rules \
  -i ens33 -A alert_fast -k none

從另一台機器 ping 這台 Ubuntu,畫面上出現 [**] [1:1000001:1] "ICMP Ping detected" [**] 就代表 Snort 3 已經正常運作。

常見問題

找不到 libdaq 或執行時出現 shared library 錯誤?

多半是沒有執行 sudo ldconfig,或是 LibDAQ 沒有安裝成功。重新在 libdaq 目錄執行 sudo make install 後再跑一次 ldconfig。

規則沒有觸發?

確認三件事:-i 指定的網卡是否正確、HOME_NET 是否包含這台主機的 IP、ping 的封包是否真的經過這張網卡(VM 請確認網路模式)。

Snort 3 和 Snort 2 的規則可以共用嗎?

大部分 Snort 2 規則語法相容,但設定檔已從 snort.conf 改成 Lua 格式。官方提供 snort2lua 工具可協助轉換舊設定。

延伸閱讀

參考資源

You may also like