配置實驗環境
由于本人電腦的存盤空間不足,無法再承擔安裝一個虛擬機的開銷,因此在阿里云上申請了一個云服務器進行本次實驗,
服務器配置如下:
- 1 核 - 2GB 記憶體 - 40GB 系統盤
- 作業系統:Ubuntu 18.04

修改 Ubuntu 源
查看 /etc/apt/sources.list 發現已經配置好了阿里源,故不再做修改,如有需要,可自行改為阿里源或清華源,提高安裝包下載速度,

安裝 Lamp
-
安裝 Apache 2 Web 服務器
sudo apt install apache2 -y -
安裝 MySQL 資料庫,并進行保護
sudo apt install mysql-server libmysqlclient-dev mysql-client autoconf libtool -y sudo mysql_secure_installation -
安裝 PHP 超文本前處理器
sudo add-apt-repository ppa:ondrej/php sudo apt-get update -y sudo apt-get install -y libapache2-mod-php5.6 php5.6 php5.6-common php5.6-gd php5.6-cli php5.6-xml php5.6-mysql sudo apt-get install -y php-pear libphp-adodb執行第一句命令時報了 sudo: add-apt-repository: command not found 錯誤,查閱資料后得知需要先安裝 software-properties-common(如下),然后再執行以上命令,
sudo apt-get install software-properties-common最后,重新啟動 Apache Web 服務器,
sudo systemctl restart apache2 -
測驗 PHP
在 /var/www/html 中創建一個名為 info.php 的新檔案,寫入如下內容,保存并退出,
<?php phpinfo(); ?>現在瀏覽 http://localhost/info.php ,可以看到 PHP 資訊頁面,說明 PHP 作業正常,

安裝 Snort
-
安裝 DAQ,解壓編譯
tar -xvzf daq-2.0.6.tar.gz cd daq-2.0.6 ./configure sudo make & make install然而 ./configure 命令并沒有成功生成 Makefile 檔案,檢查輸出的資訊發現如下錯誤:

意思是缺少一些依賴,于是先安裝 flex 和 bison,
sudo apt-get install flex sudo apt-get install bison再次執行 ./configure,又提示 libpcap 版本太低:

重新安裝 libpcap,
sudo apt-get install libpcap-dev此時再執行最開始的命令,DAQ 編譯成功,
-
安裝 Snort,解壓編譯
tar -xvzf snort-2.9.12.tar.gz cd snort-2.9.12 ./configure --enable-sourcefire sudo make & make install執行 ./configure 的程序中同樣因為缺少一些依賴庫而報錯,需要安裝 libpcre、dumbnet、luajit、libnghttp,
sudo apt-get install libpcre3-dev sudo apt-get install libdumbnet-dev sudo apt-get install liblua5.2-dev sudo apt-get install libnghttp2-dev最后修復鏈接,
sudo ldconfig -
測驗 Snort 是否安裝成功
snort -V
-
配置用戶和目錄
創建用戶和用戶組:
sudo groupadd snort sudo useradd snort -r -s /sbin/nologin -c SNORT_IDS -g snort創建Snort目錄:
sudo mkdir /etc/snort sudo mkdir /etc/snort/rules sudo mkdir /etc/snort/rules/iplists sudo mkdir /etc/snort/preproc_rules sudo mkdir /usr/local/lib/snort_dynamicrules sudo mkdir /etc/snort/so_rules創建檔案來存盤規則:
sudo touch /etc/snort/rules/iplists/black_list.rules sudo touch /etc/snort/rules/iplists/white_list.rules sudo touch /etc/snort/rules/local.rules創建日志目錄:
sudo mkdir /var/log/snort sudo mkdir /var/log/snort/archived_logs修改檔案權限:
sudo chmod -R 5775 /etc/snort sudo chmod -R 5775 /var/log/snort sudo chmod -R 5775 /var/log/snort/archived_logs sudo chmod -R 5775 /etc/snort/so_rules sudo chmod -R 5775 /usr/local/lib/snort_dynamicrules修改檔案的歸屬用戶:
sudo chown -R snort:snort /etc/snort sudo chown -R snort:snort /var/log/snort sudo chown -R snort:snort /usr/local/lib/snort_dynamicrules復制組態檔:
cd /opt/snort-2.9.12/etc/ sudo cp *.conf* /etc/snort sudo cp *.map /etc/snort sudo cp *.dtd /etc/snort cd /opt/snort-2.9.12/src/dynamic-preprocessors/build/usr/local/lib/snort_dynamicpreprocessor/ sudo cp * /usr/local/lib/snort_dynamicpreprocessor/ -
修改組態檔
sudo vi /etc/snort/snort.conf# ipvar HOME_NET 修改為本機的內部網路 ipvar HOME_NET 172.25.45.23/18 # 設定以下組態檔路徑 var RULE_PATH /etc/snort/rules SO_RULE_PATH /etc/snort/so_rules PREPROC_RULE_PATH /etc/snort/preproc_rules WHITE_LIST_PATH /etc/snort/rules/iplists BLACK_LIST_PATH /etc/snort/rules/iplists # 在 output unified2: filename merged.log, limit 128, nostamp, mpls_event_types, vlan_event_types 之后添加 output unified2: filename snort.u2, limit 128 # 啟用 local.rules 檔案,其后的 include 檔案均注釋掉 include $RULE_PATH/local.rules -
添加規則
tar -xzf community-rules.tar.gz cp community-rules/* /etc/snort/rules/檢查規則,
snort -T -c /etc/snort/snort.conf
在規則中添加一條對 ICMP 包的規則,以便測驗,
sudo vi /etc/snort/rules/local.rulesalert icmp any any -> $HOME_NET any (msg:"ICMP Test detected!!!"; classtype:icmp-event; sid:10000001; rev:001; GID:1; )設定 sid 對應資訊,添加 sid-msg 檔案,
sudo touch /etc/snort/sid-msg.map sudo vi /etc/snort/sid-msg.map1 || 10000001 || 001 || icmp-event || 0 || ICMP Test detected || url,tools.ietf.org/html/rfc792 -
測驗組態檔和功能
sudo snort -T -c /etc/snort/snort.conf -i eth0 sudo snort -A console -q -u snort -g snort -c /etc/snort/snort.conf -i eth0關閉防火墻,
ufw disable此時用本機 ping 服務器網口 eth0 的 IP,可以看到服務器上 Snort 在控制臺列印出 alert 告警,說明添加的 ICMP 規則已生效,

安裝 Barnyard2
-
安裝 Barnyard2,解壓編譯
tar zxvf barnyard2-2-1.13.tar.gz cd barnyard2-2-1.13 autoreconf -fvi -I ./ ./configure --with-mysql --with-mysql-libraries=/usr/lib/x86_64-linux-gnu sudo make & make install這里 make 時發生錯誤:

意思是 spo_alert_fwsam.c 中存在 SOCKET 型別的重復定義,查閱大量資料后得知,這是原始碼中的 bug,在 GitHub 上已經有人給出了解決辦法:將該檔案中所有的
SOCKET替換為BARNYARD2_SOCKET,具體可參考 https://github.com/Gerjo/barnyard2/commit/cc53c5573ba016489518bcda69ca64ca7acee2e8#diff-c1f3b2342b04cc7ae2df530b1a871cbeL122然后重新執行上述指令,編譯成功,
-
測驗
barnyard2 -V
-
設定組態檔
sudo cp /opt/barnyard2-2-1.13/etc/barnyard2.conf /etc/snort/ sudo mkdir /var/log/barnyard2 sudo chown snort.snort /var/log/barnyard2 sudo touch /var/log/snort/barnyard2.waldo sudo chown snort.snort /var/log/snort/barnyard2.waldo -
配置資料庫
mysql -u root -pmysql> create database snort; mysql> use snort; mysql> source /opt/barnyard2-2-1.13/schemas/create_mysql; mysql> CREATE USER 'snort'@'localhost' IDENTIFIED BY '123456'; mysql> grant create, insert, select, delete, update on snort.* to 'snort'@'localhost'; mysql> exit; -
添加資料庫配置
sudo vi /etc/snort/barnyard2.conf在末尾添加資料庫配置:
output database: log, mysql, user=snort password=123456 dbname=snort host=localhost sensor name=sensor01修改 barnyard2.conf 的權限,防止被修改,
sudo chmod 644 /etc/snort/barnyard2.conf -
測驗
啟動 MySQL,
service mysql start開啟 Snort,并向 eth0 發送 ping 資料包,
sudo snort -q -u snort -g snort -c /etc/snort/snort.conf -i eth0開啟 Barnyard2,將日志資訊存入資料庫,
-
連續處理模式,設定 barnyard2.waldo 為書簽
sudo barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.u2 -w /var/log/snort/barnyard2.waldo -g snort -u snort控制臺列印出剛才 ping 的記錄,

/var/log/snort 目錄下也生成了相應的日志檔案,

-
檔案處理模式,處理單個日志檔案
sudo barnyard2 -c /etc/snort/barnyard2.conf -o /var/log/snort/snort.u2.1588583079這里選擇其中一個日志檔案進行處理,同樣可以看到剛才的記錄,

再查看一下資料庫條目數量,有所增加,
mysql -u snort -p -D snort -e "select count(*) from event"
-
安裝 BASE
-
安裝 ADOdb
sudo tar zxvf adodb-5.20.14.tar.gz -C /var/www/html sudo mv /var/www/html/adodb5 /var/www/html/adodb -
安裝 BASE
sudo tar zxvf base-1.4.5.tar.gz -C /var/www/html sudo mv /var/www/html/base-1.4.5 /var/www/html/base sudo /etc/init.d/apache2 restart -
配置
修改 /etc/php/5.6/apache2/php.ini ,
error_reporting = E_ALL & ~E_NOTICE重啟 Apache 使配置生效,
sudo /etc/init.d/apache2 restart設定目錄權限,
chown -R root:root /var/www/html chmod 755 /var/www/html/adodb打開 http://localhost/base/setup/index.php ,

設定頁面中,最好每一項都為綠色,表示通過,這里顯示 Web 服務器對 BASE 的安裝目錄不可寫,按照提示,可以在設定完成后創建 base_conf.php,
現在點擊 Continue,跟著導引一步步完成設定,
第 1 步:選擇語言 simplified_chinese ,填寫 ADOdb 所在目錄 /var/www/html/adodb ,
第 2 步:填入資料庫的資訊,按之前配置的資訊填即可(Archive 資料庫的資訊可以不填),
第 3 步:填入管理賬號:snort,密碼:123456,
第 4 步:創建資料表,
第 5 步:提示將顯示的資訊復制到 /var/www/html/base/base_conf.php 中,

完成設定后,顯示以上頁面,代表 BASE 安裝成功,可以看到 MySQL 中的資料,
使用 Snort
Snort 有三種作業模式:Sniffer、Packet Logger 和 Network Intrusion Detection System ,
-
Sniffer 模式只是簡單地從網路上抓取資料包并在終端顯示出來,
如果只是想在螢屏上列印出 IP 和 TCP/UDP/ICMP 包的頭資訊,可以用:
snort -v
-
Packet Logger 模式可把資料包保存在磁盤中,
如果想把資料包資訊存在磁盤上,就要用 Packet Logger Mode ,用以下命令可使 Snort 自動把資料包資訊存到磁盤中:
snort -vde -l log_directory當 Snort 運行在該模式下時,它會把所有抓取的資料包按 IP 分類地存放到 log_directory 中,可用 -h 指定本地網路,以使 Snort 記錄與本地網路相關的資料包:
snort -vde -l log_directory -h 192.168.1.0/24如果在一個高速網路中,或者想記錄資料包以備分析,可以以二進制方式記錄資料包,在這里不用指定 -vde,因為二進制方式將記錄整個包的資訊,如:
snort -l log_directory -b二進制模式把資料包存成 tcpdump 格式,使用如下命令將二進制檔案中的資訊列印到螢屏上:
snort -dv -r snort.log
-
Network Intrusion Detection 模式最復雜,具有高可配置性,它可使 Snort 根據用戶定義的規則分析網路流量,并作出反應,
用以下命令開啟 NIDS 模式:
snort -dev -l log_directory -h 192.168.1.0/24 -c snort.confsnort.conf 是規則集組態檔,在 log_directory 目錄下會生成 alter 日志,記錄入侵檢測的警報資訊,
執行命令后,會有一系列的初始化資訊,

初始化成功,

之后也會列印出包資訊,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/17542.html
標籤:其他
上一篇:Struts2漏洞利用
下一篇:知道嗎,你和高級工程師差距巨大
