Page 1

資策會網路工程師養成班第 82 期

Linux Lab 30% SNORT(IDS/IPS) 指導老師 林旺聰 顧問、彭學勤 老師、楊宏文 老師

班級:UC104 學號:C1000341 姓名:洪志龍


建置拓樸圖

◎拓樸圖解析及修正: 口頭報告時所定立之拓樸圖為上圖所示,但於實作及最後驗收檢討時 咧解到這樣的建置方式會使內部網路連外產生問題,且由於 SNORT 本身就 有兩種設定方式(HIDS 及 NIDS),因此可透過 NIDS 的方式達到控管內部網 路的目的,再先經由防火牆(IPtables)的預先防護減少其負擔,因此下面的 安裝及運行都以將 SNORT 建置在和 NESSUS、NAGIOS 同樣的內部網路來操 作。


建置目標 ◆ 偵測分析已知之入侵與攻擊 ◆ 分析與統計被攻擊之資料 ◆ 被攻擊時能及時反應並防禦


IDS/IPS 簡介 一、什麼是 IDS 入侵檢測系統(Intrusion-detection system,IDS),IDS 是一個監聽設備, 依照一定的安全性原則,對網路、系統的運行進行監視,可自動偵測封包 進出、比對入侵型態、預防入侵攻擊,以保護網路系統資源的安全,並能 適時提出警告的防禦系統,藉此能提早得知可能的攻擊行為,以提供完備 的網路防護。不同於防火牆,IDS 入侵偵測系統是一個監聽設備,防火牆 和 IDS 可以分開操作,可以自行選擇合適的,或是符合需求的。對 IDS 的 部署,唯一的要求是:IDS 應當部署於所有所關注流量都流經的通路上。 因此,IDS 在的位置一般選擇在: ※盡可能靠近攻擊源。 ※盡可能靠近受保護資源。

二、IDS 的種類 A、網路型入侵偵測 (Network-based IDS,NIDS) 基於網路,大多是監控一個區域網路,部署在網路入口,以監聽經 過的每個封包。 B、主機型入侵偵測 (Host-based IDS,HIDS) 基於主機,置在重要的伺服器或主機上,並針對系統上的重要檔案 進行監控,只要流入本機的封包皆會接收,一旦符合入侵規則便發 出警告。

三、什麼是 IPS 入侵防禦系統(Intrusion-Prevention system,IPS),IPS 能夠判別事件的入 侵、關聯、衝擊、方向,並做適當的分析,然後將處理的資訊和命令傳送 給防火牆和其它的網路設備以減輕該事件的風險。在這次的 LAB 中,我使 用 SNORT+Guardian 並結合 Iptables 來做到 IPS。

◆SNORT 的五大優點: A、負載輕:Snort 的原始碼相當簡潔、短小。 B、跨平台:支援 Windows,Linux,Solaris,BSD,IRIX,HP-UX 等系統。 C、功能強大:具有流量分析及分析 IP 網路數據封包的能力。 D、擴展性能佳:未來可能支援 ARP, IGRP, GRE, OSPF, RIP, IPX…等協定。 E、遵循 GPL:一般公司企業及個人、組織都可以自由地使用它作為自己 的 IDS。


◆SNORT 運作原理 採用 Libpcap 函式庫對網路封包進行擷取,並對擷取下來的封包進行 通訊協定、port number、IP 等等的分析。 使用 misused 檢測方式進行入侵分析檢測,利用入侵偵測規則建立起 的資料庫,針對所擷取的封包進行 patten match 的比對。 入侵偵測資料庫檢測的攻擊範圍包含:DoS、Scanport、buffer overflow…等。

◆Snort 以三個模式進行運作: A、偵測模式(Sniffer Mode):此模式下, Snort 將在現有的網域內擷取封包, 並顯示在螢幕上。 B、封包紀錄模式(packet logger mode):此模式下,Snort 將已擷取的封包存 入儲存媒體中(如硬碟)。 C、上線模式(inline mode):此模式下,Snort 可對擷取到的封包做分析的動 作,並根據一定的規則來判斷是否有網路攻擊行為的出現。


SNORT相關安裝SOP及測試 A、封包擷取 ◎安裝封包擷取套件 yast

-i libpcap0

libpcap-devel

pcre

pcre-devel

B、logrotate snort假如遇到大量攻擊時會產生很多的log檔,logrotate會將目前過大 的記錄檔變成為舊檔,再產生新的空白紀錄檔。 ◎安裝 logrotate 套件 yast

–i logrotate

C、Snort ◎安裝 Snort 的 RPM 套件 rpm

-ivh

snort-2.8.5.1-1.1.i586.rpm

◎檢查 Snort 組態檔目錄 ll /etc/snort/


◎檢查 Snort 紀錄檔目錄 ll /var/log/snort/

◎檢查 snort 帳號資訊 finger snort

◎設定 Snort 組態檔 vi /etc/snort/snort.conf 50 var HOME_NET 192.168.6.0/24 53 var EXTERNAL_NET any 120 var RULE_PATH /etc/snort/rules 121 var PREROC_RULE_PATH ../preproc_rules

※特別是第 50 行就是在設定要使用 HIDS 或是 NIDS 的模式,如果在這邊 是輸入 SNORT 主機的 IP,就是採用 HIDS,在這邊我輸入內部網路的網段 則是啟用 NIDS,因此所有對於此網段所產生的攻擊,SNORT 都會產生反應。 (在之後的測試攻擊部分可以看到 NIDS 產生作用) ◎、建立 Snort 規則比對檔 在 SNORT 官網(http://www.snort.org/)可以申請帳號並且下載最新的的 規則庫來比對特徵碼,有的規則庫是免費的,有的則需付費,也可透過安 裝 Oinkmaster 套件來自動更新規則庫,但必須申請對應的 Oinkcode。 ◎建立Snort Rules 暫存檔目錄並進入目錄 mkdir /root/snort_rules cd /root/snort_rules

◎解壓縮snortrules-snapshot-CURRENT.tar.gz tar -zxvf ../snortrules-snapshot-CURRENT.tar.gz ll /etc/snort/rules total 0


◎複製 /etc/snort/rules/ 目錄下 rules 規則檔 cp

rules/*

/etc/snort/rules/

◎啟動 Snort service

snortd

start

◎檢查是否有紀錄到 /var/log/snort/ ll /var/log/snort/

※常態監視 Snort Alert 狀態 (每秒顯示最新 5 個攻擊紀錄): watch

-n1

tail -5

/var/log/snort/eth0/alert

※模擬攻擊 ◎漏洞測試軟體 此軟體為 Windows 上執行的一個小程式,可以針對某網段的所有電腦或是 單一電腦,掃描所有已經開放的 Port,當然對 Snort 來說,也是某種攻擊。


◎觀察攻擊事件 回到 Snort 主機使用觀察指令,可以看到顯示出被掃 Port 的 Alert 記錄:

為了測試 NIDS 是否成功運作,接下來掃描同網段的另一台主機,一樣可 以看到 Alert 記錄:


D、MySQL(匯入 SNORT 資料) ◎停止 Snort service

snortd

stop

◎安裝 MySQL 套件 yast

-I

mysql

mysql-client

libmysqlclient15

libmysqlclient-devel

◎啟動MySQL service

mysql start

◎設定 MySQL密碼並設定開機執行 /usr/bin/mysqladmin -u root password chkconfig --level 135 mysql on

’123456’

◎檢視 MySQL Server 執行狀態 netstat

-tlup

|

grep mysql

◎安裝 Snort 的 MySQL 套件 rpm

-ivh

snort-mysql-2.8.5.1-1.1.i586.rpm

◎設定Snort 對 MySQL 的存取帳號、密碼與資料庫名稱 vi /etc/snort/snort.conf


◎建立 MySQL 相關帳號、密碼與資料庫 mysql -u

root

-p

Enter password: 123456 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 Server version: 5.0.67 SUSE MySQL RPM Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> create database snortdb; Query OK, 1 row affected (0.00 sec) mysql> use snortdb; Database changed mysql> grant all on snortdb.* to snort@localhost; Query OK, 0 rows affected (0.00 sec) mysql> set password for snort@localhost=password('123'); Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> exit

◎匯入Snort的MySQL資料表與欄位(以下為一行指令) mysql -u snort -p snortdb < /usr/share/doc/packages/snort/schemas/create_mysql Enter password: 123 ◎測試 Snort snort

-T

-c

/etc/snort/snort.conf

◎啟動Snort在背景執行 snort

–c

/etc/snort/snort.conf

&


E、Apache2 與 PHP5 ◎安裝 Apache 與 PHP 及相關套件(啟動設定) yast –i apache2 apache2-mod_php5 service apache2 start chkconfig --level 135 apache2 on

php5 php5-mysql php5-gd

◎撰寫首頁測試頁 vi /srv/www/htdocs/phpinfo.php 01 <?php phpinfo(); ?> ◎瀏覽器輸入http://192.168.6.15/phpinfo.php,如見到下方畫面表示PHP正常運作。

◎撰寫SQL測試頁 vi /srv/www/htdocs/sql.php 01 <?php 02 03 04 05 06 07

$link = mysql_connect('localhost', 'root', '123456'); $db_list = mysql_list_dbs($link); while ($row = mysql_fetch_object($db_list)) { echo $row->Database . "<P>"; } ?>


◎用瀏覽器輸入http://192.168.6.15/sql.php,見到如下畫面且有出現MySQL 預設資料庫與snortdb資料庫,表示MySQL正常運作。


F、BASE BASE (Basic Analysis and Security Engine) 能夠讀取 Snort 的 MySQL 資 料庫,並將 Snort 收集紀錄的資料分類、統計與繪圖,並提供查詢等功能, 方便網管人員分析由 Snort 所紀錄的攻擊事件。 ◎解壓縮 base-1.4.4.tar.gz 於網頁根目錄並更名 tar -zxvf

base-1.4.4.tar.gz -C /srv/www/htdocs/

mv /srv/www/htdocs/base-1.4.4/

/srv/www/htdocs/base

◎給予網頁 BASE 目錄名稱與檔案權限為 Aapache ( wwwrun ) chown

wwwrun

/srv/www/htdocs/base

-R

◎BASE 需要的 adodb for PHP5 tar -zxvf

adodb510.tgz –C /srv/www/htdocs/

◎降低 PHP 安全層級並重啟apache服務 vi /etc/php5/apache2/php.ini 356 error_reporting = E_ALL & ~E_NOTICE service apache2 restart

◎用網頁瀏覽器開啟: http://192.168.6.15/base/setup/ →Contiune Pick a Language: chinese Path to ADODB: /srv/www/htdocs/adodb5/

→送出查詢 Pick a Database type: MySQL Database Name: snortdb Database Host: localhost Database Port: Database User Name: snort Database Password: 123


→送出查詢 →不使用系統驗證直接點選送出查詢 →Create BASE AG 建立資料表 → step 5…,建立 BASE 組態檔

◎BASE設定完成以瀏覽器開啟:http://192.168.6.15/base/

◎使用以下指令可以查看你的網路內有哪些你開的規則被比對到 echo "select * from signature;"

| mysql

-u

snort

-p

snortdb


G、Guardian 為了達到 IPS,我在這利用 guardian 這個套件,它會讀取 snort 的 alert 檔 案,將惡意的 IP 自動加入到 iptables 的規則裡面。

◎解壓縮 guardian 套件 tar –zxvf

guardian-1.7.tar.gz

touch /etc/guardian.ignore

◎切換目錄到 guardian 下 cd cp cp

guardian-1.7 guardian.conf /etc/ guardian.pl /usr/local/bin/

◎切換目錄到 scripts 下 cd

scripts/

◎建立及時修改 Iptables 的 script shell 檔並更改其存放路徑 mv iptables_blocl.sh /usr/local/bin/guardian_block.sh mv iptables_unblock.sh /usr/local/bin/guardian_unblock.sh

◎修改guardian_block.sh、guardian_unblock.sh,透過ssh的連線方式來寫入 iptables主機,並且於修改成功後寄信通知管理人員。 cd /usr/local/bin vi guardian_block.sh


vi

guardian_unblock.sh

◎啟動guardian ./guardian.pl

–c

/etc/guardian.conf

◎測試guardian 是否有作用 拿同網域內的一台client模擬攻擊者,當它發出攻擊封包的時候,snort 就會記錄此IP,guardian會把此IP傳遞至iptables的規則內,此時管理者就會 收到mail通知。


心得及檢討 這一次的 LINUX LAB 和上一次 MS LAB 比較起來,在準備 及最後驗收的時候時間較為緊湊,而且不像上一次幾乎都有 標準的 SOP 可以參考,在這次的 LAB 期間很多時候包括套件 的搜尋及安裝都得要上網去查詢,並且要看所執行的 LINUX 版本是否適合,有的時候常會遇到下載了套件卻裝不起來的 狀況,因此對於短短接觸 LINUX 一小段時間的我來說也算是 相當的有挑戰性。SNORT 在 NM 的課程上有接觸過,因此安 裝起來相對的較熟悉,不過對於裡面設定的內容還是得要參 考其官網的說明才會更加了解,這次的驗收美中不足的是, 在最後 IPS 的部分沒有真正做到,因此無法看到是否真正有 達到及時防禦且立即修改 IPtables 的效果,還有在及時更新 規則庫的部分也沒有研究透徹,導致雖然自動更新規則庫有 成功啟動且完成,SNORT 服務卻發生啟動錯誤的問題。由此 看來自己在對於時間上的分配有點缺失,才會到最後沒有辦 法完全掌握整個進度,希望之後的學弟妹在進行 LINUX 驗收 的時候,對於時間的掌控要更為細膩,面對到安裝問題時不 要太過緊張,要建立上網 survey 且能逐步 troubleshooting 的功力,會是在個 LAB 中最大的收穫。


linux lab snort  

snortsnortlinuxlab

Advertisement
Read more
Read more
Similar to
Popular now
Just for you