现在的位置: 首页 > 综合 > 正文

Portsentry _ 入侵检测 _ 转 _ 参考

2014年11月15日 ⁄ 综合 ⁄ 共 13092字 ⁄ 字号 评论关闭
环境:
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

抱歉!评论已关闭.