热门关键字:  ubuntu  分区  Fedora  linux系统进程  函数

当前位置 :| 主页>Linux教程>内核研究>

用LIDS增强Linux操作系统安全详解

来源: 作者: 时间:2007-05-20 Tag: 点击:

LIDS( Linux入侵侦察系统)是Linux内核补丁和系统管理员工具(lidsadm),它加强了Linux内核。 它在内核中实现了一种安全模式 -- 参考模式以及内核中的Mandatory Access Contro l(命令进入控制)模式。本文将阐述LIDS的功能和如何使用它来建立一个安全的Linux系统。

1. 为什么选择LIDS

随着互连网上Linux越来越受欢迎 ,越来越多现有GNU/LINUX系统上的应用软件中的安全漏洞被发现。很多程序利用了程序员的粗心,例如缓存溢出、格式化代码攻击。当系统安全受到程序的危及,黑客获得ROOT权限以后,整个系统将被入侵者控制。

由于代码的开放性,我们可以获得很多所希望Linux应用程序的原代码,并且根据我们的需要来修改。所以bug能很容易地被找到,并很快修补。但是当漏洞被揭示后,而系统管理员疏于给漏洞打补丁,从而造成很容易地就被入侵,更糟的是黑客能获得ROOT SHELL。利用现有的GNU/Linux系统,他为所欲为。这正是LIDS想要解决的问题。

首先看看现有的GNU/Linux系统存在哪些问题。

文件系统未受到保护

系统中的很多重要的文件,例如 /bin/login,一旦黑客入侵后,他可以上传修改过的login文件来代替/bin/login ,然后他就可以不需要任何登陆名和密码就登陆系统。这常被称为Trojan house。

进程未受到保护

系统上运行的进程是为某些系统功能所服务的,例如HTTPD是一个web服务器来满足远程客户端对于web的需求。作为web服务器系统,保护其进程不被非法终止是很重要的。但是当入侵者获得了ROOT权限后,我们却无能为力。

系统管理未受保护

很多系统管理,例如,模块的装载/卸载,路由的设置,防火墙的规则,能很容易就被修改,如果用户的ID是0。所以当入侵者获得ROOT权限后,就变得很不安全。超级用户(root)作为ROOT可能滥用权限他可以为所欲为。作为ROOT他甚至可以对现有的权限进行修改。

综上所述,我们发现在现有的Linux系统中的进入控制模式是不足以建立一个安全的Linux系统。我们必须在系统中添加新的模式来解决这些问题。这就是LIDS所要做的。

2. LIDS的特色

Linux入侵侦察系统是Linux内核补丁和系统管理员工具,它加强了内核的安全性。它在内核中实现了参考监听模式以及Mandatory Access Control(命令进入控制)模式。当它起作用后,选择文件进入,每一个系统/网络的管理操作,任何使用权限, raw device, mem和 I/O 进入将可以禁止甚至对于ROOT也一样。它使用和扩展了系统的功能,在整个系统上绑定控制设置,在内核中添加网络和文件系统的安全特性,从而加强了安全性。你可以在线调整安全保护,隐藏敏感进程,通过网络接受安全警告等等。

简而言之,LIDS提供了保护、侦察、响应的功能,从而是LINUX系统内核中的安全模式得以实现。

2.1 保护

LIDS提供以下的保护:保护硬盘上任何类型的重要文件和目录,任何人包括ROOT都无法改变。能保护重要进程不被终止能防止非法程序的RAW IO 操作。保护硬盘,包括MBR保护,等等。能保护系统中的敏感文件,防止未被授权者(包括ROOT)和未被授权的程序进入。

2.2 侦察

当有人扫描你的主机, LIDS能侦察到并报告系统管理员。 LIDS也可以检测到系统上任何违法规则的进程。

2.3 响应

当有人违反规则, LIDS会将非法的运作细节记录到受LIDS保护的系统log文件中。 LIDS还可以将log信息传到你的信箱中。LIDS也可以马上关闭与用户的对话。

3. 建立安全的Linux系统

看完了LIDS特性,让我们来看看怎么样一步步地用LIDS建立安全的系统。

3.1 下载LIDS补丁和相关正式的Linux内核

可以从LIDS Home,LIDS Ftp Home或最近的LIDS Mirror获得LIDS补丁和系统管理工具。补丁名称是lids-x.xx-y.y.y.tar.gz, x.xx代表lids的版本, y.y.y代表Linux内核版本.例如, lids-0.9.9-2.2.17.tar.gz代表lids 版本是0.9.9 以及相关的内核版本是2.2.17。必须下载相关的内核版本。例如,你下载了lids-0.9.9-2.2.17.tar.gz,那你就应该下载Linux内核2.2.17的原代码。可以从 Kernel FTP Site或其他镜象获得内核原码。然后,将内核原码和LIDS tar解压.例如,从www.lids.org得到lids-0.9.9-2.2.17.ta r.gz,从ftp.us.kernel.org得到linux-2.2.17.tar.bz2后:

1. uncompress the Linux kernel source code tree. 
# cd linux_install_path/ 
# bzip2 -cd linux-2.2.17.tar.bz2 | tar -xvf - 

2. uncompress the lids source code and install the lidsadm tool. 
# cd lids_install_path 
# tar -zxvf lids-0.9.8-2.2.17.tar.gz

3.2 在正式的linux内核上打LIDS补丁

Linux内核原码打LIDS补丁

# cd linux_install_path/linux 
# patch -p1 

/* link the default source path to lids patched version 
# rm -rf /usr/src/linux 
# ln -s linux_install_patch/linux /usr/src/linux

3.3 配置Linux内核

configure the Linux kernel 
# cd linux 
# make menuconfig or make xconfig

现在,配置Linux内核,按照以下步骤实施:

Prompt for development and/or incomplete code/drivers 
Sysctl support 
After that, you will find that a new item appear in the bottom of the configura 
tion menu name "Linux Intrusion Detection System". Entering this menu, turn the 
Linux Intrusion Detection System support (EXPERIMENTAL) (NEW).

配置LIDS内核以后.退出配置界面,编译内核。

# make dep 
# make clean 
# make bzImage 
# make modules 
# make modules_install

3.4 在Linux系统上安装LIDS和系统管理工具

复制 bzImage 到 /boot/ ,编辑 /etc/lilo.conf

# cp arch/i386/boot/bzImage /boot/bzImage-lids-0.9.9-2.2.17 

/* build admin tools */ 
# cd lids-0.9.8-2.2.17/lidsadm-0.9.8/ 
# make 
# make install 

# less /etc/lilo.conf 
boot=/dev/hda 
map=/boot/map 
install=/boot/boot.b 
prompt 
timeout=50 
default=linux 

image=/boot/vmlinuz-2.2.16-3 
label=linux 
read-only 
root=/dev/hda2 

image=/boot/bzImage-lids-0.9.9-2.2.17 
label=dev 
read-only 
root=/dev/hda2

运行/sbin/lilo 来安装新内核。

# /sbin/lilo

3.5 配置LIDS系统

在重新启动以前,必须配置lids系统,使其符合你的安全需要.你可以定义受保护的文件,受保护的进程等等。

缺省情况下,lidsadm将把缺省配置文件安装到 /etc/lids/。你必须根据自己的需要重新配置。首先,可以更新缺省lids.conf的inode/dev值。

# /sbin/lidsadm -U

3.6 重新启动系统

配置完Linux系统后,重新启动.当lilo出现时,选择装载the lids enable kernel。然后,你就将进入美妙的LIDS世界。

3.7 封装内核

系统启动后,不要忘记用lidsadm封装内核,在最后/etc/rc.local加入以下命令# /sbin/lidsadm -I。

3.8 在线管理

封装完内核后,你的系统就处于LIDS的保护下。可以做一些测试来验证,如果想改变某些配置,例如修改权限,可以通过输入密码方式在线改变lids的安全等级。 # /sbin/lidsadm -S -- -LIDS改变lids配置属性后,例如lids.conf,lids.cap,你可以通过以下命令在内核中重新装载配置文件 # /sbin/lidsadm -S -- +RELOAD_CONF。




相关文章:
精通initramfs构建step by step
Linux利用kexec迅速切换内核
进程上下文VS中断上下文
内核通知链 学习笔记
linux spi子系统驱动分析
menuconfig 配置选项
《Linux操作系统内核实习》之练习一
udev详解
什么叫微内核,宏内核?
Linux 信号signal处理机制
开发简单的 Linux2.6 内核模块
删除内核的perl脚本
Linux2.6内核usb gadget驱动移植
GCC hacks in the Linux kernel
iomem
kernel学习的想法
让自己的驱动支持udev
linux内核编译步骤
内核的等待队列
Linux内核wait_queue深入分析
升级和删除内核
SD卡驱动分析2
Linux Kernel VDSO本地权限提升漏洞
内核中的TCP的追踪分析-15-TCP(IPV4)的客户端与
linux 2.6内核可加载模块的编译
内核模块HelloWorld
在环回接口上发送一个数据报
ARP初始化
1分钟编译FreeBSD内核
linux设备模型之uart驱动架构分析