Suricata安裝配置(IPS模式-線下)


實驗聲明:本實驗教程僅供研究學習使用,請勿用於非法用途,違者一律自行承擔所有風險!

Suricata安裝配置(IPS模式-線下)

說明:

本實驗為線下實驗,需要自行安裝實驗環境。

實驗目的:

通過實驗,了解IPS的工作原理及基本配置。

實驗環境:

CentOS 7,運行IPTables防火牆。 測試服務器一台,運行web服務; 測試機一台; GCC的版本需要升級到較高版本,實驗中可升級到6.4即可。

連接關系說明:

測試機通過Centos7進行數據包轉發才能與測試服務器建立連接。 

實驗網絡拓撲簡圖

實驗步驟:

一、基礎組件安裝

運行以下命令:

#yum install wget libpcap-devel libnet-devel pcre-devel gcc-c++ automake autoconf libtool make libyaml-devel zlib-devel file-devel jansson-devel nss-devel

在開始安裝Suricata之前,需要安裝suricata所使用到的一些庫。安裝這些庫的命令是:

#yum -y install ImageMagickgcc-c++ patch readline readline-devel zlib zlib-devel git-core libyaml-devel libffi-devel openssl-devel make libpcap-devel pcre-devel libyaml-devel file-devel jansson-devel nss-devel libcap-ng-devel libnet-devel tar libnetfilter_queue-devel lua-devel mysql-devel fontconfig-devel libX11-devel libXrender-devel libxml2-devel libxslt-devel qconf python-yaml libcap-ng-devel file-devel epel-release lz4-devel jansson-devel cargo file-devel lz4-devel jansson-devel cargo python-yaml

Suricata默認的運行模式是IDS模式,如果運行在IPS模式則還需要安裝其他組件,命令為:

#yum install libnetfilter_queue libnetfilter_queue-devel libnfnetlink-devel libnfnetlink

或執行:

#yum install libnetfilter_queue* libnfnetlink-devel libnfnetlink

二、安裝Suricata-4.1.3

安裝好這些庫之后就開始下載源代碼:

#wget https://openinfosecfoundation.org/download/suricata-4.1.3.tar.gz

#tar -xvf suricata-4.1.3.tar.gz

#cd suricata-4.1.3

#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

#./configure --enable-nfqueue --prefix=/usr --sysconfdir=/etc --localstatedir=/var

#make

#make install

配置中,可能出現錯誤,需要重新安裝一些包。

#yum install –y cargo

Suricata 默認安裝到 /usr/local/bin/,默認配置文件目錄 /usr/local/etc/suricata/ ,輸出目錄/usr/local/var/log/suricata。 可通過以下前綴可指定具體位置:

--prefix=/usr/ 指定安裝到/usr/bin/目錄;

--sysconfdir=/etc 指定配置文件在/etc/suricata/目錄

--localstatedir=/var 指定輸出日志文件在/var/log/suricata/目錄

啟用數據包分析選項:--enable-profiling 啟用IPS功能選項:--enable-nfqueue,開啟這項功能需要用到這兩個包:libnetfilter_queue和 libnfnetlink

測試安裝情況:

#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib

#/usr/bin/suricata -v

輸出: Suricata 4.1.3 USAGE: /usr/bin/suricata [OPTIONS] [BPF FILTER]

即表示安裝正常了。

查看Suricata是否支持IPS模式 $sudo suricata --build-info

如果輸出有: NFQueue support: yes 表示支持IPS模式。

安裝配置文件 sudo make install-conf #安裝默認配置文件。Suricata源代碼帶有默認的配置文件。

安裝規則庫:(先不安裝,自己寫規則) sudo make install-rules # 安裝默認規則。從EmergingThreats.net上下載可用的社區規則集快照,並顯示存儲目錄。

如果規則庫不能安裝的話,可以手動下載規則庫並進行解壓放到rules文件夾中 wget https://rules.emergingthreats.net/open/suricata-4.0/emerging.rules.tar.gz

基本配置 創建相關目錄

sudo mkdir /var/log/suricata //日志目錄

sudo mkdir /etc/suricata //配置文件目錄

三、配置suricata

(一)配置基本參數

Suricata 的配置文件默認在/etc/suricata/suricata.yaml。需要配置HOME_NET地址、規則路徑以及輸出格式等。 vars: address-groups: HOME_NET: "[192.168.58.0/24]" //本地主機所在網段,信任網段 EXTERNAL_NET: "!$HOME_NET" //其他網段,非信任網段

(二)修改規則文件路徑

default-rule-path: /etc/suricata/rules/ //規則文件所在目錄 rule-files: //下面列出包含的規則文件名

  • botcc.rules -emerging-attack_response.rules
  • emerging-chat.rules
  • my.rules(其他刪除,添加自己的規則文件~~~) 其中,default-rule-path 用於指定存放規則路徑,而后續 rule-files 參數則是用來指定規則文件名。

(三)設置輸出

#global stats configuration ... outputs:

  • fast: enabled: yes filename: fast.log append: yes
  • unified2-alert: enabled: yes
    filename: unified2.alert

(四)網卡特性設置

關閉網卡的 LRO/GRO 功能: sudo ethtool -K ens33 gro off lro off

輸出: Cannot change large-receive-offload //表示網卡不支持 LRO 功能

四、FW開啟路由轉發

檢查Linux系統中轉發是否打開:

# sudo sysctl net.ipv4.ip_forward net.ipv4.ip_forward = 1 

如果為0,說明沒有開啟轉發,則需要手動打開。

(1)臨時開啟路由轉發

#echo "1" > /proc/sys/net/ipv4/ip_forward 或執行:

#sysctl -w net.ipv4.ip_forward=1

(2)隨系統啟動轉發功能 修改/etc/sysctl.conf文件, vi /etc/sysctl.conf

#Controls IP packet forwarding net.ipv4.ip_forward = 1 然后,保存,執行命令: /sbin/sysctl -p即可立即生效。

(3)Iptables防火牆配置 如果要使用Suricata的IPS模式,也就是IPS inline模式的話還需要配置iptables防火牆。 sudo iptables -I FORWARD -j NFQUEUE --queue-num 0 //默認為0隊列 sudo iptables -I INPUT -j NFQUEUE --queue-num 0 sudo iptables -I OUTPUT -j NFQUEUE --queue-num 0

//也可指定協議 sudo iptables -I INPUT -p tcp -j NFQUEUE --queue-num 0 sudo iptables -I OUTPUT -p tcp -j NFQUEUE --queue-num 0

//同時指定端口號 sudo iptables -I INPUT -p tcp --sport 80 -j NFQUEUE --queue-num 0 sudo iptables -I OUTPUT -p tcp --dport 80 -j NFQUEUE --queue-num 0

//也可按照物理接口號指定 sudo iptables -I FORWARD -i eth0 -o eth1 -j NFQUEUE sudo iptables -I FORWARD -i eth1 -o eth0 -j NFQUEUE

Suricata規則說明: Suricata完全兼容Snort的規則,而且比Snort功能更強大,支持drop動作和reject等動作,可直接丟棄數據包。 制定規則: my.rules: drop http any any -> 192.168.31.100 any (msg:"suricata-alert:Select Attack!!";content:"select";nocase;sid:800001;rev:1;) reject http any any -> 192.168.31.100 any (msg:" suricata-alert:Union Attack!!";content:"union";nocase;sid:800002;rev:1;) reject http any any -> 192.168.31.100 any (msg:" suricata-alert:SQL Injection Attack tries!!";content:"and";nocase;sid:800003;rev:1;) reject http any any -> 192.168.31.100 any (msg:" suricata-alert:SQL Injection Attack tries!!";content:"and";http_uri;nocase;sid:800004;rev:1;)

suricata -c /etc/suricata/suricata.yaml -q 0

iptables -I FORWARD -j NFQUEUE --queue-num 0

從終端訪問服務器,分別輸入select、union等關鍵字,查看阻止效果。

查看日志:

在/var/log/suricata/fast.log文件中內容為:

3/30/2019-14:49:34.062496 [Drop] [] [1:800001:1] Attack!! [] [Classification: (null)] [Priority: 3] {TCP} 192.168.33.138:1080 -> 192.168.31.100$ 03/30/2019-14:49:36.600674 [Drop] [] [1:800001:1] Attack!! [] [Classification: (null)] [Priority: 3] {TCP} 192.168.33.138:1081 -> 192.168.31.100$ 03/30/2019-14:52:15.682880 [Drop] [] [1:800001:1] Attack!! [] [Classification: (null)] [Priority: 3] {TCP} 192.168.33.138:1086 -> 192.168.31.100$ 03/30/2019-15:00:25.421480 [] [1:800001:1] Attack!! [] [Classification: (null)] [Priority: 3] {TCP} 192.168.33.138:1097 -> 192.168.31.100:8083 03/30/2019-15:02:41.651144 [Drop] [] [1:800001:1] Select Attack!! [] [Classification: (null)] [Priority: 3] {TCP} 192.168.33.138:1098 -> 192.168$ 03/30/2019-15:03:12.747903 [Drop] [] [1:800001:1] Select Attack!! [] [Classification: (null)] [Priority: 3] {TCP} 192.168.33.138:1099 -> 192.168$ 03/30/2019-15:03:12.747903 [Drop] [] [1:800002:1] Union Attack!! [] [Classification: (null)] [Priority: 3] {TCP} 192.168.33.138:1099 -> 192.168.$

注意:

實驗中的IP地址等需要根據自己的實際情況進行修改。

錯誤解決:

1、測試運行錯誤:

[root@localhost suricata-4.1.3]# /usr/bin/suricata -v /usr/bin/suricata: error while loading shared libraries: libhtp.so.2: cannot open shared object file: No such file or directory 查看依賴關系,發現庫文件均在/lib64/路徑下: [root@localhost suricata-4.1.3]# ldd /usr/bin/suricata linux-vdso.so.1 => (0x00007ffc9d3a7000) libhtp.so.2 => not found librt.so.1 => /lib64/librt.so.1 (0x00007fedd6252000) libm.so.6 => /lib64/libm.so.6 (0x00007fedd5f50000) …… 做軟連接: [root@localhost suricata-4.1.3]# ln -s /usr/lib/libhtp.so.2 /lib64/libhtp.so.2

再次測試即正常。

2、執行make install-rules時,出錯:

suricata: error while loading shared libraries: libhtp.so.2: cannot open shared object file: No such file or directory解決方法: sudo vim /etc/ld.so.conf 加入一行 /usr/local/lib,保存 執行sudo ldconfig命令 即可解決

注意規則路徑,/etc/suricata/ suricata.yaml中設置的default-rule-path值應與安裝路徑處一致。

No rule files match the pattern /usr/share/suricata/rules/emerging-trojan.rules 表示,缺少該規則文件(在yaml配置文件中,包含了該規則文件,但是實際沒有對應的文件) 將對應文件注釋掉即可。

實驗小結:

通過本實驗,了解了IPS的工作原理及安裝步驟,對IPS與防火牆的協同工作有了深刻認識。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM