1. 程式人生 > >中小型企業級 IPS 部署

中小型企業級 IPS 部署

《構建基於Snort+Guardian+Iptables的IPS》

2020年的第三天,依舊如往常寫文章,分享最近做的專案繼《中小型企業級防火牆部署》之後的另一部分《構建基於Snort+Guardian+Iptables的IPS》,後面會將整個完整專案開源分享出來,歡迎大家一起交流分享

IPS

IPS簡介

IPS是英文“Intrusion Prevention System”的縮寫,中文意思是“入侵防禦系統”,是一種網路安全裝置或應用軟體,除了具有IDS的監控檢測功能之外,還具有深度感知檢測資料流量,對惡意報文進行丟棄,實現實時告警和阻斷的入侵防禦系統。

IPS功能組成

資料採集:採集和捕獲流量資料
入侵檢測:分析流量和日誌資料,發現安全異常行為併發出警報,常見的有Snort、Suricata、Bro
結果展示:用於分析IDS警報並進行友好展示,常見的IDS警報分析工具有Snorby、Sguil、Base
安全防禦:主動響應安全事件,阻斷攻擊者入侵行為,常用iptables

IDS

IDS是英文“Intrusion Detection Systems”的縮寫,中文意思是“入侵檢測系統”,是一種網路安全裝置或應用軟體,可以依照一定的安全策略,對網路、系統的執行狀況進行監視,儘可能發現各種攻擊企圖、攻擊行為或者攻擊結果,併發出安全警報。

IDS通用系統模型

(1)資料收集器(又稱探測器):主要負責收集資料。探測器的輸入資料流包括任何可能包含入侵行為線索的系統資料,如各種網路協議資料包、系統日誌檔案和系統呼叫記錄等。探測器將這些資料收集起來,然後再發送到檢測器進行處理。
(2)檢測器(又稱分析器或檢測引擎):負責分析和檢測入侵的任務,並向控制器發出警報訊號。
(3)知識庫:為檢測器和控制器提供必需的資料資訊支援。這些資訊包括:使用者歷史活動檔案或檢測規則集合等。

(4)控制器:根據從檢測器發來的警報訊號,人工或自動地對入侵行為做出響應。

IDS分類

IDS根據兩種方法進行分類:按照資料來源、按照入侵檢測策略。

按照資料來源分類

基於網路的入侵檢測系統(NIDS)
基於主機的入侵監測系統(HIDS)
分散式入侵檢測系統(DIDS)

按照入侵檢測策略分類

濫用檢測
異常檢測
完整性分析

環境搭建

企業拓撲

環境準備

DMZ區:CentOS7 --- IP:192.168.9.100 Gateway:192.168.9.254
防火牆:kali --- ip1:211.67.93.254;ip2:192.168.9.254;ip3:192.168.33.254;
外網主機:win2003 --- IP:211.67.93.100  Gateway:211.67.93.254
內網主機:win2003 --- IP:192.168.33.100 Gateway:192.168.33.254

IDS Snort

Snort簡介

在1998年,Martin Roesch用C語言開發了開放原始碼(Open Source)的入侵檢測系統Snort。直至今天,Snort已發展成為一個具有多平臺(Multi-Platform)、實時(Real-Time)流量分析、網路IP資料包(Pocket)記錄等特性的強大的網路入侵檢測/防禦系統(Network Intrusion Detection/Prevention System),即NIDS/NIPS。Snort符合通用公共許可(GPL——GNU General Pubic License),在網上可以通過免費下載獲得Snort,並且只需要幾分鐘就可以安裝並開始使用。
Snort有三種工作模式:嗅探器、資料包記錄器、網路入侵檢測系統。嗅探器模式僅僅是從網路上讀取資料包並作為連續不斷的流顯示在終端上。資料包記錄器模式把資料包記錄到硬碟上。網路入侵檢測模式是最複雜的,而且是可配置的。我們可以讓snort分析網路資料流以匹配使用者定義的一些規則,並根據檢測結果採取一定的動作。

Snort安裝

安裝系統Kali
Snort安裝方式一般分為原始碼編譯安裝與包管理器安裝兩種方式。使用原始碼下載會比較複雜,但是文件齊全,debug方便一些;而包管理器安裝非常方便,一條命令解決所有問題

apt-get install snort

Snort配置

設定規則路徑

修改配置檔案

/etc/snort/snort.conf

檢視規則

PS:Linux預設安裝之後Snort日誌路徑等都會預設配置好,無需麻煩配置

Snort啟動

snort -i eth1 -c /etc/snort/snort.conf -A fast -l /var/log/snort

Snort測試

檢視預設Snort ICMP規則

測試外網ping DMZ區域Web伺服器

檢視IDS日誌記錄

分析日誌可知,Snort允許ICMP通過,並且記錄了ICMP的相關資料。

Guardian

Guardian實現Snort+Iptables聯動效應

Guardian下載

Guardian需要去官網下載

http://www.chaotic.org/guardian/

Guardian安裝

下載之後解壓

tar -zxvf guardian-1.7.tar.gz

移動guardian到snort下 && 建立名單 && 日誌

→ Qftm ← :~/桌面# mv guardian-1.7 /etc/snort/
→ Qftm ← :~/桌面# touch /etc/snort/guardian-1.7/guardian.ignore 建立白名單
→ Qftm ← :~/桌面# touch /etc/snort/guardian-1.7/guardian.target  建立黑名單
→ Qftm ← :~/桌面# touch /var/log/snort/guardian.log    guardian的日誌

複製block指令碼

→ Qftm ← :/etc/snort/guardian-1.7# cp scripts/iptables_block.sh /usr/local/bin/guardian_block.sh
→ Qftm ← :/etc/snort/guardian-1.7# cp scripts/iptables_unblock.sh /usr/local/bin/guardian_unblock.sh

此操作是為了滿足在guardian.pl中設定的\(blockpath和\)unblockpath路徑

PS:

(1)Guardian的執行檔案 guardian.pl 
(2)Guardian封鎖IP所要呼叫的外部程式 scripts/iptalbes_block.sh 
(3)Guardian解除對某一IP封鎖時,所需要呼叫的外部程式scripts/iptalbes_unblock.sh

Guardian配置

配置guardian.conf

Interface       eth1
HostGatewayByte  1
LogFile         /var/log/snort/guardian.log
AlertFile       /var/log/snort/alert              
IgnoreFile      /etc/snort/guardian-1.7/guardian.ignore
TargetFile      /etc/snort/guardian-1.7/guardian.target
TimeLimit    86400

PS:

TimeLimit:在多少秒後解除對IP的封鎖,86400秒也就是24小時之後解除對IP的封鎖。
AlertFile:警報資訊,前提是snort以alert_fast輸出報警資訊

配置guardian_block.sh和guardian_unblock.sh規則

編寫策略檔案,配置對外來入侵者進行攔截和解除的策略

Guardian啟動

→ Qftm ← :/etc/snort/guardian-1.7# perl guardian.pl -c guardian.conf

IPS測試

外網攻擊者對Web伺服器進行攻擊

IPS檢測&攔截

IPS檢測

IPS攔截

由上可知,外部攻擊者被IPS記錄攔截限制訪問