Chinaunix首页 | 论坛 | 博客
  • 博客访问: 123423
  • 博文数量: 7
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 325
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-18 12:45
文章分类

全部博文(7)

文章存档

2008年(7)

我的朋友

分类: LINUX

2008-03-26 13:06:28

构建LINUX下的入侵检测系统——LIDS

 

 一、什么是LIDS

  LIDS全称为Linux Intrusion Detection System,是一种基于LINUX内核补丁模式的入侵检测系统,它也是一种基于主机的入侵检测系统。它集成在LINUX内核中,来进一步加强LINUX内核的安全性,为LINUX内核提供实现一种安全模式、参考模式和强制存取控制模式。

1)、LIDS的主要功能:

  1、保护:保护硬盘上任何类型的重要文件和目录,如/bin、/sbin、/usr/bin、/usr/sbin、/etc/rc.d等目录和其下的文件,以及系统中的敏感文件,如passwd和shadow文件,防止未被授权者(包括ROOT)和未被授权的程序进入,任何人包括ROOT都无法改变,文件可以隐藏。保护重要进程不被终止,任何人包括root也不能杀死进程,而且可以隐藏特定的进程。防止非法程序的RAW IO 操作,保护硬盘,包括MBR保护等等。

2、检测:集成在内核中的端口扫描器,LIDS能检测到扫描并报告系统管理员。 LIDS还可以检测到系统上任何违反规则的进程。

3、响应:来自内核的安全警告,当有人违反规则时, LIDS会在控制台显示警告信息,将非法的活动细节记录到受LIDS保护的系统log文件中。 LIDS还可以将log信息发到你的信箱中。LIDS还可以马上关闭与用户的会话。

2)、在LINUX上应用LIDS的必要性。

   随着LINUX进一步的推广,现在,有很多中小企业都把自己的重要服务迁移到LINUX上。借着LINUX系统强大的安全性和较少的成本,架设在LINUX系统上的各种企业服务为这些中小企业提供了更大的发展和更强的竞争力。但是,在当前网络环境下,随着黑客技术的不断提高,以及黑客数量的不断增加,加上黑客工具的不断推陈出新,网络攻击事件也越来越多。LINUX系统的安全性正在一次次地经受着考验,LINUX系统的安全缺陷也越来越多突现出来。对于这些应用LIUNX系统在网络中提供企业相关业务的中小企业来说,如何保证这些暴露在网络中的服务器数据的安全性是一个迫在眉急的问题。虽然,网络防火墙能够阻止大部份的网络攻击,但是,一旦这种攻击穿透了防火墙,系统上的重要数据就会有完全控制的危险。因此,在LINUX系统上布置LIDS是很有必要的。它能够保证LINUX系统上的重要目录及文件不被复制、删除,重要的服务不被删除或停止,不能修改系统登录方式等等,为LINUX系统数据安全提供一种全方位的保护,也可作为防火墙的一种后备保护方式存在。

二、获取并安装LIDS补丁包及LIDS工具包

  LIDS是基于开源方式,用户使用是安全免费的。可以直接到LIDS官方网站()上下载,包括LIDS的内核补丁包和LIDS工具包。但一定要保证下载的LIDS补丁包与你当前所使用的LINUX系统内核版本相一致,LIDS工具包可以下载最新版本的,现在的最新版本是:lids-2.2.7.2.tar.gz,LIDS补丁包的最新版本是:lids-2.2.3rc-2.6.21.patch。

1、          应用LIDS内核补丁包。

  现在以上述最新版本的LIDS内核为例。将下载的LIDS内核补丁包保存到/usr/src下,以根用户的权限进入字符模式。现在假设内核在/usr/src/linux下:

 # cd /usr/src/linux

# patch p1 < /usr/src/ lids-2.2.3rc-2.6.21.patch

重新配置此内核:

# makemenuconfig

把有关LIDS的所有项都选中。这样的话,不仅对于不太熟习的用户能省去很多不必要的麻烦,同时,它也不是很大,并不会影响多少系统性能的。

在选择好后就是重新编译内核:

# make

# make install

 这样一个加入了LIDS的内核就重新编译好了,但要应用LIDS还应做相应设置。要使加入了LIDS的新内核工作,得重新启动系统。

2、安装LIDS工具包。

现在也以它的最新版本作例子,把下载的LIDS工具包保存的到/home/用户名(用户名是你系统上登录的用户名)目录中后,按如下方式安装:

# cd /home/用户名

# tar -zxvf lids-2.2.7.2.tar.gz

# cd lids-2.2.7.2

# ./configure

# make

# make install

这样会安装LIDSADM和LIDSCONF这两个工具到/sbin/目录中,同时会创建一个/etc/lids的目录,并在此目录下生成一个默认的配置文件。在使用LIDS前应先用“lidsadm –U”命令更新这个默认的配置文件。

  (注意:如果在编译LIDS工具包时出现GCC报LIDSTEXT.h文件不存在的错误提示,应修改LIDS工具包的安装目录下的MAKEFILE文件,在在其中的CFLAGS选项中加入“-I/usr/src/linux/include”,然后就可以重新编译了。)

3、LIDSADM和LIDSCONF命令工具解释。

1)、LIDSADM工具及其选项:

    LIDSADM是LIDS的管理工具单元,可以用它在你的系统中管理LIDS,包括启用或停用LIDS、封存LIDSADM到内核中和查看LIDS状态。

使用如下命令可以列出所有可用的选项:

 # lidsadm -h

它会返回下列信息:

......

lidsadm -[s/I] -- [+/-] [LIDS_FLAG] [...]

lidsadm -v

lidsadm -h

命令参数:

s:开关某些保护选项时指示应提交密码;

I:开关某些保护选项时不提交密码;

v:显示版本;

V:查看现在LIDS状态;

h:列出所有选项。

可用功能,只列出了它的一部分(Availabe capabilities):

CAP_CHOWN:chown/chgrp

CAP_NET_BROADCAST:监听广播

CAP_NET_ADMIN:接口、防火墙、路由器改变

CAP_IPC_LOCK:锁定共享内存

CAP_SYS_MODULE:插入和移除内核模块

CAP_HIDDEN:隐藏进程

CAP_SYS_RESOURCE:设置资源限制

CAP_KILL_PROTECTED:杀死保护进程

CAP_PROTECTED:保护进程为单用户方式

可用的标志(Available flags):

LIDS:禁止或激活本地LIDS

LIDS_CLOBAL:完全禁止或激活LIDS

RELOAD_CONF:重新加载配置文件

2)、LIDSCONF工具及其选项:

LIDSCONF为LIDS配置访问控制列表(ACLS)和设置密码。

输入以下命令能显示所有可用的选项:

 # lidsconf -h

它会返回以下信息:

......

lidsconf -A [-s subject] -o object [-d] [-t from-to] [-i level] -j Accept

lidsconf -D [-s file] [-o file]

lidsconf -E

lidsconf -U

lidsconf -L

lidsconf -P

lidsconf -v

lidsconf -[h/H]

命令参数:

A:增加一条指定的选项到已有的ACL中

D:删除一条指定的选项

E:删除所有选项

U:更新dev/inode序号

L:列出所有选项

P:产生用Ripemd-160加密的密码

V:显示版本

h:显示帮助

H:显示更多的帮助

子对像(subject):

s [--subject]:指定一个子对像,可以为任何程序,但必须是文件;

目标(object):

o[object]:可以是文件、目录或功能(capabilities)和socket名称。

动作:

j:它有以下在个参数:

DENY:禁止访问

READONLY:只读

APPEND:增加

WRITE:可写

GRANT:对子对像授与能力

ignore:对设置的对像忽略所有权限

disable:禁止一些扩展特性

其它选项:

d :目标的可执行domain

i:继承级别

t:指定从某一时段到某一时段可以进行怎样的操作

e:扩展列表

三、应用LIDS

  1、LIDS的启用与设置。

   首先, 要想使LIDS设置的ACLS发挥作用,应在系统引导时把LIDS封装进内核中。这样每次系统启动到最后阶段,此设置会根据你的系统上的/etc/lids/lids.cap文件中的内容来设置全局功能,此文件中保存的是你设置ACLS。设置封装内核,在你的/etc/rc.d/rc.local文件的未尾加入如下内容:

 /sbin/lidsadm –I

在开始应用LIDS前,如果在安装命令时没有询问你设置密码,那么还应为它设置一个进入终端会话模式的密码,使用如下命令:

 # lidsconf -P

你将被提示输入密码,两次输入密码后,系统将你设置的密码保存到/etc/lids/lids.pw文件中,此密码已通过Ripemd-160加密。设置了密码后,如果你想修改ACLS、Capabilities或当你开始LIDS会话时,就需要你提交此密码。你也可以在以后再次通此命令来修改已设定的密码,并在修改完成后用以下命令重新更新LIDS的配置文件:(注意:在修改密码时不会提示输入旧密码。)

lidsadm -S -- +RELOAD_CONF

特别要注意的是,在对LIDS做了任何修改后,都应使用上述命令重新更新LIDS的配置文件,它将重新加载下列配置文件:

/etc/lids/lids.conf #ACLS配置文件

/etc/lids/lids.cap #LIDS capabilities(功能)配置文件

/etc/lids/lids.pw #LIDS密码文件

/etc/lids/lids.net # LIDS邮件警告配置文件

然后重新启动系统服务使应用改变生效。

2、          通过LIDS来保护系统。

   首先要明白,在通过LIDS保护的LINUX的系统中,可以通过一个LIDS的自由会话终端模式来修改那些已经加入到保护中的数据,所有的LIDS设置工作也可在这个自由会话终端中进行。使用如下命令打开一个LIDS终端会话:

# lidsadm -S -- -LIDS

按提示输入密码后,就建立了一个lids 自由会话终端,在此终端你可以启用或停用LIDS和退出此终端。此时,LINUX系统中的任何数据都是不受LIDS保护的。在完成对文件或数据的修改后,你应通过如下命令重新启用LIDS:

# lidsadm -S -- +LIDS

另外要清楚的是,在一个增加了LIDS的内核的系统中,一个叫/etc/lids/lids.cap文件中包括了所有的功能描述列表。每一个功能项前通过使用“+”号来启用此功能,使用“-”号来禁用此功能,完成设置后你必须重新加载配置文件。

下面我们就来通过运用这些功能项对要保护的重要数据进行设置。

1)、保护文件为只读。

 # lidsconf -A -o /some/file -j READONLY

此命令保证一旦LIDS启用,任何人都不能修改或删除此文件。如果你在lids自由会话终端方式下,你就可以修改/some/file指定的文件,只要此分区不是挂载为只读方式。应用时用实际的文件路径代替/some/file。

2)、保护一个目录为只读。

 # lidsconf -A -o /some/directory -j READONLY

此命令用保证一旦LIDS启用,任何人都不能列出或删除此目录及其中的内容。如果你在自由会话终端方式下,你就可以修改/some/directory目录,只要分区不是挂载为只读方式。例如,你可以设置保护/etc/目录为只读方式:

 lidsconf -A -o /etc -j READONLY

这里要告别注意的是:当你设定/etc目录为只读后,当你想挂载文件系统时,你应该删除/etc/mtab文件,然后使用它的一个符号连接/proc/mounts。同时,你必须修改你的初始化脚本,使用“-n”选项来设置任何mount和umount命令。这个选项告诉mount和umount不更新/etc/mtab文件。例如,你发现在你的初始化脚本中有一行:mount -av -t nonfs,nproc,应把它改为:mount -av -n -t nonfs,nproc。

 

3)、隐藏任何人都看不到的文件或目录。

 # lidsconf -A -o /some/file_or_directory -j DENY

此设置将使用任何人甚至root用户都不能访问它,如果是一个目录,那么此目录下的文件、目录都将隐藏,文件系统也一样。

4)、指定某些特定的程序以只读方式访问一些非常敏感的文件。

 比如在系统登录时要访问/etc/shadow文件,我可以指定某些程序能在系统认证时使用它,如login、ssh、su和vlock。例如,你可以只允许login以只读方式访问/etc/shadow文件:

 # lidsconf -A -s /bin/login -o /etc/shadow -j READONLY

5)、以根用户身份启动一个服务在指定的端口上运行。

 服务运行在指定的端口(1024以下)上需要CAP_NET_BIND_SERVICE功能。如果你禁止了此功能在/etc/lids/lids.cap文件中,你就不能以根用户身份启动任何一个服务运行在指定的端口上。你可以授与某个程序有此功能:

# lidsconf -A -s /usr/local/bin/apache -o CAP_NET_BIND_SERVICE 80 -J GRANT

或者在LIDS_GLOBAL被禁止时启用此服务。

6)、在LIDS启用时,保证X Windows系统能工作。

 X server必须使用CAP_SYS_RAWIO功能才能在LIDS启用时工作。

 # lidsconf -A -s /path/to /your/x-server -o CAP_SYS_RAWIO -j GRANT

7)、启用ssh和scp。

 缺省状态下,ssh和scp通过指定的端口创建远程连接,它需要CAP_NET_BIND_SERVICE功能,因此你可以授与CAP_NET_BIN_SERVICE功能给ssh:

 # lidsconf -A -s /usr/bin/ssh -o CAP_NET_BIN_SERVICE 22 -J GRANT

8)、设置限制访问时间

 例如,只允许用户从早上8:00到下午6:00这段时间能登录:

 # lidsconf -A -s /bin/login -o /etc/shadow -t 0800-1800 -j READONLY

你也可以在“-t”选项中使用“!”,即除指定时间外所有时间能做某项工作。

9)、通过网络发送安全警报。

/etc/lids/lids.net文件中指定通过网络发送安全警报的接收邮箱。要特别要注意的是:在指定e-mail时在E-MAIL地址的前后不能有任何空格。同时,在修改完后必须重新加载它的配置文件。

这篇文章我已经发给网管员世界杂志刊登了,在这里贴出只是想可能有更多的朋友需要这方面的内容。

                                        

阅读(1576) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:Ubuntu 8.04 LTS最新补丁包更新资源

给主人留下些什么吧!~~