2020年的第三天,依舊如往常寫文章,分享最近作的項目繼《中小型企業級防火牆部署》以後的另外一部分《構建基於Snort+Guardian+Iptables的IPS》,後面會將整個完整項目開源分享出來,歡迎你們一塊兒交流分享html
IPS是英文「Intrusion Prevention System」的縮寫,中文意思是「入侵防護系統」,是一種網絡安全設備或應用軟件,除了具備IDS的監控檢測功能以外,還具備深度感知檢測數據流量,對惡意報文進行丟棄,實現實時告警和阻斷的入侵防護系統。web
數據採集:採集和捕獲流量數據 入侵檢測:分析流量和日誌數據,發現安全異常行爲併發出警報,常見的有Snort、Suricata、Bro 結果展現:用於分析IDS警報並進行友好展現,常見的IDS警報分析工具備Snorby、Sguil、Base 安全防護:主動響應安全事件,阻斷攻擊者入侵行爲,經常使用iptables
IDS是英文「Intrusion Detection Systems」的縮寫,中文意思是「入侵檢測系統」,是一種網絡安全設備或應用軟件,能夠依照必定的安全策略,對網絡、系統的運行情況進行監視,儘量發現各類攻擊企圖、攻擊行爲或者攻擊結果,併發出安全警報。安全
(1)數據收集器(又稱探測器):主要負責收集數據。探測器的輸入數據流包括任何可能包含入侵行爲線索的系統數據,如各類網絡協議數據包、系統日誌文件和系統調用記錄等。探測器將這些數據收集起來,而後再發送到檢測器進行處理。
(2)檢測器(又稱分析器或檢測引擎):負責分析和檢測入侵的任務,並向控制器發出警報信號。
(3)知識庫:爲檢測器和控制器提供必需的數據信息支持。這些信息包括:用戶歷史活動檔案或檢測規則集合等。
(4)控制器:根據從檢測器發來的警報信號,人工或自動地對入侵行爲作出響應。服務器
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
在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分析網絡數據流以匹配用戶定義的一些規則,並根據檢測結果採起必定的動做。併發
安裝系統Kali
Snort安裝方式通常分爲源碼編譯安裝與包管理器安裝兩種方式。使用源碼下載會比較複雜,可是文檔齊全,debug方便一些;而包管理器安裝很是方便,一條命令解決全部問題分佈式
apt-get install snort
修改配置文件工具
/etc/snort/snort.conf
查看規則
測試
snort -i eth1 -c /etc/snort/snort.conf -A fast -l /var/log/snort
查看默認Snort ICMP規則
ui
Guardian實現Snort+Iptables聯動效應
Guardian須要去官網下載
http://www.chaotic.org/guardian/
tar -zxvf guardian-1.7.tar.gz
→ 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的日誌
→ 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路徑
(1)Guardian的執行文件 guardian.pl (2)Guardian封鎖IP所要調用的外部程序 scripts/iptalbes_block.sh (3)Guardian解除對某一IP封鎖時,所須要調用的外部程序scripts/iptalbes_unblock.sh
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輸出報警信息
→ Qftm ← :/etc/snort/guardian-1.7# perl guardian.pl -c guardian.conf
由上可知,外部攻擊者被IPS記錄攔截限制訪問