文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>用LIDS建立安全的系统(下)

用LIDS建立安全的系统(下)

时间:2007-02-17  来源:PHP爱好者


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
      -------------------------------------------------------

         配置生效后,你可以登陆到系统上但无法进入/etc/shadow。这是MAC (mandatory access 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

         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 overrides 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 defined. Excluding
      ### 1: DAC access covered by CAP_LINUX_IMMUTABLE.
      #
      +1:CAP_DAC_OVERRIDE
      ---------------------------------------------------

         以上例子演示了禁止CAP_CHOWN (-),启动CAP_DAC_OVERRIDE(+),应该仔细检查lids.cap文件来决定哪些需要启动哪些需要禁止。

         用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 网络安全

         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 detector不起作用。并且这一检测器不使用任何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。
         控制台的挂起
         当用户违反规则,控制台将关闭用户的控制台。
      php爱好者站 http://www.phpfans.net c/vc/c++/java.
  • 相关阅读 更多 +
    排行榜 更多 +
    辰域智控app

    辰域智控app

    系统工具 下载
    网医联盟app

    网医联盟app

    运动健身 下载
    汇丰汇选App

    汇丰汇选App

    金融理财 下载