Linux -- ***检测系统(IDS)介绍及应用(1)
一、***檢測工具簡介
Internet上的服務器一般都會被安置在防火墻的DMZ(Demilitarized Zone)區,受到防火墻的保護。這在一定程度可以防止具有已知非法特征的危險連接和惡意***,但是卻防止不了合法用戶的非法訪問。什 么 時候會出現合法用戶的非法訪問呢?舉例說明,比如,合法用戶的機器被他人控制,成為了***的***跳 板,或者是合法用戶想做一些別有用心的探測等。除此之外,有些***者還會用端口掃描程序掃描服務器的所有端口,以收集有用的信息(比 如,哪些端口是打開的?哪些是關閉的? )。服務器端口被掃描往往是***的前奏。防火墻的腳本大都 是基于規則的靜態表示,對于網絡上動態的探測就顯 得有點束手無策。因此,現在正在形成一個新的安全學科領域,稱為“***檢測”。
***檢測工具主要是用來檢測已經發生的和正在進行的***, 有些工具甚至可以和防火墻實現“聯動”, 采取一定的措施來阻止這些***。????
目前***檢測技術采取的措施主要分為主動和被動兩種。
主動 方式會通過網絡監測器監聽網絡通信,一旦 察覺到可疑的活動(比如特定數據包的流入), 就會采取相應的措施。 當網絡上有瞬間的***及大流量非法數據發生時,主動方式允許系統在***者發動***的第一時間內做出反應,把***者狙擊在外。被動方式是通過事后分析日志記 錄,當注意到有可疑活動時,系統才會采取相應的措施。?????主流的***檢測工具軟件有CHKWTMP、TCPLogd、Shadow、Snon、MoM等。其中,MoM?比較復雜,功能也 很強勁,支持分布式的***檢測。本文重點介紹簡單實用的PortSentry。PortSentry是 ***檢測工具中配置最簡單、效果最直接的工具之一。PortSentry是Abacus工 程的一個組成部分。Abacus工 程的目標是建立一個基于主機的網絡***檢測系統,可以從http://www.psonic.com的到關于Abacus工 程更為詳細的信息。它可以實時檢測幾乎所有類型的網絡掃描,并對掃描行為 做出反應。一旦發現可疑的行為,PortSentry可 以采取如下一些特定措施來加強防范:
◆?給出虛假的路由信息,把所有的信息流都重定向到一個不存在的主機;
◆?自動將對服務器進行端口掃描的主機加到TCP-Wrappers的/etc/hosts.deny文 件中去;
◆?利用Netfilter機制, 用包過濾程序,比如iptables和ipchain等, 把所有 非法數據包(來自對服務器進行端口掃描的主機)都 過濾掉;
◆?通過syslog()函數給出 一個目志消息,甚至可以返回給掃描者一段警告信息。
二、PortSentry的安裝配置下面詳細介紹PortSentry工具 的安裝和配置方法。
1.安裝從http://sourceforge.net/projects/sentrytools/下 載軟件的最新版portsentry-1.2.tar.gz,用root用 戶執行如下命令 進行安裝:#tar zxvf portsentry-1.2.tar.gz#cd portsentry-1.2#make#make install2.修改配置文件portsentry.conf通過PortSentry進行 ***檢測,首先需要為它定制一份需要監視的端口清單,以及相應的阻止對策。然后啟動后臺進程對這些端口進行檢測,一旦發現有人掃描這些端口,就啟動相應的 對策進行阻攔。
(1)設置端口清單下面給出portsentry.conf中關于端口的默認配置情 況:#Un-comment these if you are really anal;#TCP_PORTS="1,7,9,11,15,70,79,80,109,110,111,119,138,139,143,512,513,514,515,540,636,1080,1424,2000,2001,[..]#UDP_PORTS="1,7,9,66,67,68,69,111,137,138,161,162,474,513,517,518,635,640,641,666,700,2049,31335,27444,34555,[..]#Use these if you just want to be aware:TCP_PORTS="1,11,15,79,111,119,143,540,635,1080,1524,2000,5742,6667,12345,12346,20034,27665,31337,32771,32772,[..]UDP_PORTS="1,7,9,69,161,162,513,635,640,641,700,37444,34555,31335,32770,32771,32772,32773,32774,31337,54321"#Use these for juse bare-bones#TCP_PORTS="1,11,15,110,111,143,540,635,180,1524,2000,12345,12346,20034,32771,32772,32773,32774,49724,54320"#UDP_PORTS="1,7,9,69,161,162,513,640,700,32770,32771,32772,32773,32774,31337,54321"可以有選擇地去掉 前面的注釋來啟用默認配置,也可以根據自己的實際情}兄 定制一份新的清單,格式和原來的一樣即可。端口列表要根據具體情況而定,假如服務器為Web服務 器.那么Web端口就不需要監視. 反之,如果是FTP服 務器,那么監視Web端口也是有必要的。(2)給定相關文件在portsentry.conf中還要添加如下代碼.用以指定相 關文件的位置:#此文件記錄允許合法掃描服務器的主機地址IGNORE_FILE="/usr/local/psionic/portsentry/portsentry.ignore"#此文件中保留了以往所有***主機的IP歷史記錄HISTROY_FILE="/usr/lcal/psionic/portsentry/portsentry.history"#此文件中是已經被阻止連接的主機IP記錄BLOCKED_FILE="/usr/local/psionic/portsentry/portsentry.blocked"(3)設置路由重定向通過配置portsentry.conf文件,可以設置一條虛擬路 由記錄,把數據包重定向到一個未知的主機.使之無法獲取信息。相應配置代碼如下:#Generic#KILL_ROUTE="/sbin/route add $TARGET$ 333.444.555.666"#Generic LinuxKILL_ROUTE="/sbin/route add -host $TARGET$ gw 333.444.555.666針對不同的平臺有不同的路由命令.在配置文件中選擇適臺自己平臺的命令即可。(4)利用其它工具直接利用Linux中的ipchain,iptables,ipfw和Netfilter等 命 令,可以切斷***主機的連接:KILL_ROUTE="/usr/local/sbin/iptables -I INPUT -s $TARGET$ -j DROP"也可以直接把***者的IP記錄到/etc/hosts.deny文 件中,利用TCP-Wrappers保 護機制來防止***:KILL_HOSTS_DENY="ALL:$TARGET$ # Portsentry blocked"(5)定制警告信息可以定制一條警告信息,嘲笑一下***者。不過,手冊上建議不要使用 該選項,因為這樣做可能會暴露主機的IDS系統。PORT_BANNER="** UNAUTHORIZED ACCESS PROHIBITED *** YOUR CONNECTION ATTEMPT HAS BEEN LOGGED. GO AWAY."修改完畢后,改變文件的權限.以保證其安全性:#chmod 600 /usr/local/psionic/portsentry/portsentry.conf3.配置portsentry.ignore文 件/usr/psionic/portsentry/portsentry.ignore文件中 設置了希望PortSentry忽略 的主機IP, 即允?午合法掃描的主機地址下面是配置情況:#Put hosts in here you never want blocked,This includes the IP addresses#of all local interfaces on the protected host(i.e virtual host,mult-home)#keep 127.0.0.1 and 0.0.0.0 to keep people from playing games.127.0.0.1/320.0.0.0#Exclude all local interfaces????所有的本地網絡IP192.168.0.223192.168.254.1127.0.0.1#Exclude the default gateway(s)?默認網關IP192.168.0.10#Exclude the nameservers?????(域名服務器IP)202.101.170.3202.96.9.18修改完成后同樣需要改變文件默認的權限:#chmod 600 /usr/local/psionic/portsentry/portsentry.ignore
三、啟動檢測模式????最后介紹一下PortSentry的 啟 動檢測模式。對應TCP和UDF兩種協 議方式.分別 有三種啟動模式,如下所示:
◆?portsentry-tcp,TCP的 基本端口綁定模式;
◆?portsentry-udp,UDP的 基本端口綁定模式;
◆?portsentry-stcp,TCP的 秘密掃描檢測模式;
◆?portsentry-sudp,UDP的 秘密掃描檢測模式;
◆?portsentry-atcp,TCP的 高級秘密掃描檢測模式;
◆?portsentry-audp,UDP的 高級秘密掃描檢測模式。???
?一 般情況下,建議使用秘密掃描檢測模式或高級秘密掃描檢測模式。使用高級秘密掃描檢測模式(Advanced Stealth Scan Detection Mode),PortSentry會 自動檢查服務器上正在運行的端口,?然后把這些端口從配置文件中移去,?只監控其它的端口。這樣會 加快對端口掃描的反應速度,并且只占用很少的CPU時間。啟動PortSentry的命 令如下:
#/usr/psionic/portsentry/portsentry -atcp#/usr/psionic/portsentr/portsentr -sudp??
?可以把啟動命令加到“/etc/rc.d/rc.local” 腳本文件中,果想讓它和其它后臺進程一樣可以隨時啟動、停止并查看進程狀態,?可以去這樣當重新啟動計算機的時候PortSentry就 會自動運行。如果想讓它和其它后臺進程一樣可以隨時啟動、停止并查看進程狀態,可以去http://linux.cudeso.be/linuxdoc/portsentry.php下 載一個后臺管理腳本,把該腳本放在/etc/rc.d/下 對應的運行級別目錄中即可。
四、測試????啟動PortSentry后, 可以用掃描器掃描服務器,進行測試PortSentry檢測到掃描后,會采取措施進行阻擊,并在/Usr/local/psionic/portsentry?目錄下生成對應的portsentry.blocked.atcp文件或portsentry.blocked.audp文件,文件記錄了發動***的主機的信息。????同時,TCP-Wrappers會 把非法主機的IP添加到/etc/host.deny文 件中。這樣既切斷了與非法主機之間的通信,又在服務器上還保留了其犯罪的證據和時間記錄,讓它無處遁形,不可能再有進一步的非法行為。
二、簡介Linux中的IDS***檢測工具
簡單介紹幾款Linux下的IDS***檢測工具 psad、Apparmor、SELinuxu等.
IDS新寵:PSAD
Psad是端口掃描***檢測程序的簡稱,它作為一個新工具,可以與iptables和Snort等緊密合作,向我們展示所有試圖進入網絡的惡意企圖。這是筆者首選的Linux***檢測系統。它使用了許多snort工具,它可以與fwsnort和iptables的日志結合使用,意味著你甚至可以深入到應用層并執行一些內容分析。它可以像Nmap一樣執行數據包頭部的分析,向用戶發出警告,甚至可以對其進行配置以便于自動阻止可疑的IP地址。
事實上,任何***檢測系統的一個關鍵方面是捕獲并分析大量的數據。如果不這樣做,那只能是盲目亂來,并不能真正有效地調整IDS。我們可以將PSAD的數據導出到AfterGlow 和 Gnuplot中,從而可以知道到底是誰正在***防火墻,而且是以一種很友好的界面展示。
老當益壯:Snort
正如一位可信任的老人,隨著年齡的增長,Snort也愈發成熟。它是一款輕量級且易于使用的工具,可以獨立運行,也可以與psad和iptables一起使用。我們可以從Linux的發行版本的程序庫中找到并安裝它,比起過去的源代碼安裝這應該是一個很大的進步。至于保持其規則的更新問題,也是同樣的簡單,因為作為Snort的規則更新程序和管理程序,oinkmaster也在Linux發行版本的程序庫中。 Snort易于管理,雖然它有一些配置上的要求。要開始使用它,默認的配置對大多數網絡系統并不適用,因為它將所有不需要的規則也包括在其中。所以我們要做的第一件事情是清除所有不需要的規則,否則就會損害性能,并會生成一些虛假的警告。
另外一個重要的策略是要以秘密模式運行Snort,也就是說要監聽一個沒有IP地址的網絡接口。在沒有為它分配IP地址的接口上,如ifconfig eth0 up,以-i選項來運行Snort,如snort –i eth0。還有可能發生這樣的事情:如果你的網絡管理程序正運行在系統中,那它就會“有助于”展現出還沒有配置的端口,因此建議還是清除網絡管理程序。
Snort可以收集大量的數據,因此需要添加BASE(基本分析和安全引擎),以便于獲得一個友好的可視化的分析工具,它以較老的ACID(***數據庫分析控制臺)為基礎。
簡潔方便:chkrootkit和rootkit
Rootkit檢測程序chkrootkit和rootkit Hunter也算是老牌的rootkit檢測程序了。很明顯,在從一個不可寫的外部設備運行時,它們是更可信任的工具,如從一個CD或寫保護的USB驅動器上運行時就是這樣。筆者喜歡SD卡,就是因為那個寫保護的的開關。這兩個程序可以搜索已知的rooktkit、后門和本地的漏洞利用程序,并且可以發現有限的一些可疑活動。我們需要運行這些工具的理由在于,它們可以查看文件系統上的/proc、ps和其它的一些重要的活動。雖然它們不是用于網絡的,但卻可以快速掃描個人計算機。
多面手:Tripwire
Tripwire是一款***檢測和數據完整性產品,它允許用戶構建一個表現最優設置的基本服務器狀態。它并不能阻止損害事件的發生,但它能夠將目前的狀態與理想的狀態相比較,以決定是否發生了任何意外的或故意的改變。如果檢測到了任何變化,就會被降到運行障礙最少的狀態。
如果你需要控制對Linux或UNIX服務器的改變,可以有三個選擇:開源的Tripwire、服務器版Tripwire、企業版Tripwire。雖然這三個產品有一些共同點,但卻擁有大量的不同方面,使得這款產品可以滿足不同IT環境的要求。
如開源的Tripwire對于監視少量的服務器是合適的,因為這種情形并不需要集中化的控制和報告;服務器版Tripwire對于那些僅在Linux/UNIX/Windows平臺上要求服務器監視并提供詳細報告和最優化集中服務器管理的IT組織是一個理想的方案;而企業版Tripwire對于需要在Linux/UNIX/Windows服務器、數據庫、網絡設備、桌面和目錄服務器之間安全地審核配置的IT組織而言是最佳選擇。
應用IDS***檢測工具,為你節省大部分時間。
三、IDS***檢測系統搭建(linux)
Snort 它是一個多平臺的、實時流量分析的***檢測系統。Snort是一個基于libpcap的數據包嗅探器并可以作為一個輕量級的網絡***檢測系統。
snort有三種工作模式:
1、嗅探器
嗅探器模式:是從網絡上讀取數據包并作為連續不斷的流顯示在終端上。
2、數據包記錄器
數據包記錄器:是把數據包記錄到硬盤上。
3、網絡***檢測系統。
網路***檢測:它是可配置的(所以會相對是比較復雜的)。
?
工作原理:
是因為能夠對網絡上的數據包進行抓包,但區別于嗅探器的它能夠根據自定義規則來進行相應和處理。根據以下的規則有五種響應的機制。
Activation (報警并啟動另外一個動態規則鏈)
Dynamic (由其它的規則包調用)
Alert (報警)
Pass (忽略)
Log (不報警但記錄網絡流量)
?
Snort通過在網絡TCP/IP的5層結構的數據鏈路層進行抓取網絡數據包,抓包時需將網卡設置為混雜模式,根據操作系統的不同采用libpcap或winpcap函數從網絡中捕獲數據包;然后將捕獲的數據包送到包×××進行解碼。
?
Snort的運行:
主要是通過各插件協同工作才使其功能強大,所以在部署時選擇合適的數據庫,Web服務器,圖形處理程序軟件及版本也非常重要。
?
不足:
Snort之所以說他是輕量型就是說他的功能還不夠完善,比如與其它產品產生聯動等方面還有待改進;Snort由各功能插件協同工作,安裝復雜,各軟件插件有時會因版本等問題影響程序運行;Snort對所有流量的數據根據規則進行匹配,有時會產生很多合法程序的誤報。
?
***檢測系統:IDS
***防護系統:IPS
?
IDS是防護檢測、IPS是防護功能;
SessionWall :CA公司出品、圖形界面、可以流量和程序全面監控通過報警和阻塞規則進行相應。
RealSecure :ISS RealSecure是一種實時監控軟件,它包含控制臺、網絡引擎和系統代理三個部分組成。RealSecure的模板包括安全事件模板、連接事件模板和用戶定義事件模板。
IDS從本質上可以分成兩類:網絡型IDS(NIDS)和主機型IDS(HIDS)這兩種IDS。
基于主機的叫HIDS (軟件)snort(用于沒有被防火墻檢測出來的***)。需要安裝到被保護的主機、(可以查看流量、日志、用戶行為和一些文件)
基于網絡的叫NIDS (硬件)神州數碼 H3C 都有(硬件產品),安裝需要和交換機來結合的;
?
工作原理:
IDS監聽端口:(收集它所關心的報文
特征比較:IDS 提取的流量統計特征值、與特征庫比對;
報警:匹配度較高的報文劉來那個將被認為是進攻,IDS將報警。
【信息的收集 --- 分析– 檢測是否報警】
基于主機的應用檢測;也只裝在重要的主機上面。
基于網絡的***檢測:就要部署在網絡設備上。
?
IDS的部署位置(snort):
在linux下的應用:(示例)
平臺:
Linux5.4
軟件包:
adodb514.zip
(一種 PHP 存取數據庫的中間函式組件、對php優化的一個數據庫支持;)
base-1.4.5.tar.gz
(是一個用來查看Snort IDS告警的Web應用程序)
snort-2.8.0.1-1.RH5.i386.rpm
(***檢測系統)
snort-mysql-2.8.0.1-1.RH5.i386.rpm
(snort與數據庫結合器件)
snortrules-snapshot-2.8.tar.gz
(***檢測規則庫)
?
安裝:
rpm -ivh snort-2.8.0.1-1.RH5.i386.rpm
安裝完成就可以直接來用行了;
在終端可直接執行指令:snort –v
如果在外網 ping 的時候、在這里就會有記錄顯示;(暫停 ctrl+Z )
把這個進程殺掉:pkill -9 snort
然后還可以再使用jobs 查看一下是否被殺掉;
還可以使用 snort -vde (但是并沒有MAC地址)
信息記錄:snort -vde l ./ &/dev/null & 就可以記錄了、
?
***規則庫的應用:
cd /etc/snort/rules/ (在這文件夾下)
然后進行規則導入、因為是一個壓縮包、直接解壓到/etc/snort/目錄下就可以了:
tar -zxvf snortrules-snapshot-2.8.tar.gz –C /etc/snort/
導入之后在來到 cd /setc/snort/rules/ 目錄下查看;就會有很多規則了。
(軟件的版本過舊相對的***規則庫就很略不同 資源也會顯的老舊 盡量隨時更新)
?
規則的下一部分是協議:
Snort當前分析可疑包的ip協議有四種:TCP 、UDP 、ICMP 、IP ;
(也許不久發展還會有 ARP、IGRP、GRE、OSPF、RIP、IPX )
如果檢測的文件希望記錄到數據里面;所以這個***檢測系統搭建需要安裝的軟件還是比較多的:
mysql、apache、php、libpcap(linux下網絡數據包捕獲函數包)、adodb(可以對數據庫優化)、snort(主程序)、base(是基本的分析和安全引擎)、-acid以項目的代碼為基礎、提供web的前端。
因為安裝這些東西也盡可能是使用yum來裝:
編輯本地yum:
vim /etc/yum.repos.d/rhel-debuginfo.repo
[rhel-server]
name=Red Haterprise Linux server
baseurl=file:///mnt/cdrom/
enabled=1
gpgcheck=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-relase
?
掛載光盤進行yum安裝:
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom/
yum 安裝:
?
安裝完成開啟各種服務,然后chkconfig設置:
?
chkconfig httpd on
對于mysql需要設置口令(默認安裝時是root用戶是沒有口令的)
mysqladmin–u root -p password ‘123’
再進一步在數據添加snort的數據庫以及表格:
(因為我們期望檢測的信息放到mysql數據庫里面去、放到什么數據庫、還要在進一步的設置)
連接到數據庫: mysql -u root -p
?
create database snort;
(新建snort數據庫)
?
use snort;
( 使用snort數據庫 )
show tables;
(在此進行添加表格、每見一個表格、都要添加一個表格的框架;但是呢這里可以直接導入、都是一些創建表格的字段之類的 )
導入表格:
chkconfig mysql on
(依然使用chkconfig設置)
?
然后還希望snort檢測的協議數據是需放置在數據庫里面的、因此還要安裝一個東東:
就是 snort-mysql-2.8.0.1-1.RH5.i386.rpm 包
( 一個snort與數據庫的連接器件 )
vim /etc/snort/snort.conf
更改一些量
更改完成之后可以再啟動snort、(可以做一些細致的命令、做一些詳細的截獲、掛載規則庫、信息輸出);然后可以看一下進程、是否已經啟動了;
或者也可以用jobs 進行查看是否正在運行著;
?
升級安裝 pear
( 即:PHP擴展與應用庫 )
pear install --force PEAR-1.8.1 (系統連接到了互聯網、直接就可以升級)
pear upgrade pear (然后再更新一次)
然后再安裝一些模塊;(圖形化界面的一些模塊)
安裝?adodb
adodb514.zip ( 它是用來對php優化的一個數據庫支持 )
解壓先:unzip adodb514.zip
然后把它也移動到/var/www/html/adodb 這個目錄下。
mv adodb5 /var/www/html/adodb ( 便于還可以做名稱的更改 )
?
base?安裝
tar -zxvf base-1.4.5.tar.gz -C/var/www/html/
為方便操作可以更改一下名稱:以后可以直接訪問物理目錄http://0.0.0.0/base
mv base-1.4.5/ base
然后再重新進入這個目錄、還需要拷貝一些文件。
?
然后在/var/www/html/ 更改里面有個 base_conf.php 的配置文件;
更改之前仍需要作下base目錄的權限設置:chmod o+w base/
就是這樣:
?
(其實這個可以在網頁之中直接進行設置、設置之后就形成了這個文件;通過物理訪問http://192.168.1.101/base/setup/index.php 在里直接設置 ;但是呢有的可能默認設置的日志幾倍太高、所以還需要編輯etc目錄下的php.ini更改一下 )
例如這樣提示:
然后就需要 vim /etc/php.ini
?
既然這樣更改了、就還需要把apache重啟而后重新進入:
一共有5部安裝;語言設置、adodb路徑:
然后設置一些數據庫的相關:
?
界面的管理設置用戶與口令:
?
接著也就進入了基本的分析與安全引擎:(創建base AG)
進入第5部:看到檢測的一些協議。
?
(當然這個沒數據 是因為沒運行 )
重新啟動、在做個Ping動作,新刷新一下網頁:
或者利用工具做個端口掃描測試:
?以上就是linux環境下 搭建IDS***檢測系統簡要流程
參考:http://netsecurity.51cto.com/art/200912/170686.htm?
51cto.com/a/caozuoxitong/Linux/2010/0419/9702.html?
http://www.2cto.com/Article/201310/252742.html
轉載于:https://blog.51cto.com/57388/1555084
總結
以上是生活随笔為你收集整理的Linux -- ***检测系统(IDS)介绍及应用(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JVM1.6 GC详解
- 下一篇: Access2007中如何运行SQL执行