网络安全 频道

【系统安全】用LIDS构建LINUX的钢铁城堡

   1、LIDS的启用与设置

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

    要想将LIDS封装到内核中,需要在/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功能的LINUX系统中,一个名为/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被启用,任何人都不能列出或删除此目录及其中的内容。如果我们在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及以下端口上运行需要LIDS的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必须使用LIDS的CAP_SYS_RAWIO功能后,才能在LIDS启用时工作。通过下列所示命令达到此目的:

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

    (7)为ssh和scp的远程连接指定端口

       要为ssh和scp的远程连接指定端口,就需要LIDS的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)通过网络发送安全警报

    要实现LIDS的警报功能,我们可以在/etc/lids/lids.net文件中指定通过网络发送安全警报的接收邮箱。要特别要注意的是:在指定电子邮箱的地址时,应当确保E-Mail地址的前后不能有空格,同时,在修改完后必须重新加载LIDS的配置文件。

    LIDS是LINUX系统下一个非常强大的入侵检测系统,它的功能非常多,由于篇幅的限制,在本文中不能将它的所有功能全部描述出来,它们也只能靠读者自己慢慢去摸索了。

    当然,有些读者可能趋向于使用功能更加强大的SNORT或其它主机型入侵检测防御系统。但是,对于一般的LINUX服务器,通过LIDS完全可以满足保护系统安全的绝大多数要求。做此文的目的也是希望能给哪些正在为如何解决LINUX系统安全的用户有所帮助。

0
相关文章