|
[译文]Debian GNU/Linux下的入侵检测系统
摘要:
今天,许多信息都是存储在计算机系统中,因此很容易通过计算机网络远程访问他们并获取数据,无论是财政,行政,军事,工业还是金融信息。不幸的是,这些数据很容易被一些恶意的人获取并摧毁,因为他们不知道什么叫道德。
关于道德方面,我们无能为力,在本文中我将谈谈在Debian GNU/Linux系统使用一些工具来发现和跟踪入侵者。
介绍
当我们选择了Linux系统之后,我们得考虑在那么多个发行版中到底使用哪个版本,他们许多都是基于RedHat,例如Conectiva (巴西), Hispa source(西班牙), Mandrake (法国), SuSE (德国), Caldera和其他的版本都使用RPM 包管理器,而Slackware更象传统的Unix尽量使用.tgz包,他们几乎都是商业公司开发的,但Debian例外。 Debian提供了一个叫DPKG的包管理器帮助我们自动在Internet上查找和升级软件,检查信任关系,这样使系统管理更加简单并且可以及时的打上安全补丁。
为什么使用Debian GNU/Linux ?
Debian也有一些很重要的功能:
1) 他不包含商业意图并且不按照市场规则运作。
2) 他有一个非常优秀的漏洞跟踪系统,问题将在48小时内得到解决。
3) 他从一开始就是想开发一个完善和可信的操作系统。
4) 他是由全球的志愿者一起开发的。
每个新的版本都对一些新的硬件体系提供支, 现在他支持Alpha, ARM, HP PA-RISC, Intel x86, Intel IA-64, Motorola 680x0, MIPS, MIPS (DEC), Power PC, IBM S/390, Sparc并且可以工作在Sun UltraSparc和Hitachi SuperH。他是Linux系统中支持硬件体系最多的平台。
在现有的Debian发行版中,有很多实时入侵检测工具可以帮助我们检测到恶意的连接。他有两种类型,一个是监视整个网络的(NIDS),另外一类是监视单个主机的(HIDS)。
主机工具
我们使用PortSentry来发现端口扫描,TripWire来检测系统完整性和使用LogSentry做日志分析。第一个和最后一个工具都是Psionic Technologies的TriSentry套件。
端口扫描检测
PortSentry监视我们系统的端口,当他发现一个非正常的连接请求的时候,他可以采取一些行动(一般是阻拦)。
他的主页在http://www.psionic.com/products/portsentry.html 同时PortSentry也支持Solaris, BSD, AIX, SCO, Digital Unix, HP-UX, and Linux系统.
在Debian中,输入下面的命令就可以把他装上了:
apt-get install portsentry
有三种不同的模式可供选择:基本模式,隐蔽模式和高级模式。他的配置文件在/usr/local/psionic/portsentry/portsentry.conf file
他的主要参数如下:
TCP_PORTS,这里你定义在基本模式或者隐蔽模式下需要控制的端口,作者按照不同的控制级别提供了三个端口列表,最大的端口数量是64个。
UDP_PORTS,和上面的相似,不同的只是UDP端口
ADVANCED_PORTS_TCP, ADVANCED_PORTS_UDP, 在高级模式中可能会用到高端口检测,最大可以定义到65535,但是建议不要超过1024,以免误报。
ADVANCED_EXCLUDE_TCP, ADVANCED_EXCLUDE_UDP,提供了一个排除列表,在高级模式中,里面的端口将不会被监视。在这里,你可以写上你提供特殊服务的端口,但不要是真正的服务,例如: ident
IGNORE_FILE, 在这里我们可以写上需要忽略IP的文件的位置,在这里可以找到回环地址,你同样可以在这里添加一个本地地址。
KILL_ROUTE,在这里我们可以添加一个命令来阻拦恶意的主机,例如: iptables -I INPUT -s $TARGET$ -j DROP,$TARGET$指的是恶意主机.
KILL_RUN_CMD, 在阻拦恶意主机之前执行的命令.
SCAN_TRIGGER, 定义超过多少次攻击才启动报警.
PORT_BANNER, 在端口被连接之后显示的banner信息
在配置完之后,你最好使用下面的参数执行其中的一中模式:TCP是使用-tcp (基本模式), -stcp (隐蔽模式)和-atcp (高级模式);UDP就相应的改为 -udp, -sudp, -audp.
完整性检查
可以使用TripWire进行系统完整性检查,他的主页在http://www.tripwire.org他的linux版本是免费的而Windows NT, Solaris, AIX and HP-UX的版本则是商业化的.
在Debian中,我们使用下面的命令安装他:
apt-get install tripwire
保存信息需要两个密钥: 第一个是"site key",他是用来加密策略和配置文件的,另外一个是"local key"是用来加密检测的信息的。
一个准备好的配置文件在/etc/tripwire/twpol.txt ,你可以使用下面的命令初始化他:
twadmin -m P /etc/tripwire/twpol.txt
我们使用下面的命令创建一个当前文件系统初始的数据库:
tripwire -m i 2
检测系统完整性就使用下面的命令:
tripwire -m c
使用下面的命令删除配置文件,以免被入侵者发现了你改动了什么文件:
rm /etc/tripwire/twcfg.txt /etc/tripwire/twpol.txt
如果你需要重新创建配置文件,你可以使用下面的命令:
twadmin -m p > /etc/tripwire/twpol1.txt twadmin -m f > /etc/tripwire/twcfg.txt
日志分析
日志检测是LogSentry的一部分,他以一个非常有效的方法分类和产生可读性强的活动和错误报告。他分为忽略,忽略异常,异常活动,入侵四种不同的日志等级。
他的主页在http://www.psionic.com/products/logsentry.html. 他可以很好的运行在Solaris, BSD, HP-UX和Linux系统中。
在Debian中,我们使用下面的命令安装他:
apt-get install logcheck
logtail程序被安装在/usr/local/bin,下面相应的程序也被安装:
Logcheck.sh,
日志检测脚本
Logcheck.hacking,
入侵的规则文件
Logcheck.ignore,
忽略的规则文件
Logcheck.violations,
异常的规则文件
Logcheck.violations.ignore,
忽略异常的规则文件
你可以使用cron让他每小时执行一次: 0 * * * * /bin/sh /usr/local/etc/logcheck.sh
网络工具
我们使用Snort来发现网络攻击,他的主页在http://www.snort.org他同样可以很好?..低成希??˙SD, Solaris, AIX, Irix, Windows, MacOS X和Linux.
在Debian中,我们使用下面的命令安装他:
apt-get install snort
他有三中工作模式:包括嗅探模式,包记录模式和入侵检测模式。
他有下面的几个主要的参数:
-l 日志的存放目录
指定日志存放的目录。
-h IP
指定需要监控的IP地址。
-b
使用TcpDump的格式输出。
-r 文件
处理一个TcpDump的格式的文件。
Snort的嗅探和包记录模式
在嗅探模式,他读取任何流过网络数据并把他输出到终端,而包记录模式就会把数据记录到一个目录中。
Snort -v
显示IP头信息
Snort -dv
以TcpDump的格式详细输出
Snort -dev
以TcpDump的格式详细输出并显示第二层头信息
Snort的入侵检测模式
在这个模式中snort将检测端口扫描, DoS (拒绝服务攻击), exploits, etc. 他由位于/usr/local/share/snort的规则决定,你可以从他的网站得到最新的规则库。
配置他很简单,只须对snort.conf做一些小小的修改,比如网络信息和工作目录等,下面先改变IP设置:
var HOME_NET IP
简单的执行Snort只须输入:
snort -c snort.conf
日志文件在/var/log/snort,我们可以在这里看到攻击者的IP地,当然这绝对不够,我建议可以认真的看看他的说明,绝大多数的组织,杂志和安全小组都把他评价他为各种系统下最好的入侵检测系统并且强烈推荐他,并且有象Silicon Defense,Source Fire和GUIs这样的商业公司开始提供对他更广泛的软件支持。
有时一些紧急事件的发生需要强大的分析器,这┪侍庖话闶怯扇肭终哂捎谀承┰?虺⑹苑欠ǚ梦饰颐堑姆?窕蛘咂渌?姆?衿鳎?蘼凼且?蔚幕故敲飨缘模?蛘呤前沧耙桓鲂崽狡魃踔潦堑玫礁?痈叩娜ㄏ拊斐傻摹?
其他有用的工具
嗅探器检测
嗅探器就是一个可以把网卡的设置成混杂模式的工具,并且监听整个网络的信息,使用ifconfig程序可以得到详细的网络接口信息:
eth0 Link encap:Ethernet HWaddr 00:50:BF:1C:41:59
inet addr:10.45.202.145 Bcast:255.255.255.255 Mask:255.255.128.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7180 errors:0 dropped:0 overruns:0 frame:0
TX packets:4774 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:8122437 (7.7 MiB) TX bytes:294607 (287.7 KiB)
Interrupt:10 Base address:0xc000
但是如果ifconfig程序被篡改或者嗅探器工作在网络中的其他机器,你必须进行更深一步的检查,例如发封邮件给“陌生”的用户或者尝试查找嗅探器的记录。
有一个叫neped由一个西班牙黑客组织设计的工具,他可以发现整个网络的接口工作模式是不是被设置成了混杂模式,但是现在他并没有被移植到Debian中,我们可以在这里下载ftp://apostols.org/AposTools/snapshots/neped/neped.c
注意:这个服务器似乎几个星期之前就当掉了.
这个程序的执行结果会产生下面的输出:
neped eth0
----------------------------------------------------------
> My HW Addr: 00:80:F6:C2:0E:2A
> My IP Addr: 192.168.0.1
> My NETMASK: 255.255.255.0
> My BROADCAST: 192.168.1.255
----------------------------------------------------------
Scanning ....
* Host 192.168.0.2, 00:C2:0F:64:08:FF **** Promiscuous mode detected !!!
End.
当我们从191.168.0.1发送IP包到192.168.0.2的时候,我们需要知道他的MAC地址,我们可以通过发一个广播包来查询我们所需要IP对应的MAC地址,所有的机器都会接到这个包,但是只有“真正”的机器才会响应。
neped不通过广播,而是使用一个不存在的IP查询网络中的每个IP, 这样只有处于混杂模式的接口才会响应这个包。
Rootkits检测
rootkits可以让入侵者得到更高的权限,一般情况下,他通过覆盖一些系统二进制程序来达到目的。 这就是我们要检测我们的程序是否被篡改的原因。 我们可以这样安装他:
apt-get install chkrootkit
他的网站在www.chkrootkit.org并且他检测下列文件:
aliens, asp, bindshell, lkm, rexedcs, sniffer, wted, z2, amd, basename, biff, chfn, chsh, cron, date, du, dirname, echo, egrep, env, find, fingerd, gpm, grep, hdparm, su, ifconfig, inetd, inetdconf, identd, killall, ldsopreload, login, ls, lsof, mail, mingetty, netstat, named, passwd, pidof, pop2, pop3, ps, pstree, rpcinfo, rlogind, rshd, slogin, sendmail, sshd, syslogd, tar, tcpd, top, telnetd, timed, traceroute, w, write
可以使用下面的命令启动他:
chkrootkit
他检测上面的文件,查找嗅探器和rootkits,还有其他的工具检查日志警告(chkwtmp和chklastlog)并且ifpromisc告诉我们的网卡是否处于混杂模式
参考文献
很有必要读一读上面软件的man文档
--
[m
[42m[31m
你的到来会让我更美丽&欢迎进入E梦天空[30m
|:: http://gzem.kmip.net |::
[m[1;34m※ 来源:.笔山书院 BBS http://bbs.qxntc.edu.cn [FROM: 220.172.245.*][m |
|