隨著網路攻擊日益複雜,建立完善的入侵偵測和防禦系統至關重要。本文介紹如何利用 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
內容解密:
podman run命令:用於下載並啟動一個名為snort3的容器,指定主機名稱、使用者名稱、工作目錄,並以互動模式執行ciscotalos/snort3映象中的bash。podman exec命令:用於進入正在執行的snort3容器,以便與 Snort 命令互動。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/
內容解密:
wget命令用於下載 Snort 3 的 community ruleset。sftp命令用於將下載的檔案傳輸到容器中。- 在容器中,
tar命令用於解壓縮 ruleset 檔案。 cp命令用於將解壓縮後的 rules 檔案複製到 Snort 3 的規則目錄中。
測試 Snort 3
使用以下命令測試 Snort 3 是否正常運作。
snort -q --talos --rule-path snort3/etc/rules/ -r examples/intro/lab2/eternalblue.pcap
內容解密:
snort命令用於啟動 Snort 3。-q引數使 Snort 3 以靜默模式執行。--talos引數啟用 Talos ruleset。--rule-path引數指定規則檔案的路徑。-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。
- 建立一個具有兩個網路介面的虛擬機器,並將其中一個設定為 Bridged 模式,另一個保持在 NAT 模式。
- 安裝 IPFire 到虛擬機器中,並在設定過程中選擇 Bridged 網路介面作為 Green 網路介面,NAT 網路介面作為 Red 網路介面。
設定 IPFire
安裝完成後,使用網頁瀏覽器存取 IPFire 的儀錶板,並進行相關設定。
https://192.168.0.190:444
- 在防火牆選單中,點選 Intrusion Prevention 以啟用入侵預防功能。
- 點選 Add provider 按鈕以新增規則集。
圖表翻譯:
此圖示展示了 IPFire 的安裝和設定流程,包括建立虛擬機器、安裝 IPFire 和設定 IPFire 的步驟。
使用IPFire設定邊緣防火牆與網路入侵防禦系統
在現代網路環境中,邊緣防火牆與網路入侵防禦系統(IPS)的組態是確保網路安全的重要步驟。本篇文章將介紹如何使用IPFire來設定邊緣防火牆及其網路IPS。
步驟1:新增供應商
首先,點選 Add provider 按鈕以新增供應商。
步驟2:選擇規則集
在下一頁中,選擇您要使用的規則集,並保持 Enable automatic updates 核取方塊被啟用。然後,點選 Add 按鈕。
步驟3:啟用入侵防禦系統
在接下來的畫面中,選擇您要為其啟用入侵防禦的介面(請選擇兩個介面)。然後,選中 Enable Intrusion Prevention System 核取方塊並點選 Save。
如果一切順利,您將看到如下輸出:
自定義規則集
在 Ruleset Settings 區段中,點選 Customize ruleset 按鈕。在下一頁中,點選您要啟用的規則。然後,在畫面底部點選 Apply 按鈕。
# 範例命令:自定義規則集 # 請根據實際需求選擇合適的規則內容解密:
- 這裡的命令是用於自定義規則集的範例。
- 請根據實際需求選擇合適的規則,以滿足您的網路安全需求。
- 啟用適當的規則可以提高入侵防禦系統的有效性。
透過選擇 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項測試。Components和Lynis 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,可以按照以下步驟進行:
- 在普通使用者主目錄中,克隆Nikto倉函式庫:
git clone https://github.com/sullo/nikto.git - 切換到nikto目錄:
cd nikto - 切換到當前分支:
git checkout nikto-2.5.0 - 切換到program子目錄:
cd program - 執行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/目錄下的指令碼可能允許攻擊者執行任意命令。