一、***检测工具简介

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):

142520765.png


linux下的应用:(示例)

142527156.png

平台:

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 安装:

150416930.png

 

安装完成开启各种服务,然后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;

(在此进行添加表格、每见一个表格、都要添加一个表格的框架;但是呢这里可以直接导入、都是一些创建表格的字段之类的 )


161514325.jpg

导入表格:

161253533.jpg

chkconfig mysql on

(依然使用chkconfig设置)

 

然后还希望snort检测的协议数据是需放置在数据库里面的、因此还要安装一个东东:

就是 snort-mysql-2.8.0.1-1.RH5.i386.rpm 包

( 一个snort与数据库的连接器件 )

vim /etc/snort/snort.conf

162933138.png

更改一些量

162910304.png

更改完成之后可以再启动snort、(可以做一些细致的命令、做一些详细的截获、挂载规则库、信息输出);然后可以看一下进程、是否已经启动了;

加载中...

或者也可以用jobs 进行查看是否正在运行着;

 

升级安装 pear

( 即:PHP扩展与应用库 )

pear install --force PEAR-1.8.1 (系统连接到了互联网、直接就可以升级)

pear upgrade pear (然后再更新一次)

然后再安装一些模块;(图形化界面的一些模块)

152403410.jpg

安装 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

然后再重新进入这个目录、还需要拷贝一些文件。

153746891.jpg

 

然后在/var/www/html/ 更改里面有个 base_conf.php 的配置文件;

更改之前仍需要作下base目录的权限设置:chmod o+w base/

就是这样:

154505599.jpg

 

(其实这个可以在网页之中直接进行设置、设置之后就形成了这个文件;通过物理访问http://192.168.1.101/base/setup/index.php 在里直接设置 ;但是呢有的可能默认设置的日志几倍太高、所以还需要编辑etc目录下的php.ini更改一下 )

例如这样提示:

155043260.jpg

然后就需要 vim /etc/php.ini

 

155404330.jpg

既然这样更改了、就还需要把apache重启而后重新进入:

一共有5部安装;语言设置、adodb路径:

160551469.png

然后设置一些数据库的相关:

 

160552594.png

界面的管理设置用户与口令:

160709270.png

 

接着也就进入了基本的分析与安全引擎:(创建base AG)

160553935.jpg

进入第5部:看到检测的一些协议。

162224519.jpg

 

(当然这个没数据 是因为没运行 )

重新启动、在做个Ping动作,新刷新一下网页:

163707495.jpg

或者利用工具做个端口扫描测试:

164534653.jpg

164536422.jpg

 以上就是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