【轉】Centos5.5 X86_64下安裝PortSentry1.2防止惡意掃描 (2011-12-15 11:41)

 

標籤class 原創 normal  分類: Linux防火牆|系統安全php

原創做品,容許轉載,轉載時請務必以超連接形式標明文章 原始出處 、做者信息和本聲明。不然將追究法律責任。linux

我在檢查一臺Centos5.5服務器的安全環境時,發現不少IP在惡意掃描此服務器的端口,原本想部署snort防入侵環境的,後來發現snort環境部署很是複雜,而以上的惡意掃描徹底能夠用PortSentry來實現。PortSentry是入侵檢測工具中配置最簡單、效果最直接的工具之一。PortSentry是Abacus工程的一個組成部分。Abacus工程的目標是創建一個基於主機的網絡入侵檢測系統,能夠從http://www.psonic.com的到關於Abacus工程更爲詳細的信息。雖然PortSentry被cisco收購後再也不開發,但絲絕不影響此軟件的強大功能。PortSentry能夠實時檢測幾乎全部類型的網絡掃描,並對掃描行爲作出反應。一旦發現可疑的行爲,PortSentry能夠採起以下一些特定措施來增強防範:安全

給出虛假的路由信息,把全部的信息流都重定向到一個不存在的主機;服務器

自動將對服務器進行端口掃描的主機加到TCP-Wrappers的/etc/hosts.deny文件中去,我我的比較喜歡這種方式,由於線上許多環境並不是都能打開iptables,這個選項也是PortSentry默認的功能;網絡

利用Netfilter機制,用包過濾程序,好比iptables和ipchain等,把全部非法數據包(來自對服務器進行端口掃描的主機)都過濾掉;app

經過syslog()函數給出一個目志消息,甚至能夠返回給掃描者一段警告信息。tcp

1、PortSentry的安裝ionic

下面詳細介紹PortSentry工具的安裝和配置方法。ide

1.從http://sourceforge.net/projects/sentrytools/下載軟件的最新版portsentry-1.2.tar.gz,用root用戶執行以下命令進行安裝:函數

#tar zxvf portsentry-1.2.tar.gz

#cd portsentry-1.2_beta

#make

#make install

進行到這步時發現報錯,系統生成不了protsentry執行文件,咱們查看Makefile文件時發現,make後面根據操做系統的不一樣有許多選項。

因此咱們從新執行此步操做,將目錄刪除從新解壓縮

而後咱們執行make linux,發現系統仍然報錯,以下:

SYSTYPE=linux

Making

cc -O -Wall -DLINUX -DSUPPORT_STEALTH -o ./portsentry ./portsentry.c \

./portsentry_io.c ./portsentry_util.c

./portsentry.c: In function ?.ortSentryModeTCP?.

./portsentry.c:1187: warning: pointer targets in passing argument 3 of ?.ccept?.differ in signedness

./portsentry.c: In function ?.ortSentryModeUDP?.

./portsentry.c:1384: warning: pointer targets in passing argument 6 of ?.ecvfrom?.differ in signedness

./portsentry.c: In function ?.sage?.

./portsentry.c:1584: error: missing terminating " character

./portsentry.c:1585: error: ?.ourceforget?.undeclared (first use in this function)

./portsentry.c:1585: error: (Each undeclared identifier is reported only once

./portsentry.c:1585: error: for each function it appears in.)

./portsentry.c:1585: error: expected ?.?.before ?.ot?

./portsentry.c:1585: error: stray ?.?.in program

./portsentry.c:1585: error: missing terminating " character

./portsentry.c:1595: error: expected ?.?.before ?.?.token

make: *** [linux] Error 1

解決方法:

咱們打開portsentry.c文件,在1590行左右,咱們將帶有Copyright 1997-2003字樣的那行調整爲一行便可,以下圖所示

圖1-1 文字有白線標記的那行代碼應調整爲一行

調整後咱們再執行make linux&& make install後,PortSentry順利安裝成功,其安裝路徑爲/usr/local/psionic/portsentry,以下所示表示成功安裝此軟件:

Edit /usr/local/psionic/portsentry/portsentry.conf and change

your settings if you haven't already. (route, etc)

WARNING: This version and above now use a new

directory structure for storing the program

and config files (/usr/local/psionic/portsentry).

Please make sure you delete the old files when

the testing of this install is complete.

2、PortSentry的配置

1.修改配置文件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裏的相關文件

在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 Linux

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

針對不一樣的平臺有不一樣的路由命令,在配置文件中選擇適臺本身平臺的命令便可。個人服務器是Centos5.5 x86_64,以上語法適合Linux平臺的機器;PortSentry很是人性化,下面都有系統對應的配置文件,咱們只須要依樣操做便可。

(4)咱們還能夠利用Linux中的iptables命令,能夠切斷攻擊主機的鏈接:

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"

系統默認是利用TCP_Wrappers來切斷與主機之間的鏈接

(5)定製警告信息

咱們也能夠定製一條警告信息,警告攻擊者。不過,手冊上建議不要使用該選項,由於這樣作可能會暴露主機的IDS系統。

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

修改完畢後,改變文件的權限.以保證其安全性:

chmod 600 /usr/local/psionic/portsentry/portsentry.conf

2.配置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/32

0.0.0.0

#Exclude all local interfaces

192.168.1.103

192.168.1.102

127.0.0.1

記得帶上本機地址,以防萬一。

修改完成後一樣須要改變文件默認的權限:

chmod 600 /usr/local/psionic/portsentry/portsentry.ignore

3、啓動檢測模式

最後介紹一下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

能夠把啓動命令加到「/etc/rc.d/rc.local」腳本文件中,果想讓它和其它後臺進程同樣能夠隨時啓動、中止並查看進程狀態, 能夠去這樣當從新啓動計算機的時候PortSentry就會自動運行。

4、測試

咱們在192.168.1.102上啓動PortSentry後,咱們先暫時清掉portsentry.ignore裏的文件,咱們在另外一臺192.168.1.104的機器上啓動掃描命令nmap -sS 192.168.1.102,稍等片刻咱們就會發現/etc/hosts.deny裏會出現ALL:192.168.1.104的字樣,證實此軟件配置都是生效的。

爲了證實其有效性,我拿本身的線上的一臺LVS機器佈署了portsentry1.2,查看日誌發現

[root@localhost portsentry_beta]# tail /var/log/messages

Jun 6 13:11:07 localhost portsentry[2555]: attackalert: TCP SYN/Normal scan from host: adsl-65-9-251-89.mia.bellsouth.net/65.9.251.89 to TCP port: 80

Jun 6 13:11:07 localhost portsentry[2555]: attackalert: Host 65.9.251.89 has been blocked via wrappers with string: "ALL: 65.9.251.89"

Jun 6 13:11:07 localhost portsentry[2555]: attackalert: TCP SYN/Normal scan from host: adsl-65-9-251-89.mia.bellsouth.net/65.9.251.89 to TCP port: 80

Jun 6 13:11:07 localhost portsentry[2555]: attackalert: Host: adsl-65-9-251-89.mia.bellsouth.net/65.9.251.89 is already blocked Ignoring

Jun 6 13:11:08 localhost portsentry[2555]: attackalert: TCP SYN/Normal scan from host: adsl-65-9-251-89.mia.bellsouth.net/65.9.251.89 to TCP port: 80

Jun 6 13:11:08 localhost portsentry[2555]: attackalert: Host: adsl-65-9-251-89.mia.bellsouth.net/65.9.251.89 is already blocked Ignoring

Jun 6 13:19:57 localhost portsentry[2555]: attackalert: TCP SYN/Normal scan from host: ns38534.ovh.net/91.121.14.153 to TCP port: 80

Jun 6 13:19:57 localhost portsentry[2555]: attackalert: Host 91.121.14.153 has been blocked via wrappers with string: "ALL: 91.121.14.153"

Jun 6 13:35:44 localhost portsentry[2555]: attackalert: TCP SYN/Normal scan from host: 61.156.31.43/61.156.31.43 to TCP port: 80

Jun 6 13:35:44 localhost portsentry[2555]: attackalert: Host 61.156.31.43 has been blocked via wrappers with string: "ALL: 61.156.31.43"

檢查了下/etc/hosts.deny,發現以下惡意IP:

ALL: 113.57.224.3

ALL: 124.238.249.246

ALL: 65.9.251.89

ALL: 91.121.14.153

ALL: 61.156.31.43

感受如今的無聊人士也是很是多的,一天到晚開着掃描器在公網上,難道欲捕肉雞乎?

相關文章
相關標籤/搜索