分享
 
 
 

linux下的入侵监测系统LIDS

王朝system·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

最近我要毕业设计。可能要做一个ids的系统,所有找到了LIDS,现在我翻译了LIDS的一个HOW-TO文档,但是由于时间太紧,我匆匆的翻译完了。感觉有好多东西不是很正确,所以发表出来。让大家一起来帮助我找错误,呵呵。大家也一起提高一下。我不知道有没有人已经翻译了这个文档,不过我这个是我自己翻译的。可能错误很多。另外,也可以到我朋友的网站下载我打包的原英文的文挡。www.caiduo.com/lids-howoto.zip

内容

l 内容

l 什么是LIDS

l 编译lidsadm

l 安装lidsadm

l 得到成熟的MD-160加密口令

l 修补一个内核

l 配置内核

1.选择描述

l 运行无保护程序时发出警告

l 在安装LIDS前不要运行无保护程序

l 开启锁定子进程功能

l 尽量不要让日志溢出

l 允许转换LIDS保护

l 允许远程拥护来转换LIDS保护

l 允许任何程序来转换LIDS保护

l 允许重新引导配置文件

l 隐藏一些已知的进程

l 可继承的隐藏功能

l 允许一些已知的进程访问/dev/mem(/xfree,等)

l 允许一些已知的进程访问硬盘设备

l 允许一些已知的进程卸载设备

l 允许一些已知的进程访问io端口

l 可继承的卸载功能

l 允许一些已知的进程杀死子进程

l 可继承的杀进程功能

补丁填充域

如何安装UPS

l 编译内核并且安装LIDS

l 保护一些文件的安全

1.用lidsadm

2.用chattr

3.文件在启动的时候更新升级

l LIDS保护前的准备

1.功能

l CAP_CHOWN

l CAP_DAC_OVERRIDE

l CAP_DAC_READ_SEARCH

l CAP_FOWNER

l CAP_FSETID

l CAP_FS_MASK

l CAP_KILL

l CAP_SETGID

l CAP_SETUID

l CAP_SETPCAP

l CAP_LINUX_IMMUTABLE

l CAP_NET_BIND_SERVEICE

l CAP_NET_BROADCAST

l CAP_NET_ADMIN

l CAP_NET_RAW

l CAP_IPC_LOCK

l CAP_IPC_OWNER

l CAP_SYS_MODULE

l CAP_SYS_RAWIO

l CAP_SYS_CHROOT

l CAP_SYS_PTRACE

l CAP_SYS_PACCT

l CAP_SYS_ADMIN

l CAP_SYS_BOOT

l CAP_SYS_NICE

l CAP_SYS_RESOURCE

l CAP_SYS_TIME

l CAP_SYS_TTY_CONFIG

1.选择你要除区的功能

2.放置一个隐藏命令

3.如何确定安全的启动

l 重起系统

l 用LIDS工作

n 例子:转换LIDS

n 例子:网络管理

n 例子:后台管理

n 例子:文件管理

l 关于这个文档

1. 什么是LIDS

LIDS是支持Linux的入侵监测防范系统。

这个就是LIDS-08.1pre1的how-to文档。但是也适用于LIDS-0.8和0.8pre1,2,3,4。但是一些功能可能会不能实现。

现在只支持i386体系。

这个东西的目的是保护linux系统不被root入侵,并在它自己的内核禁止一些系统调用。如果你要管理你的系统,你可以先禁止LIDS保护,再来管理。

首先,要保护LIDS本身不会被root的入侵,我们假定两件事情:

1. 系统是安全的(没有后门)直到LIDS第一次运行。

2. 你是唯一访问过控制终端的(你可以在lilo上加命令行,可以用急救内核或是启动盘启动).

保护LIDS防止root入侵:

1, 禁止模块

2, 禁止内存访问(/dev/mem,/dev/kmem,/dev/kcore)

3, 禁止磁盘访问(/dev/hdxx,/dev/sdxx)

4, 保护每一个文件,包括启动进程(lilo文件,内核映象,后台,简本,模块)

5, 禁止I/O端口的访问(/dev/port,ioperm和iopl 系统调用)

然后你就会想如何入侵监测,LIDS提供了以下功能:

1. 记录机会每一个拒绝的访问

2. 用只读或是只能增加来保护程序或是日志不受root攻击。

对于系统的保护,LIDS提供以下功能:

1. 锁定你的路由表,防火墙规则。

2. 锁定挂载操作

3. 保护后台信号

4. 还有其他一些保护。。。

编译lidsadm

要编译lidsadm程序,进入目录然后

make

你就会看到当前lids的信息,这些主要是用来调试的目的,因为没有这些功能或是一个正确的系统配置。没有人能知道LIDS的当前状态。

安装lidsadm

make install

你必须保证你的/etc目录在你的/系统下。因为LIDS需要读取/etc/lids.conf的文件。

得到一个RipeMD-160加密口令

vmlin1:~# lidsadm -P

MAKE PASSWD

enter password:

Verifying enter password:

RipeMD-160 encrypted password : 46a1492cc2d43652409abfdbb047e4ae099a62f3

修补一个内核

cd /usr/src/linux-linversion

patch -p1 < lidshome/lids-version-linversion.patch

配置内核

确定你选择了

Prompt for development and/or incomplete code/drivers

and

Sysctl support

for

Linux Intrusion Detection System -->

to appear.

细节

l 选择描述

l 运行无保护程序时发出警告

l 在安装LIDS前不要运行无保护程序

l 开启锁定子进程功能

l 尽量不要让日志溢出

l 允许转换LIDS保护

l 允许远程拥护来转换LIDS保护

l 允许任何程序来转换LIDS保护

l 允许重新引导配置文件

l 隐藏一些已知的进程

l 可继承的隐藏功能

l 允许一些已知的进程访问/dev/mem(/xfree,等)

l 允许一些已知的进程访问硬盘设备

l 允许一些已知的进程访问io端口

l 允许一些已知的进程卸载设备

l 可继承的卸载功能

l 允许一些已知的进程杀死子进程

l 可继承的杀进程功能

1.运行无保护程序时发出警告

在没有LIDS保护前(用lidsadm –I –caps…..)运行无保护程序时会发出警告,这个对检测启动序列有很大帮助,但是他不会告诉你哪个模块被加载或是没有被保护。这个功能还可以警告你是否有程序的弱点加到启动进程里。,

2.在安装LIDS前不要运行无保护程序

这个功能让LIDS在没有被保护前拒绝一些执行。要意识到你可以阻止系统在不完全的lids.conf下启动。

3.开启锁定子进程功能

你可以开启这个功能用lidsadm (+LOCK_INIT_CHILDREN)这样就会阻止任何人杀死用LIDS保护的父进程的子进程。你可以运行lidsadm命令用-LOCK_INIT_CHILDREN然后用+LOCK_INIT_CHILDREN,这样,就灭有人能阻止它(拒绝服务器攻击)或是重新用新的配置文件启动它。(重起或是kill -HUP).

4.尽量不要让日志溢出

你可以定义相同内容日志出现的次数。如果在一定时间内有很多相同的日志,就不会在把他们存放到日志里面。这样能避免日志溢出。

5.允许转换LIDS保护

你可以启动转换LIDS功能的开关。但是这样会降低安全性。不过可以方便系统的管理。

具体过程是这样:lidsadm读取当前的允许标志。根据你的命令行升级它们,然后问你密码。把他们配置到LIDS里面。如果密码正确,允许标准就更新了。这时候会有一个报警在日志里。

6.要让LIDS识别你的密码。必须要给他一个RipeMD-160的指纹。这个会被lidsadm来计算。这个指纹非常难破解,就算有人访问你的二进制内核,他们也不能得到你的密码。

你可以培植密码错误的次数。如果超过就会被禁止登陆。每一次登陆的失败会记录到日志里。

7.允许远程拥护来转换LIDS保护

如果你允许没有登陆控制终端的用户开启启动标志的话,就选定这个功能。如果你已经访问了控制终端。你可以禁止这个选项,这样远程的用户就不能关闭LIDS,甚至他有密码。

8.允许任何程序来转换LIDS保护

如果你选定这个功能,你可以允许除了/sbin/lidsadm来操作/proc/sys/lids/locks。我不认为这个会有什么用处。

9.允许重新引导配置文件

选定这个功能就会编译重新引导配置文件的代码。每一次运行+RELOAD_CONF参数给lidsadm,LIDS重新引导/etc/lids.conf和重读dev/inode。

如果在重引导的时候出错,内核不会在意,就象它根本就没有启动一样,因为它认为你看到了错误并即使改正了。

10。隐藏一些已知的进程

这个功能允许你给出一些程序的目录,而这些程序的进程你可以不让它在/proc里出现。(这样就不会在ps里看出)这不会影响安全。如果你不明白这是怎么做的,你也不需要知道它。

11.可继承的隐藏功能

隐藏的进程的子进程,也会被隐藏

12。允许一些已知的进程访问/dev/mem(/xfree,等)

通过这个功能,你可以允许一些在允许进程域下的进程来访问/dev/mem等。

13.允许一些已知的进程访问硬盘设备

如果一些程序因为不能写到磁盘而中断,但是你确实很需要它们。就可以开启这个功能。填写可访问的进程表。

14.允许一些已知的进程访问io端口

如果一些程序不能访问io端口而中断,但是你很确实很需要它们,你可以开启这个功能,填写可访问的进程表。

15.允许一些已知的进程卸载设备

如果你需要你的系统可以自动关闭,(如在ups下)你需要允许一些程序来卸载设备。

16.可继承的卸载功能

选定这个选项允许子程序来卸载设备。

17.允许一些已知的进程杀死子进程

如果你用init的子进程锁定功能并且让你的系统平滑的自动关闭,你必须允许一个进程来杀死后台程序,

18.可继承的杀进程功能

选定这个可以允许子程序来杀死锁定的子init进程。

1.补丁填充域

还有一些特殊列表,如:

/usr/local/sbin/loginlog;/usr/local/sbin/trafficlog;/sbin/mgetty

/usr/X11R6/XF86_SVGA

注意这些有特殊权利的程序可以用LIDS的lidsadm来声明只读来保护。

注意LIDS会在内核启动的时候努力去得到这些文件的/dev/inode数,因此那些没有在根文件系统的程序是不会被LIDS找到的,也就不会得到它们的权限。有可以用+RELOAD_CONF

选项隐藏它来解决这个问题。

2,如何一起安装UPS

这个问题涉及到平滑的自动关闭的问题,意味着一般的杀死后台程序,卸载设备。如果你用到锁定init子进程的功能,你必须允许一个进程来杀死她们。如果你的后台没有被杀死,它可能会让一个设备忙,就不能被卸载。所以,有两个事实很重要。

我们必须找到一个只用来关闭系统,杀死所有后台或卸载设备的程序。但是不幸的时候,这些程序是不存在的。然而,LIDS给你一个杀死进程的继承功能,利用这个功能可以杀死这些进程。

这些程序也可以是/sbin/shutdown的-n选项,它会调用init脚本来停止所有的后台,并卸载设备。

编译内核并安装

如:

make dep;

make clean;

make bzImage;

make modules;

make modules_install;

cp arch/i386/boot/bzImage /boot/vmlinuz

lilo

保护一些文件

1. 用lidsadm

lidsadm -Z

lidsadm -A -r /boot

lidsadm -A -r /vmlinuz

lidsadm -A -r /lib

lidsadm -A -r /root

lidsadm -A -r /etc

lidsadm -A -r /sbin

lidsadm -A -r /usr/sbin

lidsadm -A -r /bin

lidsadm -A -r /usr/bin

lidsadm -A -r /usr/lib

lidsadm -A -a /var/log

2. 用chattr

在ext2文件系统,你也可以用一些ext2的特殊属性,不可变的和只增加的。Chattr是一个标准程序来做:

chattr +i important_stuff

chattr +a important_log

用这些属性,没有人(甚至是root)可以修改,删除你的文件。你必须保证没有人可以删除这些属性,删除CAP_LINUX_IMMUTABLE来实现这个功能。

在启动的时候更新文件

一些文件需要在系统启动的时候写,但是会被LIDS保护,这些文件一般保存在/var目录下,但是也有一些例外:

modules.dep:你除了增加或是删除模块外,不需要在启动的时候更改,可以禁止它在启动的时候更新,删除/etc/init.d/modutils。

ld.so.conf:象modules.dep一样,你除了在增加或是改变库文件的时候,不必要在启动的时候更新 。

mtab:用-n的选项在每次启动的时候生成一个从/etc/mtab到/proc/mounts的一个连接。

LIDS隐藏前的准备

细节:

CAP_CHOWN功能:

在一个_POSIX_CHOWN_RESTRICTED功能定义的系统。这会越过改变系统文件所有者和组所有的权限。

CAP_DAC_OVERRIED功能:

如果_POSIX_ACL定义,就会越过所有的DAC访问,包括ACL执行访问,用CAP_LINUX_IMMUTABLE功能来排除DAC的访问。

CAP_DAC_READ_SEARCH功能:

如果_POSIX_ACL定义,就会越过所有的DAC的读限制,并在所有的文件和目录里搜索,包括ACL限制。用CAP_LINUX_IMMUTABLE来限制DAC访问。

CAP_FOWNER功能:

越过文件说有的允许限制,如文件的所有者ID必须和用户ID一样,除了CAP_FSETID可用。它不会越过MAC和DAC限制。

CAP_FSETID功能:

越过当设置文件的S_ISUID和S_ISGID位的时候,用户的ID必须和所有者ID匹配的限制,设置S-ISGID位的时候,组ID必须和所有者ID匹配,用chown来设置S_ISUID和S_ISGID为的功能限制。

CAP_FS_MASK功能:

用来回应suser()或是fsuser()。

CAP_KILL功能:

一个有有效用户ID的进程发送信号时必须匹配有效用户ID的功能会越过。

CAP_SETGID功能:

允许setgid() 功能,

允许setgroups()

允许在socket里伪造gid

CAP_SETUID功能:

允许set*uid()功能

允许伪造pid在socket。

CAP_SETPCAP功能:

把所有的许可给所有的pid。或是把所有的许可删除。

CAP_LINUX_IMMUTABLE功能

允许更改S_IMMUTABLE和S_APPEND文件属性。

CAP_NET_BIND_SERVICE功能

允许绑定1024下的TCP/UDP套接字

CAP_NET_BROADCAST功能:

允许广播,监听多点传送。

CAP_NET_ADMIN功能:

允许配置接口

允许管理IP防火墙IP伪装和帐户

允许配置socket调试选项

允许修改路由表

允许配置socket上的进程的组属性

允许绑定所有地址的透明代理

允许配置TOS(服务类型)

允许配置混杂模式

允许清除驱动状态

允许多点传送

允许读或写系统记录

CAP_NET_RAW功能:

允许用RAW套接字

允许用PACKET套接字

CAP_IPC_LOCK功能:

允许琐定共享内存段

允许mlock和mlockall

CAP_IPC_OWNER功能:

越过IPC所有权检查

CAP_SYS_MODULE功能

插入或删除内核模块

CAP_SYS_RAWIO功能:

允许ioperm/iopl和/dev/prot的访问,

允许/dev/mem和/dev/kmem访问,

允许块设备访问(/dev/[sh]d??)

CAP_SYS_CHROOT功能:

允许chroot()

CAP_SYS_PTRACE功能:

允许ptrace()任何进程

CAP_SYS_PACCT功能:

允许配置进程帐号

CAP_SYS_ADMIN功能:

允许配置安全钥匙

允许管理随机设备

允许设备管理

允许检查和配置磁盘限额

允许配置内核日志

允许配置域名

允许配置主机名

允许调用bdflush()命令

允许mount()和umount()命令,允许配置smb连接

允许root的ioctls

允许nfsservctl

允许VM86_REQUEST_IRQ

允许在alpha上读写pci配置

允许在mips上的irix_prctl

允许刷新所有的m68k缓存

允许删除semaphores

用CAP_CHOWN去代替“chown”IPC消息队列,标志和共享内存

允许锁定或是解锁共享内存段

允许开关swap

允许在socket伪装pids

允许设置块设备的缓存刷新

允许设置软盘驱动器

允许开关DMA开关

允许管理md设备

允许管理ide驱动

允许访问nvram设备

允许管理apm_bios,串口或是bttv电视设备

允许在isdn CAPI的驱动下生成命令。

允许读取pci的非标准配置

允许DDI调试ioctl

允许发送qic-117命令

允许启动或禁止SCSI的控制和发送SCSI命令

允许配置加密口令在回路文件系统上。

CAP_SYS_BOOT功能:

允许用reboot() 命令

CAP_SYS_NICE功能:

允许提高或设置其他进程的优先权

允许在自己的进程用FISO和实时的安排和配置。

CAP_SYS_RESOURCE功能:

越过资源限制,设置资源限制

越过配额限制

越过保留的ext2文件系统

允许大于64hz的实时时钟中断

越过最大数目的控制终端

越过 最大数目的键

CAP_SYS_TIME功能:

允许处理系统时钟

允许_stime

允许设置实时时钟

CAP_SYS_TTY_CONFIG功能:

允许配置终端设备

允许vhangup()终端

选择你要删除的功能

你必须删除CAP_SYS_MODULE, CAP_SYS_RAWIO 和 CAP_SYS_ADMIN来保护系统不受小的系统攻击。最好也要禁止CAP_NET_ADMIN, CAP_SYS_PTRACE, CAP_LINUX_IMMUTABLE, CAP_KILL, CAP_SYS_RESOURCE, CAP_SYS_TIME 和 CAP_SYS_TTY_CONFIG.

放置密封命令

你必须放置这些命令让它们在启动的时候马上运行,

你可以把它放到rc的脚本里。(rc.local,/etc/init.c/lids,/etc/rc.d/init.d/lids,等)这个要看你系统的情况。

这些命令是。如:

lidsadm -I -- -CAP_SYS_MODULE -CAP_SYS_RAWIO -CAP_SYS_ADMIN -CAP_SYS_PTRACE -CAP_NET_ADMIN +LOCK_INIT_CHILDREN

你必须确定你在启动前已经保护了每个系统的执行,因为一些人可以通过程序更改它,会在功能禁止的时候做一些恶意的行为。

确保启动时的安全

当没有保护程序运行的时候报警LIDS会报警。选择这个功能,你可以禁止选择防止日志溢出,来确定没有遗漏无保护程序。然后你就可以启动并在syslog里能看到哪些程序没有被保护。

重新气筒系统

现在你就可以重新启动系统,如果你培植阻止系统启动,你可以在lilo里用security=0来启动内核。

运行LIDS

转换LIDS

你可以转换LIDS的开关,

lidsadm -S -- -LIDS

foo

lidsadm -S -- +LIDS

注意,如果你在没有保护的文件上工作或是做一些其他设备的修改,他们不会在启动的时候受到保护的。不要忘记用lidsadm -S - +RELOAD_CONF.

你也可以本地的转换LIDS。这表明LIDS只能用lidsadm命令来工作,

lidsadm -S -- -LIDS_LOCAL

foo

lidsadm -S -- +LIDS_LOCAL

例子:网络管理

如,如果你要是加一个路由并且锁定网络管理

lidsadm -S -- +CAP_NET_ADMIN

route add foo

lidsadm -S -- -CAP_NET_ADMIN

例子:后台管理

你可以管理你的后台。

lidsadm -S -- -LOCK_INIT_CHILDREN

init.d/daemon stop

lidsadm -S -- +LOCK_INIT_CHILDREN

运行后台,重新启动,然后保护它。

init.d/daemon start

lidsadm -S -- -LOCK_INIT_CHILDREN

lidsadm -S -- +LOCK_INIT_CHILDREN

文件管理

你可以保护新文件或是修改保护对象

lidsadm -S -- -LIDS

lidsadm -A -r foo

cp MyBrandNewXServer MyXServer

lidsadm -S -- +LIDS +RELOAD_CONF

or

lidsadm -S -- -LIDS

lidsadm -A -r foo

rm protected_one

do things

cp file protected_one

lidsadm -U #here we update lids.conf as "protected_one"

#could have a different inode number

lidsadm -S -- +LIDS +RELOAD_CONF

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有