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與防火牆的協同工作有了深刻認識。