当前位置:Linux教程 - Linux综合 - 用LIDS增强Linux系统安全

用LIDS增强Linux系统安全

  LIDS( Linux入侵侦察系统)是Linux内核补丁和系统管理员工具(lidsadm),它加强了Linus内核。 它在内核中实现了一种安全模式 -- 参考模式以及内核中的Mandatory Access Contro l(命令进入控制)模式。本文将阐述LIDS的功能和如何使用它来建立一个安全的Linux系统。 1. 为什么选择LIDS   随着互连网上Linux越来越受欢迎 ,越来越多现有GNU/LINUX系统上的应用软件中的安全漏洞被发现。很多程序利用了程序员的粗心,例如缓存溢出、格式化代码攻击。当系统安全受到程序的危及,黑客获得ROOT权限以后,整个系统将被入侵者控制。   由于代码的开放性,我们可以获得很多所希望Linux应用程序的原代码,并且根据我们的需要来修改。所以bug能很容易地被找到,并很快修补。但是当漏洞被揭示后,而系统管理员疏于给漏洞打补丁,从而造成很容易地就被入侵,更糟的是黑客能获得ROOT SHELL。利用现有的GNU/Linux系统,他为所欲为。这正是LIDS想要解决的问题。   首先看看现有的GNU/Linux系统存在哪些问题。   文件系统未受到保护   系统中的很多重要的文件,例如 /bin/login,一旦黑客入侵后,他可以上传修改过的l ogin文件来代替/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内核
[1] [2] [3] [4] [5] [6] 下一页 

  可以从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
上一页 [1] [2] [3] [4] [5] [6] 下一页 

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 4. 配置LIDS系统   4.1 LIDS配置目录 -- “/etc/lids/”   安装 lidsadm以后,在/etc/lids/下会产生一个 lids配置目录,当内核启动时,配置信 息将被读入内核中来初始化 LIDS系统。lids.conf 这是用来储存 LIDS ACLs信息的文件。它包括定义事件进入类型的ACLs.其项目可以用lidsadm来添加或删除。lids.cap 这个文件包括了系统中所有的权限,可以通过编辑它来配置系统中启动或禁止的权限。在想要启动的名称前设置 "+"或设置 "-"来禁止。安装系统时, lids.cap 以缺省值存在,应该按照自己的需要改变它。lids.net 这个文件是用来配置通过网络传送警告信件的。可以定义 SMTP服务器、端口、信息题目等等。    这一文件需要在配置内核时选择:   [*] Send security alerts through network (NEW) lids.pw 这是用来储存由"lidsadm -P"产生的密码的文件,需要在配置内核时选择:    [*] Allow switching LIDS protections (NEW)   注意: 如果要改变lids保护等级,你必须在重新启动内核前运行"lidsadm -P"l.   4.2 保护文件和目录   首先,要决定哪些文件需要受保护。建议你应该保护系统二进制文件和系统配置文件,例如/usr/,/sbin/,/etc/,/var/log/。   其次,要决定保护文件的方式. LIDS提供四种保护类型:   DENY access to any body(禁止任何人进入)。   这种方式意味着没有人能够看见或修改文件或目录. 最敏感的文件应该配置为DENY。 例如,可以将 /etc/shadow设置为 DENY access to anybody, ------------------------------------------------------- Usage lidsadm -A -o file_to_protected -j DENY # lidsadm -A -o /etc/shadow -j DENY After reboot or RELOAD the configurate files. you can see, # ls /etc/shadow ls: /etc/shadow: No such file or Directory -------------------------------------------------------   然后,你要设置一些可以进入文件的程序,例如,登陆系统时,/bin/login文件需要从 受保护的文件/etc/shadow里读取密码 ,但/etc/shadow不允许任何人进入,所以你应该: ------------------------------------------------------- Usage lidsadm -A -s SUBJECT_PROGRAM -o OBJECT_PROGRAM -j READ/WRITE/APPEND # lidsadm -A -s /bin/login -o /etc/shadow -j READ
上一页 [1] [2] [3] [4] [5] [6] 下一页 

-------------------------------------------------------   配置生效后,你可以登陆到系统上但无法进入/etc/shadow。这是MAC (mandatory acce ss control命令进入控制)的一个实例。 Read Only Files(只读文件)   这种方式意味着没有人可以改变文件,建议/etc/passwd,/bin/passwd等类似文件可以 采取这种方式。 ------------------------------------------------------- lidsadm -A -o file_to_protect -j READ example, 1. to protect the whole /sbin/ as read-only. # /sbin/lidsadm -A -o /sbin/ -j READ 2. to protect /etc/passwd as read-only # /sbin/lidsadm -A -o /etc/passwd -j READ -------------------------------------------------------   Append Only Files(只能添加文件)   大多此类文件是指系统的log文件,例如 /var/log/message ,/var/log/secure。 文件 只能添加而不能删除或修改以前的内容。 ------------------------------------------------------ USAGE: lidsadm -A -o filename_to_protect -j APPEND example, 1. to protect the system log files # /sbin/lidsadm -A -o /var/log/message -j APPEND # /sbin/lidsadm -A -o /var/log/secure -j APPEND 2. to protect the apache httpd log files # /sbin/lidsadm -A -o /etc/httpd/logs/ -j APPEND ----------------------------------------------------- WRITE(可写)   此类型用于定义可以改写的文件。   Mandatory Access Control in file protection(文件保护中的命令进入控制)   定义哪个项目(程序)可以以哪种方式(READ,APPEND,WRITE)进入哪个目标(文件)。   例如,定义/home/httpd/为DENY to anybody然后让/usr/sbin/httpd能从目录中READ。 这样一来, Web服务器可以正常地作为公用WEB服务器,但在/home/httpd/下的内容和程序是不可见的,也不能被修改。如果入侵者通过httpd的bug获得了root shell,他即使在root shell下也不能看到文件,即使他可以通过改写堆栈在httpd服务器中插入危险的代码,他也 只能读到/home/httpd下的文件,而不能修改。 ---------------------------------------------------- # lidsadm -A -o /home/httpd -j DENY # lidsadm -A -s /usr/sbin/httpd -o /home/httpd -j READ --------------------------------------------------- 实例   下面是LIDS HOWTO中的一个实例 --------------------------------------------------- lidsadm -Z lidsadm -A -o /boot -j READ lidsadm -A -o /vmlinuz -j READ lidsadm -A -o /lib -j READ lidsadm -A -o /root -j READ lidsadm -A -o /etc -j READ lidsadm -A -o /sbin -j READ lidsadm -A -o /usr/sbin -j READ lidsadm -A -o /bin -j READ lidsadm -A -o /usr/bin -j READ lidsadm -A -o /usr/lib -j READ lidsadm -A -o /var/log -j APPEND ---------------------------------------------------   安装lidsadm后,在lidsadm包中会有一个样例lids.conf 存放于/etc/lids/下,你必须 运行 "lidsadm -U"更新 inode/dev值,根据需要重新配置它。 4.3 保护进程   UN-killable process(不可杀进程)   LIDS 可以保护进程当其父程序初始化时(pid=1)[ the process whose parent is init (pid=1)]必须配置权限 (/etc/lids/lids.cap),如下: -29:CAP_INIT_KILL
上一页 [1] [2] [3] [4] [5] [6] 下一页 

  hidden process(隐藏进程)   由于进程被隐藏, 所以当进程启动时,任何人用 "ps"命令或在"/proc"下都无法找到 . -------------------------------------------------- example, lidsadm -A -s /usr/sbin/httpd -t -o CAP_HIDDEN -j INHERIT --------------------------------------------------   4.4 权限保护   Capabilities类似于赋予进程的权限, root方式拥有所有权限,但存在权限绑定设置。 在普通的内核中,当你从绑定设置中删除一个权限,再也没有人可以使用它了,直到下次重 新启动。 (关于普通使用可以参考http://www.netcom.com/ spoon/lcap)。   LIDS修改这一属性,使你可以任意转换。进入/proc/sys/kernel/cap_bset被捕获后引发 安全警报,lidsadm承担所有这些工作。   可以通过运行lidsadm列出所有的LIDS权限,和每一权限确切的含义。   系统权限配置   系统权限属性存放于/etc/lids/lids.cap,必须编辑此文件来适应你的需要。   这里,我们讨论其中的两个属性:   CAP_SYS_RAWIO 启用这一权限,我们可以   allow ioperm/iopl and /dev/port access,   allow /dev/mem and /dev/kmem access and   allow raw block devices (/dev/[sh]d??) access   当禁止了这项功能以后,可以使得系统上所有进程失去对于raw device的权限,例如运行lilo。   但是一些进程需要此权限来打开,例如XF86_SVGA, 所以在编译内核的时候, 使一些程序处于例外状态。   CAP_NET_ADMIN 这个项目可以得到以下权限 interface configuration administration of IP firewall, masquerading and accounting setting debug option on sockets modification of routing tables setting arbitrary process / process group ownership on sockets binding to any address for transparent proxying setting TOS (type of service) setting promiscuous mode clearing driver statistics multicasting read/write of device-specific registers   出于安全因素,应该禁止此项目来禁止改变网络配置。当其被禁止后,防火墙规则将不允许被改变。 配置lids.cap   可以在capability name前加 "+"或"-"来启动或禁止权限。 -------------------------------------------------- ### 0: In a system with the _POSIX_CHOWN_RESTRICTED option defined, this overri des the restriction ### 0: of changing file ownership and group ownership. # -0:CAP_CHOWN ### 1: Override all DAC access, including ACL execute access if _POSIX_ACL is d efined. Excluding ### 1: DAC access covered by CAP_LINUX_IMMUTABLE. # +1:CAP_DAC_OVERRIDE ---------------------------------------------------   以上例子演示了禁止CAP_CHOWN (-),启动CAP_DAC_OVERRIDE(+),应该仔细检查lids.c ap文件来决定哪些需要启动哪些需要禁止。   用capabilities为独立进程分类   你可以使用capability为独立进程分类,从而使得进程可以做到一些系统所禁止的事情 。   例如,你可以在/etc/lids/lids.cap下禁止CAP_SYS_RAWIO(-),但你仍然需要使用X服务 ,所以你可以: # lidsadm -A -s /usr/X11R6/bin/XF86_SVGA -t -o CAP_SYS_RAWIO -j INHERIT   使得XF86_SVGA拥有CA_SYS_RAWIO的权限,而其他程序不能获得CAP_SYS_RAWIO。   封装内核   启动内核以后,系统权限要在封装内核以后才会起作用。你必须将以下命令加入RefHat 系统的/etc/rc.d/rc.local下,或其他系统的启动初始文件中 #/sbin/lidsadm -I   4.5 网络安全
上一页 [1] [2] [3] [4] [5] [6] 下一页 

  LIDS提供了加强网络安全的功能。   基于capability的网络安全   通过capability,可以加强网络安全性。比如anti snifferring,不能绑定低于1024的 端口,不能改变防火墙和路由器规则。所以,建议仔细阅读每一项capability.   内核中的扫描检测器   LIDS提供了一个内核扫描检测器,用来侦察是否有人在扫描你的系统。这个扫描器可以侦察到half-open scan, SYN stealth port scan, Stealth FIN, Xmas,或是Null scan 等等, 象nmap,satan等工具都能被检测到。   当raw socket被禁止时,它会起作用。这样一来,一些基于监听上的user space detec tor不起作用。并且这一检测器不使用任何socket,比任何user space detector要安全。   如果想要启用这项功能,可以在编译内核的时候选择。   4.6 入侵响应系统   当LIDS检测到违反已定义规则时,它可以用以下方式回应。   记录信息   当有人违反规则, lids_security_log将把信息记录下来, 记录也具有anti_logging_ flood的能力,可以在编译内核时设置。   通过mail服务器记录信息   LIDS的新功能可以把信息传输到你的信箱。你可以在/etc/lids/lids.net下定义邮件服 务器IP,外来邮件地址等等。 样例 ----------------------------------------------------- MAIL_SWITCH=1 # MAIL_RELAY=hex IP:port # IP11.1 of the machine that will be directly connected by LIDS # for relaying its mails. Port is usually 25, but who knows... MAIL_RELAY=210.73.88.149:25 # MAIL_SOURCE=source machine : # Name of the source machine, used for the ehlo identification. # Note that a bad name here could make the mail relay refuse your # mails. MAIL_SOURCE=lids.chinacluster.com -----------------------------------------------------   此例中,SMTP服务器是210.73.88.149,端口25.邮件资源用于EHLO identification。   控制台的挂起   当用户违反规则,控制台将关闭用户的控制台。 看到一个小小的错误: Mandatory Access Control应该译作“强制性访问控制” 不懂的单词请访问: www.dreye.com.cn

(出处:http://www.sheup.com)


上一页 [1] [2] [3] [4] [5] [6] 

等等, 象nmap,satan等工具都能被检测到。   当raw socket被禁止时,它会起作用。这样一来,一些基于监听上的user space detec tor不起作用。并且这一检测器不使用任何socket,比任何user space detector要安全。   如果想要启用这项功能,可以在编译内核的时候选择。   4.6 入侵响应系统   当LIDS检测到违反已定义规则时,它可以用以下方式回应。   记录信息   当有人违反规则, lids_security_log将把信息记录下来, 记录也具有anti_logging_ flood的能力,可以在编译内核时设置。   通过mail服务器记录信息   LIDS的新功能可以把信息传输到你的信箱。你可以在/etc/lids/lids.net下定义邮件服 务器IP,外来邮件地址等等。 样例 ----------------------------------------------------- MAIL_SWITCH=1 # MAIL_RELAY=hex IP:port # IP11.1 of the machine that will be directly connected by LIDS # for relaying its mails. Port is usually 25, but who knows... MAIL_RELAY=210.73.88.149:25 # MAIL_SOURCE=source machine : # Name of the source machine, used for the ehlo identification. # Note that a bad name here could make the mail relay refuse your # mails. MAIL_SOURCE=lids.chinacluster.com -----------------------------------------------------   此例中,SMTP服务器是210.73.88.149,端口25.邮件资源用于EHLO identification。   控制台的挂起   当用户违反规则,控制台将关闭用户的控制台。 看到一个小小的错误: Mandatory Access Control应该译作“强制性访问控制” 不懂的单词请访问: www.dreye.com.cn

(出处:http://www.sheup.com)


上一页 [1] [2] [3] [4] [5] [6] [7] 

# lidsadm -A -s /usr/X11R6/bin/XF86_SVGA -t -o CAP_SYS_RAWIO -j INHERIT   使得XF86_SVGA拥有CA_SYS_RAWIO的权限,而其他程序不能获得CAP_SYS_RAWIO。   封装内核   启动内核以后,系统权限要在封装内核以后才会起作用。你必须将以下命令加入RefHat 系统的/etc/rc.d/rc.local下,或其他系统的启动初始文件中 #/sbin/lidsadm -I   4.5 网络安全   LIDS提供了加强网络安全的功能。   基于capability的网络安全   通过capability,可以加强网络安全性。比如anti snifferring,不能绑定低于1024的 端口,不能改变防火墙和路由器规则。所以,建议仔细阅读每一项capability.   内核中的扫描检测器   LIDS提供了一个内核扫描检测器,用来侦察是否有人在扫描你的系统。这个扫描器可以侦察到half-open scan, SYN stealth port scan, Stealth FIN, Xmas,或是Null scan 等等, 象nmap,satan等工具都能被检测到。   当raw socket被禁止时,它会起作用。这样一来,一些基于监听上的user space detec tor不起作用。并且这一检测器不使用任何socket,比任何user space detector要安全。   如果想要启用这项功能,可以在编译内核的时候选择。   4.6 入侵响应系统   当LIDS检测到违反已定义规则时,它可以用以下方式回应。   记录信息   当有人违反规则, lids_security_log将把信息记录下来, 记录也具有anti_logging_ flood的能力,可以在编译内核时设置。   通过mail服务器记录信息   LIDS的新功能可以把信息传输到你的信箱。你可以在/etc/lids/lids.net下定义邮件服 务器IP,外来邮件地址等等。 样例 ----------------------------------------------------- MAIL_SWITCH=1 # MAIL_RELAY=hex IP:port # IP11.1 of the machine that will be directly connected by LIDS # for relaying its mails. Port is usually 25, but who knows... MAIL_RELAY=210.73.88.149:25 # MAIL_SOURCE=source machine : # Name of the source machine, used for the ehlo identification. # Note that a bad name here could make the mail relay refuse your # mails. MAIL_SOURCE=lids.chinacluster.com -----------------------------------------------------
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] 下一页 

  此例中,SMTP服务器是210.73.88.149,端口25.邮件资源用于EHLO identification。   控制台的挂起   当用户违反规则,控制台将关闭用户的控制台。 看到一个小小的错误: Mandatory Access Control应该译作“强制性访问控制” 不懂的单词请访问: www.dreye.com.cn

(出处:http://www.sheup.com/)


上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9]