隨著網路攻擊日益複雜,建立完善的入侵偵測和防禦系統至關重要。本文介紹如何利用 Snort、Security Onion 和 IPFire 建構 NIDS/NIPS 系統,並搭配 Lynis 和 Nikto 等工具進行弱點掃描和安全檢測。從 Snort 3 的 Docker 容器化佈署、規則設定到 Security Onion 的整合應用,文章提供逐步操作,並闡述 Snort 3 與 Snort 2 的差異。此外,文章也說明如何設定 IPFire 作為邊緣防火牆,並整合 IPS 功能,提升網路防禦能力。最後,文章介紹 Lynis 和 Nikto 的使用方法,幫助讀者掌握系統和 Web 伺服器安全檢測技巧,有效提升整體網路安全防護。

14 弱點掃描與入侵偵測

在當今充滿威脅的網路環境中,某些威脅甚至可能滲透到您的網路中。為了及時發現這些威脅,您需要建立一個良好的網路入侵偵測系統(NIDS)或網路入侵防禦系統(NIPS)。在本章中,我們將探討最著名的 Snort 系統,並展示如何快速建立一個良好的 NIDS/NIPS。此外,我們還將介紹如何設定一個具有內建 NIPS 的邊緣防火牆裝置。

Snort 與 Security Onion 簡介

Snort 是一款免費的開源網路入侵偵測系統(NIDS)。雖然 Snort 本身是免費的,但若要獲得完整、最新的威脅偵測規則,則需要付費。Snort 最初是一個人的專案,但現在由 Cisco 擁有。需要注意的是,Snort 不是安裝在您想要保護的機器上,而是至少有一台專用的 Snort 機器位於網路中的某個位置,用於監控所有網路流量,觀察異常情況。

Snort 的運作方式

當 Snort 偵測到不應該存在的流量(例如,指示存在機器人的流量)時,它可以根據規則組態,向管理員傳送警示訊息,甚至可以阻止異常流量。對於小型網路,您可以擁有一台 Snort 機器,既作為控制主機,又作為感測器。對於大型網路,您可以設定一台 Snort 機器作為控制主機,並接收其他 Snort 機器(作為感測器)的報告。

取得與安裝 Snort

Snort 3 是最新版本的 Snort,但它不在任何 Linux 發行版的官方儲存函式庫中。因此,您需要從 Snort 網站取得它。目前,Snort 可以作為需要自行編譯的原始碼或預先構建的 Docker 容器提供。值得注意的是,容器選項並未在 Snort 首頁上提及。

使用 Docker 容器安裝 Snort 的實作實驗

建議使用容器選項,而不是原始碼選項,因為原始碼設定的說明不夠清晰,並且某些函式庫套件並不總是能夠正確編譯。

# 在 Ubuntu 上安裝 podman
sudo apt update
sudo apt install podman

# 在 Ubuntu 上編輯 /etc/containers/registries.conf
# 將 unqualified-search-registries = ["example.com"] 改為
unqualified-search-registries = ["docker.io"]

# 下載並啟動容器
podman run --name snort3 -h snort3 -u snorty -w /home/snorty -d -it ciscotalos/snort3 bash

# 進入容器以互動方式使用 snort 命令
podman exec -it snort3 bash

# 驗證 Snort 組態
snort

內容解密:

  1. podman run 命令:用於下載並啟動一個名為 snort3 的容器,指定主機名稱、使用者名稱、工作目錄,並以互動模式執行 ciscotalos/snort3 映象中的 bash
  2. podman exec 命令:用於進入正在執行的 snort3 容器,以便與 Snort 命令互動。
  3. snort 命令:驗證 Snort 的組態是否正確。

Snort 3 的安裝與設定

Snort 3 是一種功能強大的入侵檢測系統(IDS),能夠幫助管理員檢測和預防網路攻擊。本文將介紹如何在容器中安裝和設定 Snort 3。

在容器中安裝 Snort 3

首先,需要在容器中安裝 Snort 3。由於無法直接下載 rulesets 到容器中,因此需要先下載到虛擬機器或主機上,然後傳輸到容器中。

wget https://www.snort.org/downloads/community/snort3-community-rules.tar.gz

下載完成後,使用 sftp 將檔案傳輸到容器中。

sftp donnie@192.168.0.20
get snort3-community-rules.tar.gz
bye

在容器中,解壓縮 ruleset 檔案並將其複製到正確的位置。

tar -xvf snort3-community-rules.tar.gz
cd snort3-community-rules
cp snort3-community.rules ~/snort3/etc/rules/

內容解密:

  1. wget 命令用於下載 Snort 3 的 community ruleset。
  2. sftp 命令用於將下載的檔案傳輸到容器中。
  3. 在容器中,tar 命令用於解壓縮 ruleset 檔案。
  4. cp 命令用於將解壓縮後的 rules 檔案複製到 Snort 3 的規則目錄中。

測試 Snort 3

使用以下命令測試 Snort 3 是否正常運作。

snort -q --talos --rule-path snort3/etc/rules/ -r examples/intro/lab2/eternalblue.pcap

內容解密:

  1. snort 命令用於啟動 Snort 3。
  2. -q 引數使 Snort 3 以靜默模式執行。
  3. --talos 引數啟用 Talos ruleset。
  4. --rule-path 引數指定規則檔案的路徑。
  5. -r 引數指定要分析的 pcap 檔案。

Snort 3 與 Snort 2 的比較

Snort 3 相較於 Snort 2 有了顯著的改進。以下是一些主要的不同之處:

  • Snort 3 是純命令列模式的程式,而 Snort 2 有圖形化的前端介面。
  • Snort 3 可以將輸出檔案儲存為 JSON 格式,便於集中式日誌彙整器讀取和分析。
  • Snort 3 的設定檔和規則檔採用 YAML 格式。
  • Snort 3 的規則語法更加簡潔,易於撰寫。

Security Onion 簡介

Security Onion 是一個免費開源的工具集合,可以安裝在本地 Linux 機器上。它也提供了一個預先建置的 Linux 發行版映像檔。Security Onion 2 現在根據 CentOS 7 的文字模式安裝,並提供了更多的功能。

Security Onion 的元件

  • ELK Stack(Elastic Search、Logstash 和 Kibana)用於日誌收集和分析。
  • Suricata 用於入侵檢測。
  • Security Onion Console 提供了一個網頁前端介面。

IPFire 和其內建的入侵預防系統(IPS)

IPFire 是一個免費的防火牆發行版,具有內建的入侵預防系統(IPS)。IPFire 的 IPS 取代了原有的 Snort。

IPFire 的特點

  • IPFire 可以設定為邊緣防火牆或閘道器型防火牆。
  • IPFire 具有代理伺服器的功能,包括快取、內容過濾和 NAT 功能。

建立 IPFire 虛擬機器

為了測試 IPFire,可以建立一個虛擬機器並安裝 IPFire。

  1. 建立一個具有兩個網路介面的虛擬機器,並將其中一個設定為 Bridged 模式,另一個保持在 NAT 模式。
  2. 安裝 IPFire 到虛擬機器中,並在設定過程中選擇 Bridged 網路介面作為 Green 網路介面,NAT 網路介面作為 Red 網路介面。

設定 IPFire

安裝完成後,使用網頁瀏覽器存取 IPFire 的儀錶板,並進行相關設定。

https://192.168.0.190:444
  1. 在防火牆選單中,點選 Intrusion Prevention 以啟用入侵預防功能。
  2. 點選 Add provider 按鈕以新增規則集。

圖表翻譯:

此圖示展示了 IPFire 的安裝和設定流程,包括建立虛擬機器、安裝 IPFire 和設定 IPFire 的步驟。

使用IPFire設定邊緣防火牆與網路入侵防禦系統

在現代網路環境中,邊緣防火牆與網路入侵防禦系統(IPS)的組態是確保網路安全的重要步驟。本篇文章將介紹如何使用IPFire來設定邊緣防火牆及其網路IPS。

步驟1:新增供應商

首先,點選 Add provider 按鈕以新增供應商。

步驟2:選擇規則集

在下一頁中,選擇您要使用的規則集,並保持 Enable automatic updates 核取方塊被啟用。然後,點選 Add 按鈕。

步驟3:啟用入侵防禦系統

在接下來的畫面中,選擇您要為其啟用入侵防禦的介面(請選擇兩個介面)。然後,選中 Enable Intrusion Prevention System 核取方塊並點選 Save

如果一切順利,您將看到如下輸出:

自定義規則集

  1. Ruleset Settings 區段中,點選 Customize ruleset 按鈕。在下一頁中,點選您要啟用的規則。然後,在畫面底部點選 Apply 按鈕。

    # 範例命令:自定義規則集
    # 請根據實際需求選擇合適的規則
    

    內容解密:

    • 這裡的命令是用於自定義規則集的範例。
    • 請根據實際需求選擇合適的規則,以滿足您的網路安全需求。
    • 啟用適當的規則可以提高入侵防禦系統的有效性。
  2. 透過選擇 Log/IPS Logs 來檢視IPS的運作情況。請注意,您所看到的內容將取決於您選擇啟用的規則。即使如此,可能需要一段時間才會出現任何記錄專案。

使用Lynis進行掃描與強化

Lynis是一款免費且開放原始碼(FOSS)工具,用於掃描系統中的漏洞和不良的安全組態。它是一個可攜式的Shell指令碼,可以在Linux以及各種不同的Unix和類別Unix系統上使用。

在Red Hat/CentOS上安裝Lynis

對於Red Hat、CentOS 7和AlmaLinux 8/9使用者,可以在EPEL儲存函式庫中找到最新版本的Lynis。因此,如果您已安裝EPEL,那麼安裝Lynis只需執行:

sudo yum install lynis

在Ubuntu上安裝Lynis

Ubuntu在其自己的儲存函式庫中提供了Lynis,但版本稍微落後。如果您願意使用較舊的版本,則安裝命令為:

sudo apt install lynis

如果您想要在Ubuntu上使用最新版本的Lynis,或者想在沒有Lynis的作業系統上使用它,可以從Cisofy網站下載。

使用Lynis進行掃描

Lynis命令無論在哪個作業系統上執行都相同。唯一的區別是,如果您從網站下載的存檔檔案執行,則需要在Lynis目錄中並在Lynis命令前加上 ./

要掃描已安裝Lynis的系統,請執行:

sudo lynis audit system

掃描結果的部分範例如下:

[+] Boot and services
---
-
---
-
---
-
---
-
---
-
---
-
---
-
---
-
---
-
- Service Manager [ systemd ]
- Checking UEFI boot [ DISABLED ]
- Checking presence GRUB [ OK ]
- Checking presence GRUB2 [ FOUND ]
- Checking for password protection [ WARNING ]
- Check running services (systemctl) [ DONE ]
Result: found 21 running services
- Check enabled services at boot (systemctl) [ DONE ]
Result: found 28 enabled services
- Check startup files (permissions) [ OK ]

內容解密:

  • Lynis掃描結果提供了系統啟動和服務管理的詳細資訊。
  • 在這個例子中,我們發現GRUB2沒有密碼保護,這可能是一個安全風險。
  • Lynis還檢查了正在執行的服務和啟動時啟用的服務數量。

使用Lynis進行系統安全掃描與設定強化

Lynis是一款強大的安全掃描工具,專為類別Unix系統設計,用於檢測系統漏洞、組態問題和潛在的安全風險。作為一名資深的Linux管理員,掌握Lynis的使用方法對於提升系統安全性至關重要。

Lynis的基本使用方法

首先,我們需要安裝Lynis。大多數Linux發行版都可以在其套件函式庫中找到Lynis。以Ubuntu/Debian為例,可以使用以下命令安裝:

sudo apt update
sudo apt install lynis

安裝完成後,可以透過以下命令執行掃描:

sudo lynis audit system

掃描過程中,Lynis會對系統進行全面的檢查,包括檔案系統、使用者帳戶、網路組態等方面。

內容解密:

  • sudo lynis audit system:此命令用於啟動系統稽核。lynis 是命令本身,audit 是子命令,表示進行稽核,system 表示對整個系統進行稽核。
  • sudo:由於稽核過程需要存取系統的敏感區域,因此需要超級使用者許可權。

理解Lynis掃描結果

掃描完成後,Lynis會生成一份詳細的報告,包括發現的問題和建議的改進措施。報告中會包含一個硬化和測試專案的索引,分別表示系統的當前安全狀態和已執行的測試數量。

Lynis security scan details:
Hardening index : 67 [############# ]
Tests performed : 218
Plugins enabled : 0
Components:
- Firewall [V]
- Malware scanner [X]
Lynis Modules:
- Compliance Status [?]
- Security Audit [V]
- Vulnerability Scan [V]

內容解密:

  • Hardening index : 67:表示系統的硬化指數,數值越高,表示系統越安全。
  • Tests performed : 218:表示Lynis執行了218項測試。
  • ComponentsLynis Modules 部分列出了系統中已啟用或未啟用的元件和模組,如防火牆和惡意軟體掃描器。

提升系統安全性

根據Lynis的掃描結果,我們可以採取相應的措施來提升系統安全性。例如,對於報告中指出的惡意軟體掃描器未啟用的問題,可以安裝ClamAV或maldet來解決。

sudo apt install clamav

內容解密:

  • sudo apt install clamav:安裝ClamAV惡意軟體掃描器,以滿足Lynis對惡意軟體掃描的需求。

使用Greenbone Security Assistant進行漏洞掃描

除了Lynis外,Greenbone Security Assistant(GSA)是另一款強大的漏洞掃描工具。它提供了一個使用者友好的介面,可以對網路中的裝置進行全面的漏洞掃描。

首先,需要在Kali Linux上安裝GSA:

sudo apt update
sudo apt dist-upgrade
sudo apt install openvas

安裝完成後,執行以下命令進行初始設定:

sudo gvm-setup

內容解密:

  • sudo gvm-setup:此命令用於設定GSA,包括生成安全憑證和下載漏洞資料函式庫。

完成初始設定後,可以透過瀏覽器存取GSA的網頁介面(https://localhost:9392),並使用預設的管理員帳戶登入。

網路漏洞掃描與Web伺服器安全檢測

在網路安全領域,漏洞掃描是一項至關重要的任務。本文將介紹如何使用Greenbone Security Assistant(GSA)和Nikto這兩款工具進行漏洞掃描和Web伺服器安全檢測。

使用Greenbone Security Assistant進行漏洞掃描

GSA是一款通用型漏洞掃描工具,可以檢測多種作業系統和伺服器守護程式的漏洞。在進行掃描時,我們需要注意那些未被標記為漏洞的專案。例如,如果VNC安全型別專案顯示埠5900是開放的,則意味著Virtual Network Computing(VNC)守護程式正在執行,這可能會導致安全問題,因為VNC缺乏像Secure Shell(SSH)那樣的安全機制。

漏洞掃描結果分析

當我們點選某個漏洞專案時,可以看到對該漏洞的詳細解釋。這有助於我們瞭解漏洞的性質和潛在風險。對於桌面機器和伺服器,掃描結果可能會有所不同,伺服器的掃描結果通常會顯示更多問題。

使用Nikto進行Web伺服器掃描

Nikto是一款專門用於Web伺服器掃描的工具。它易於安裝和使用,可以快速對Web伺服器進行全面掃描。在Kali Linux中,Nikto已經預先安裝,但建議從GitHub下載最新版本以取得最新的簽名資料函式庫。

安裝Nikto

要安裝Nikto,可以按照以下步驟進行:

  1. 在普通使用者主目錄中,克隆Nikto倉函式庫:git clone https://github.com/sullo/nikto.git
  2. 切換到nikto目錄:cd nikto
  3. 切換到當前分支:git checkout nikto-2.5.0
  4. 切換到program子目錄:cd program
  5. 執行Nikto:./nikto -help

更新Nikto簽名資料函式庫

要更新Nikto簽名資料函式庫,可以執行以下命令:

cd nikto
git pull

使用Nikto掃描Web伺服器

要使用Nikto掃描Web伺服器,可以執行以下命令:

cd nikto/program
./nikto -h 192.168.0.9
./nikto -h www.example.com

掃描結果分析

掃描結果將顯示Web伺服器的相關資訊和潛在漏洞。例如:

  • Allowed HTTP Methods: POST, OPTIONS, GET, HEAD
  • OSVDB-396: /_vti_bin/shtml.exe: Attackers may be able to crash FrontPage by requesting a DOS device.
  • /cgi-bin/guestbook.pl: May allow attackers to execute commands as the web daemon.

這些結果表明,Web伺服器上存在一些潛在的安全問題,例如shtml.exe檔案可能允許攻擊者執行拒絕服務(DOS)攻擊,/cgi-bin/目錄下的指令碼可能允許攻擊者執行任意命令。