天天看點

Portsentry _ 入侵檢測 _ 轉 _ 參考

環境:

RedHat RHEL4U2

以下文章介紹Liunx 環境下 Portsentry版本1及2 實作方法

一、前言

PortSentry是Abacus公司TriSentry套件(包括:PortSentry、 HostSentry和LogSentry)的一個組成部分。PortSentry是一個實時檢測和防範端口掃描的程式;HostSentry是一個主機入侵檢測工具,主要是執行對異常登入的檢測;LogSentry能夠自動監視系統日志的變化,并周期性地通過郵件向系統管理者發送系統安全報告。在TriSentry套件中影響最大的是PortSentry,幾乎所有的Linux Distribution都包括這個軟體。

PortSentry是一個源代碼公開的自由軟體(非GPL)。

本文将通過介紹portsentry1.x版本和2.x版本的安裝使用使大家對這個安全工具有一個全面的認識。

二、Portsentry1.x版本操作步驟

1、擷取并安裝Portsentry1.x版本(RPM包)

大家可以到 http://rpmfind.net或GOOGLE的站點搜尋下載下傳編譯好的的RPM包,目前正式版本是1.2,下載下傳後進行安裝,如下:

# rpm -ivh portsentry*.i386.rpm

安裝的portsentry包括配置檔案(在 /etc/portsentry目錄下),protsentry腳本 (在/etc/init.d/portsentry目錄下),portsentry二進制檔案(在/usr/sbin目錄下) 和readme檔案(在/usr/share/doc/portsentry*目錄下)

2、配置Portsentry

預設安裝條件下portsentry的預設配置檔案/etc/portsentry/portsentry.conf做了下列工作:

(1)在/etc/init.d/protsentry下的啟動腳本自動運作3,4,5級别。

(2)在基本模式下監視下列端口:

TCP:"1,11,15,143,540,635,1080,1524,2000,5742,6667,12345,12346,20034,32771 ,32772,32773,32774,31337,40421,49724,54320"

UDP:"1,513,635,640,641,700,32770,32771,32772,32773,32774,31337,54321"

portsentry的配置檔案中有下列幾個模式,每個模式都能用來監聽TCP和UDP端口:

basic:這是一個預設模式,在這個模式下,給出所監聽端口的服務,所標明 的UDP和TCP端口被portsentry綁定

stealth:在這個模式下,portsentry監聽socket級别上的端口,而不是綁定 的端口,這個模式能發現各種掃描技術!但是要比較basic模式敏感,是以容易産生更多的誤報

advanced stealth:這個模式提供和stealth同樣的檢測.而且并不隻是檢測 所選的端口,它檢測小于所選号碼的所有端口(預設是1024端口).可以排除掉某些特定的端口,這個模式要比stealth模式更加敏感,也容易産生更多的誤報.

當一個端口被portsentry或者其它網絡服務背景程序綁定時,所有從網絡到達該端口的請求都會被網絡程序處理,例如當httpd綁定端口80,那麼來自網絡的 web服務請求會被httpd處理。

選擇要監視的端口基于兩個不同的标準,選擇低端口号來捕獲在端口1開始的以及對幾百個端口掃描的掃描器,如果掃描器在通路完端口1後被阻塞,那麼它就不可能得到本地主機上可能開着的其它端口資訊。另外一個标準是包括被入侵者特殊的檢查端口,因為那些服務最容易被攻擊,它們包括ststat和netstat 服務。如果擔心被攻擊,想要覆寫更多的端口,會希望增加端口到portsentry.conf的清單中.如果從basic到stealth掃描,被監視的端口是被ADVANCED_PORTS_TCP和ADVANCED_PORTS_UDP選項定義的那些。

預設狀态設定:

ADVANCED_PORTS_TCP="1024"

ADVANCED_PORTS_UDP="1024"

這表明,1~1024的所有端口将被監視。

但監視高端口号會引起更多的誤報,可以通過

ADVANCED_EXCLUDE_TCP="111,113,139"

ADVABCED_EXCLUDE_UDP="520,138,137,67"

排除出錯的端口

預設情況,使用TCP(111,113,139)的ident和NetBIOS服務以及UDP(520,138,137,67)的route,NetBIOS和Bootp服務将被排除在進階掃描之外。

(3)選擇對掃描的響應方式,預設狀态,portsentry會記錄攻擊并且阻塞非法的通路。portsentry也提供使用其它工具響應攻擊的方法,例如防火牆規則,路由更改以及主機拒絕的配置。掃描端口,就象敲房子的門,檢查是否上鎖一樣,大多數情況下,這表明有人在尋找你的系統的弱點,這就是為什麼當另外一個主機掃描你的端口,portsentry的反應是阻塞他進一步的通路的原因!不過,沒有永久阻塞通路的行為。

為了響應攻擊(通過掃描被監控端口),所有企圖通過協定連結的服務都将被阻塞并記錄在日志裡。通路系統而被阻塞的主機列在 portsentry.blocked.tcp及protsentry.blocked.udp檔案裡 (在/var/protsentr目錄下),這取決使用了哪個協定掃描,删除條目後恢複對阻塞主機的通路

響應攻擊包括如下三點:

阻塞遠端主機的通路

将從遠端主機發來的資訊重新路由到沒響應的主機

添加防火牆規則來拒絕遠端主機發來的包

配置檔案中是怎樣來定義響應攻擊的?見下:

在portsetnry.conf檔案中,BLOCK_UDP 和BLOCK_TCP選項設定端口被掃描時采取的自動響應方式:

BLOCK_UDP="1"

BLOCK_TCP="1"

引号裡的數字絕頂了另外的主機掃描你的端口時portsentry的反應!

"0"表示掃描端口會被記錄日志,但是并不阻塞

"1"表示觸發KILL_ROUTE和KILL_HOSTS_DENY的運作.

"2"表示對掃描協定服務(TCP或UDP)的通路被臨時阻塞并被記錄,而且,如果KILL_RUN_CMD選項運作任何指令,則該指令被執行(1是預設選項)

KILL_ROUTE:這個選項運作/sbin/route指令對遠端主機到一個無響應的主機的請求重路由:

KILL_ROUTE="/sbin/route add -host $TARGET$ gw 333.444.555.666"

也可以用iptables規則拒絕通路

HILL_HOSTS_DENY:這個選項用來拒絕對任何TCP包封保護的網絡服務的請求:

KILL_HOSTS_DENY="ALL: $TARGET$:TARGET"

用入侵者的IP代替$TARGET$變量,并且将所說的行加入到/etc/sysconfig/iptables裡

如果遠端主機的IP是1.2.3.4,那麼在/etc/hots.deny中應該是這樣的:

ALL:1.2.3.4:TARGET

KILL_RUN_CMD:不是用防火牆,重路由,或者TCP封裝拒絕遠端主機的通路,而是用你喜歡的指令來響應.将BLOCK_TCP和BLOCK_UDP 選項的值設定是2,運作KILL_RUN_CMD的值響應對監視端口的掃描.如:

KILL_RUN_CMD="/path/script $TARGET$ $PORT$"

記住:不要用KILL_RUN_CMD報複掃描你的主機,因為很有可能掃描你的主機本身自己也被攻擊,還有,報複,隻能刺激入侵者下一步的攻擊!

PORT_BANNER:可以發送資訊給通過設定PORT_BANNER選項關閉portsentry監視的人,預設是沒有資訊被定義的.然而,可以去掉下面的注釋使用該資訊(不要濫用資訊):

PORT_BANNER="** UNAUTHORIZED ACCESS PROHIBITED ** YOUR CONNECTION ATTEMPT HAS BEEN LOGGED. GO AWAY."

在關閉上面描述的響應前,可以使用SCAN_TRIGGER選項來設定portsentry将接收的入侵主機的掃描号,預設設定如下:

SCAN_TRIGGER="0"

"0"意味着不接受任何入侵系統的掃描。如果這裡數值設定過大,系統将響應攻擊緩慢,是以一般我們都按預設0來設定。

(4)除了protsentry.conf,portsentry還提供了一些其它的配置檔案,我們可以在portsentry.conf中找到這些檔案的位置:

#

# Hosts to ignore

IGNORE_FILE="/etc/portsentry/portsentry.ignore"

# Hosts that have been denied (running history)

HISTORY_FILE="/etc/portsentry/portsentry.history"

# Hosts that have been denied this session only (temporary until next restart)

BLOCKED_FILE="/etc/portsentry/portsentry.blocked"

/etc/portsentry/portsentry.ignore:包括了不想阻塞的所有IP位址的清單,預設是配置設定給本地主機的所有IP位址都被添加到此檔案

/etc/portsentry/portsentry.history:此檔案曾經通路你的主機而被阻塞的所有IP位址的清單

/etc/portsentry/portsentry.blocked.*:此檔案包括目前通路你的主機而被阻塞的所有主機IP的清單

portsentry.blocked.tcp:檔案包括不恰當掃描TCP端口的主機IP位址

portsentry.blocked.udp:檔案包括不恰當掃描UDP端口的主機的IP位址

通路本地主機的端口隻會在目前會話中被阻塞,也就是說,知道系統reboot或者portsentryRELOAD,是以,要永久的排斥這些遠端主機 ,就需要引入一些其它的限制措施,例如,使用/etc/hosts.deny檔案,防火牆規則或者重路由等

/etc/protsentry/portsentry.modes檔案定義了在啟動時portsentry指令運作的模式.更改為如下:

#tcp

#udp

#stcp

#sudp

atcp

audp

tcp和udp分别是protsentry進行TCP和UDP服務的基本模式,其它可選選項包括 stcp(stealth TCP),atcp(advanced stealth TCP),sudp(sealth UDP),和 audp(advanced stealth UDP).隻運作一個TCP和一個UDP服務 TCP,是以,要使用stealth或者advanced stelth服務,確定在相應的basic服務前面加上一個#号要激活新的服務,運作:

/etc/init.d/portsentry restart 或者service portsentry restart

新的模式立即生效,當系統重新開機後,新的模式仍然有效.

注意:以上檔案更改必須由root權限進行

(5)測試portsentry

可以測試端口是否被用不同的方式正確定護.你需要做的是運作潛在的入侵者會運作的一個程式,看是否會引起portsentry的正确的反應例如用端口掃描程式來看端口是否暴露在外面,也可以用指令,像telnet引發一個特殊的端口,看是否portsentry能抓住它常用的端口掃描程式是nmap,它掃描tcp/udp端口,給nmap一個IP或者主機位址,它就會掃描此主機的大約1500個端口,檢查哪個端口是打開的, 并且推測提供了哪些可以被攻擊的服務.

例如:

1),先關閉portsentry

service protsentry stop

2)用nmap(linux)或ssport(win)掃描

Win下的ssport掃描工具不在這裡說了,傻瓜型的,主要說說nmap的使用

nmap -sS -O 127.0.0.1

nmap -sU -O 127.0.0.1

輸出顯示了本地主機上哪些端口目前分别提供的TCP和UDP服務

3)如果有你不想打開的服務,可以通過使用chkconfig servicename off來關閉.通過編輯/etc/xinetd.d目錄下的檔案,以及将disable=no更改為yes或者改變防火牆規則.

4)如果你想使來自你的主機的服務可用,要使相應的端口不被portsentry監視.從/etc/portsentry/portsentry.conf檔案中的TCP_PORT和/或UDP_PORT選項删除該端口号.

5)從新啟動:

service protsentry start

6)如前,再次運作nmap,提供合法服務的端口,以及被portsentry監視的端口,全部顯示

7)檢查/var/log/messages檔案以確定portsentry沒有試圖監視任何正在提供服務的端口.

這樣,當确定了portsentry建立了所希望的方式後,在網絡的另外一個主機運作nmap來掃描本地主機,如果運作正常的花, 遠端主機掃描你的主機的第一個端口,将阻塞所有随後的掃描.

(6)跟蹤portsentry入侵

除了對入侵者采取行動之外,portsentry還實用syslog記錄他的活動. portsentry啟動/關閉/掃描檢測等活動都被記錄/var/log/messages檔案

(7)和firewall 關系

經過測試發現,即使你的系統上不運作iptables服務,如果啟動portsentry也會啟動iptables,在我的系統上安裝有一個 firestarter,也沒有啟動iptables服務,但當安裝完portsentry并啟動後,系統自動啟動了iptables,并且按 iptables的規則進行包過濾,而原來設定在firestarter的過濾規則都失效了,這點請大家實驗測試。

三、Portsentry2.x版本操作步驟

1、擷取并安裝Portsentry2.x版本(tar包)

大家可以從http://www.macosxunleashed.com/downloads/portsentry-2.0b1.tar.gz得到其源代碼,版本是2.0beta1版。

2、2.x的遵循原理

PortSentry的作用是檢測針對主機的端口掃描,并對這些掃描做出反應。由于這個原因,PortSentry被看作是一個攻擊檢測工具。攻擊者發動網絡攻擊,端口掃描和其它的資訊收集行為是必不可少的,除非他事先對網絡和目标主機已經非常了解。是以,如果能夠從這個階段進行防禦可以更為有效地阻止攻擊。

PortSentry能夠監視TCP、UDP以及各種方式的隐秘掃描。同早期版本比較,新的2.0版對隐秘掃描的檢測能力有了很大的提高。PortSentry能夠檢測到的掃描包括:

* 完全連接配接掃描

這是最基本的一種掃描方式,使用connect()系統調用,建立完整的TCP連接配接。如果連接配接能夠建立,就表明目标主機的目标端口打開。

* SYN/半開掃描

不進行三次握手建立TCP連接配接,隻是向目标主機發出一個SYN資料包。然後等待來自目标主機的響應。如果收到SYN|ACK資料包,表示目标端口打開;如果收到RST資料包就表示端口沒開。這種方法不建立完整的TCP連接配接,是以又被稱為半開(half open)掃描。

* FIN掃描

向目标主機發出FIN資料包進行掃描,最早由Uriel Maimon在Rhrack第49期文15提出。如果收到RST資料包,就表示目标端口關閉;如果沒有收到資料包,就表示目标端口可能打開。

* NULL掃描

使用這種方法發出的探測包中,所有TCP標頭标志都被關閉,和聖誕樹(xmas)掃描相反。

* 聖誕樹(xmas)掃描

探測包TCP標頭的所有标志都被打開,像燈都被打開的聖誕樹,因而得名。

* UDP掃描

使用recvfrom()和write()系統調用掃描。

同其它一些安全工具不同,如果PortSentry發現不能識别的掃描,它就會觸發一個掃描報警。這個特征對于保護系統的安全是非常有益的。

PortSentry面臨的一個最大的難題是如何差別發送到某個端口的一個資料包是探測資料包還是正常的資料。它是通過兩個方式來解決這個問題的。1). 一般情況下,正在使用的端口都有服務程序綁定在上面,PortSentry會忽略這些正在使用的端口;2).PortSentry監視使用者在配置檔案中指定的端口清單。如果一個端口出現在配置檔案的端口清單中,而且還綁定有服務程序,PortSentry也會忽略這個端口。

PortSentry能夠對端口進行智能化的監視。FTP協定是一個比較獨特的協定,它使用雙向的多個連接配接,而且使用的端口很難預計。在主動模式下建立資料連接配接,客戶主機首先打開一個大于1024的端口,然後由伺服器反向建立一個新的連接配接。PortSentry能夠識别這種向内的連接配接,不再對接受FTP伺服器連接配接的端口進行監視。一旦連接配接中斷,PortSentry将自動恢複對這個端口的監視。PortSentry還能夠檢測IP標頭長度小于5的IP分組。同樣,IP分組的任何選項(例如:源路由選項、時間戳選項等)如果被設定,都會引起PortSentry的注意。

3、内部工作機機制

PortSentry監視端口發現可疑資料包,并根據配置對檢測到的異常行為作出反應。為了實作這個目的,PortSentry有一個内部狀态引擎維護着一個連接配接狀态表。狀态表是一個二維表組成的隊列,每個表項由連接配接到本機的IP位址和一個計數器組成。如果一個攻擊者掃描本機(無論是順序掃描,還是随機掃描),PortSentry會檢查狀态表是否出現過攻擊者的IP位址,如果出現過,就增加計數器。一旦計數器達到某個值,就觸發PortSentry對掃描作出反應。

PortSentry對掃描行為的反應取決于配置檔案的設定。它提供了三種方法來阻止攻擊者完成其掃描工作。這三種方法各有優點,也各有風險。

(1) PortSentry在系統的路由表中插入一條路由,使來自掃描位址的資料流量都被發送到一個并不存在的IP位址。進而使系統看起來像一個網絡黑洞,資料隻能流入不能回到掃描位址。這種方法可能導緻路由表占用系統的大量記憶體。從理論上,攻擊者可以僞造大量的位址發起掃描,造成路由表急劇膨脹,降低系統性能,甚至造成系統拒絕服務。

(2).PortSentry可以和防火牆軟體結合使用,動态地修改防火牆的規則,實作和防火牆的關聯。PortSentry2.0版本支援的防火牆包括:ipfw、ipfilter、ipfwadm、ipchains和iptables。PortSentry檢測到掃描行為後,在防火牆中加入規律規則,阻塞發起掃描的IP位址。這種方法也存在拒絕服務風險,一個熟練的攻擊者通過僞造掃描資料包,可能使受保護系統的防火牆阻塞來自所有IP位址的資料包,使系統無法通路。

(3)./etc/host.deny檔案中加入一條針對攻擊IP位址的TCP wrapper規則。這種方法不會阻止攻擊者的掃描,隻能阻止攻擊者通路受TCP wrapper保護的服務。這種方法是三種方法中,保護能力最弱的,靈活性也最差。

這些響應方法各有優點,但是都存在拒絕服務的風險,僞造源位址掃描攻擊是其克星。是以,一定要權衡利弊,慎重使用。

4、安裝并配置PortSentry2.x版本

以上我們講述了PortSentry2.x的基本原理和響應方式,下面我們将讨論如何安裝PortSentry2.x。與1.x相比,PortSentry2.x的安裝比較麻煩。在安裝之前,有些東西需要使用者手工修改。首先需要把源代碼軟體包解壓縮:

$tar zxvf portsentry-2.0b1.tar.gz

在編譯之前,需要對portsentry_config.h檔案的某些配置進行修改,這個檔案定義了一些很重要的資訊,對于Portsentry能否正常運作至關重要:

* CONFIG_FILE

PortSentry配置檔案的路徑

* WRAPPER_HOST_DENY

tcp_wrappers的hosts.deny檔案所在的路徑,PortSentry能夠使用tcp_wrappers應付掃描行為,它将發起掃描的主機放到hosts.deny檔案中,tcp_wrappers就會拒絕從這個主機發起的連接配接。

* SYSLOG_FACILITY

PortSentry使用的syslog facility。預設情況下是LOCAL_DAEMON,使用這個syslog facility,syslogd一般會把PortSentry的警告資訊記錄在/var/log/messages檔案中,這取決于/etc /syslog.conf檔案。

在系統中,如果某個監控程式不使用自己的日志檔案,那麼它的日志資訊一般會被syslogd記錄到/var/log/messages檔案。這樣會造成這個檔案的資訊非常龐大、雜亂,不容易閱讀。是以最好指定PortSentry自己的日志檔案,專門儲存PortSentry發出的警告資訊。使用者可以按照以下步驟設定PortSentry自己使用的日志檔案:

* 修改PortSenry_config.h檔案的SYSLOG_FACILITY一行,改變PortSentry使用的日志FACILITY:

SYSLOG_FACILITY LOG_LOCAL0 /*LOG_LOCAL0-7都可以*/

* 在/etc/syslog.conf檔案中加入下面一行,設定PortSentry使用的日志檔案。你也可以選擇自己喜歡的日志檔案名。

local0.* /usr/local/psionic/portsentry2/portsentry.log

做了以上的修改後,syslogd将把PortSentry産生的報警資訊同時記錄到/usr/local/psinic/portsentry2 /portsentry.log和/var/log/messages兩個檔案。如果想避免這種情況,還要繼續修改/etc/syslog.conf檔案。在這個檔案有一行:

*.info;mail.none;news.none;authpriv.none; /var/log/messages

把它改為:

*.info;mail.none;news.none;authpriv.none;local0.none /var/log/messages

最後重新啟動syslogd程式,使以上所做的修改生效:

# /etc/init.d/syslog restart

* SYSLOG_LEVEL

警告資訊的syslog級别,預設是LOG_NOTICE,一般不必修改。

做完以上設定之後,我們可以執行以下指令,編譯安裝PortSentry:

#make linux&&make install

預設情況下, PortSentry2.x會被安裝到/usr/local/psionic/portsentry2目錄下。

配置PortSentry2.x

PortSentry2.x有兩個主要配置檔案:portsentry.conf和portsentry.ignore。portsentry.conf 是PortSentry2.x的主配置檔案;portsentry.ignore檔案儲存不想阻塞的主機位址。這點和1.x都是一緻的。

portsentry.ignore至少要包括127.0.0.1以及本機的接口。建議不要把内部網絡的所有IP位址都放到這個檔案中。因為如果内部網絡的某台主機被侵入了,攻擊者就可能利用這台主機攻擊PortSentry保護的主機。反之,如果被侵入主機IP位址不在這個檔案中,可能會被 PortSentry檢測到。這個檔案裡面包含的IP位址是CIDR格式的,例如:

127.0.0.1/16

0.0.0.0

PortSentry使用portsentry.conf檔案作為自己的主配置檔案。使用者可以編輯這個配置檔案設定PortSentry的各項功能。和 1.x版相比,PortSentry2.x發生了很大的變化,PortSentry 1.x是通過綁定到被監視的端口,實作對端口掃描行為的監視;而PortSentry2.x不再使用這種方式監視掃描行為,而是使用LibPcap庫從網絡接口獲得資料包進行分析。是以,PortSentry2.x的配置檔案和PortSentry1.x也有很大的不同。

* INTERFACE

可以設定為“auto”或者要監視的網絡接口名稱,例如:eth0、fxp0等。

* INTERFACE_ADDRESS

這個變量設定被監視網絡接口的IP位址。PortSentry不能自動确定這個變量的資訊。

* TCP_PORTS和UDP_PORTS

指定需要PortSentry監聽的端口号。PortSentry預設的配置檔案中提供了三種類型:comprehensive、aware和bare- bones。comprehensive裡面包含54個TCP端口和32個UDP端口;aware包含30個TCP端口和18個UDP端口;bare- bones包含24個TCP端口和14個UDP端口。

* IGNORE_FILE

portsentry.ignore檔案的位置,預設情況下是/usr/local/psionic/portsentry2/portsentry.ignore。

* HISTORY_FILE

記錄曾經的被阻塞主機清單,預設位置是/usr/local/psionic/portsentry2/portsentry.history。

* BLOCKED_FILE

本次PortSentry運作期間,被阻塞主機的清單。是一個臨時性的檔案PortSentry退出後會被清空,裡面的主機清單加入到 HISTORY_FILE。預設位置是/usr/local/psionic/portsentry2/portsentry.blocked。

* RESOLVE_HOST

設定是否把發起攻擊的IP位址解析為域名。1表示啟用;0表示不使用這個功能。

* BLOCK_UDP/ BLOCK_TCP

設定針對UDP/TCP探測的自動反應功能。有三個選項:

0:隻對探測行為進行記錄,不阻塞探測封包中的源位址;

1:啟動KILL_RUN_CMD指定的指令,然後運作KILL_ROUTE指定的指令,阻塞探測封包中的源位址;

2:隻啟動KILL_RUN_CMD設定的指令,使用外部的程式或者腳本處理探測行為。

BLOCK_UDP和BLOCK_TCP是下面幾個功能選項(KILL_ROUTE、KILL_RUN_CMD)的入口。

* KILL_ROUTE

如果檢測到攻擊,PortSentry能夠主動斷開到惡意主機的路由。使用KILL_ROUTE指定切斷路由,PortSentry使用的外部指令。注意:出于安全的考慮,一定要使用完全路徑指定PortSentry使用的外部指令。宏$TARGETS$被用來指定惡意主機的位址。PortSentry 可以使用兩種方式切斷惡意主機的路由:

1. 直接使用route指令

使用route指令将到惡意位址的網關定義為本地子網的一個位址,一般使用localhost位址127.0.0.1即可。

KILL_ROUTE=“/sbin/route add -host $TARGET$ gw 127.0.0.1”

這是最基本的設定,對于支援reject選項的Linux版本可以使用如下指令:

KILL_ROUTE=“/sbin/route add -host $TARGET$ reject”

2. 使用包過濾規則

系統核心一般具有包過濾功能,是以使用包過濾,比直接使用route程式具有更大的靈活性。對于Linux支援的幾種防火牆,可以使用以下指令:

* ipfwadm

KILL_ROUTE=“/sbin/ipfwadm -I -i deny -S $TARGET$ -o”

* ipchains

KILL_ROUTE=“/sbin/ipchains -I input -s $TARGET$ -j DENY -l”

* iptables

KILL_ROUTE=“/usr/local/bin/iptables -I INPUT -s $TARGET$ -j DROP”

* KILL_HOSTS_DENY

如果系統使用了TCP_wrappers,可以使用KILL_HOST_DENY使PortSentry将惡意主機位址放到hosts.deny檔案中。TCP_wrappers會拒絕從這些位址向受保護的服務發起連接配接。

KILL_HOSTS_DENY=“ALL: $TARGET$ : DENY”

* KILL_RUN_CMD和KILL_RUN_CMD_FIRST

KILL_RUN_CMD設定PortSentry執行KILL_ROUTE指令之前,或者以後運作的指令。KILL_RUN_CMD_FIRST如果為 1,KILL_RUN_CMD指定的指令會先于KILL_ROUTE指令執行;如果為0,則反之。這個選項提供了一種更為靈活的反應方式,利用這個特征甚至可以發起對攻擊主機的反擊。比如如下:

KILL_RUN_CMD=”/usr/bin/nmap -O $TARGET$”>> /var/log/scanIP.log 可以在/var/log/scanIP.log中檢視這些主機的資訊,掃描他哦

* SCAN_TRIGGER

PortSentry有一個狀态引擎,能夠記住連接配接的主機。使用SCAN_TRIGGER選項可以使PortSentry忽略一定數量的端口掃描,不對其作出反應。通過增減這個選項的值,可以調整對于掃描的敏感程度。這個選項的預設值是0,也就是對端口掃描立刻作出反應。如果不想使PortSentry過于敏感的話,可以把這個值設定為1或者2,這樣會減少誤報警的發生。如果這個值再大,就會使系統的反應過于遲鈍。

5、用PortSentry2.x保護系統

根據自己的情況做完設定以後,我們就可以運作PortSentry來保護系統了。PortSentry2.x和PortSentry1.x的另一個差別就是使用更為簡單。PortSentry1.x提供了六個監視模式:tcp、udp、stcp、sudp、atcp和audp。相對來說,PortSentry2.x就簡單得多了。不需要任何參數啟動,PortSentry就可以自動監視網絡上的TCP和UDP流量:

#/usr/local/psionic/portsentry2/portsentry

我們可以把這句話加到/etc/rc.d/rc.local中,讓系統啟動後就能開始監測

6、測試方法同1.x版本

四、結論:

随着各種掃描器的廣泛傳播,網絡掃描對網絡安全構成了很大的威脅。對付網絡掃描攻擊,最好的辦法是使自己的網絡和主機無懈可擊。除此之外,使用一些必要的安全工具加強網絡和主機也是很有必要的。PortSentry是一個很出色的主機入侵檢測系統,對于保護自己的主機是很有幫助的,謝謝大家看完這篇的拙文!有意見的提,有臭雞蛋的扔啊!!希望你的機器上hosts.deny有動靜,那麼恭喜你,你抓住第一條魚了!

source : http://bbs.chinaunix.net/viewthread.php?tid=687168

線上PDF http://wenku.baidu.com/view/729f3651f01dc281e53af042.html

= = =

# http://rpmfind.net/linux/rpm2html/search.php?query=portsentry&submit=Search+...

# http://sourceforge.net/projects/sentrytools/

cd /tool

wget ftp://rpmfind.net/linux/freshrpms/redhat/9/portsentry/portsentry-1.1-fr8.i386.rpm

rpm -ivh portsentry-1.1-fr8.i386.rpm

繼續閱讀