一个安全Web服务器的安装(三)

发表于:2007-07-04来源:作者:点击数: 标签:
第六步:Step 6: sudo程序与多个管理员 每一个管理员都应该有一个自己的帐号。如果每个人都使用root身份进行操作,那么就无法知道谁做了些什么。另外,如果使用root口令输入了一个不正确的命令可能对整个系统都产生严重的影响。应该仅仅在绝对需要时才使用具
第六步:Step 6: sudo程序与多个管理员

  每一个管理员都应该有一个自己的帐号。如果每个人都使用root身份进行操作,那么就无法知道谁做了些什么。另外,如果使用root口令输入了一个不正确的命令可能对整个系统都产生严重的影响。应该仅仅在绝对需要时才使用具有高授权的操作。先前的harden_suse脚本已经将系统配置进行了必要的修改,它禁止了root用户的直接远程登录。仅仅以加密形式的SSH进行远程登录才可以执行管理任务。下一个需要做的事是配置sudo,这个程序可以帮助管理员记录执行过的命令。这个程序也提供了一个详细的授权结构,例如,象oracle用户一样,用户A可以被授权为可以重新启动数据库和查看root目录下的系统日志文件,但是不能做除此以外的任何事。可用用下面的命令行为每一个管理员设置一个用户:erde# adduser -m -g trusted username

  将用户包含在”trusted”用户组是非常关键的,因为根据harden_suse所确定的安全标准,sudo仅能够被trusted组所使用。

  随后,管理员就可以利用visudo程序,在编辑器中加入允许管理员可以做任何他想做的事的脚本行如下:
  username ALL=(ALL) ALL
  “man 5 sudoers”

  设置了一个可以限制授权的主机。

  当然,管理员应该使用sudo并且不应该使用”su root”命令转换到root身份,只有这样,才能保证让尽量少的人知道root口令。

  第七步:最后的调整

  完成所有的系统配置之后,应该使用tripwire程序产生一个包含所有文件的校验和的数据库:
  erde# cp/usr/doc/packages/tripwire/tw.conf.example.linux
  /var/adm/tripwire/tw.config
  erde#/var/adm/tripwire/bin/tripwire -initialize

  在连接Inte.net之前,产生文件/databases/tw.db_HOSTNAME应该备份到一个安全的存储介质(如CD-ROM)上。

  一旦怀疑有攻击者已经入侵并操作了系统,可以用tripwire跟踪所有的操作。但是,应该隔一段时间就用tripware重新生成一次校验和数据库,因为这是对付高智商的攻击者的最有效方法。

  在连接Internet之间的最后工作是对系统进行备份而后reboot。

  但这些还不够,所有的系统管理员都应该订阅关于WEB安全的最重要的邮件列表:

  suse-security:这是包含安全相关专题和安全公告的SuSE讨论组列表,要订阅这个列表,只需要发送一个空邮件到suse-security-subscribe@suse.com邮箱就可以了;

  suse-security-announce:仅仅包含安全公告,要订阅这个列表,需要发一个空邮件到suse-security-announce-subscribe@suse.com邮箱;

  bugtraq:致力于最新的安全问题的讨论区列表,要订阅这个列表,需要发送一个包含”subscribe bugtraq surname@firstname”内容的空白邮件到:listserv@securityfocus.com邮箱。

  其它选择

  由于没有安装本地入侵检测系统,所以只能从攻击者留下的可以痕迹跟踪成功入侵的黑客行为。对于这种措施,也没有什么现成的解决方案,但是还是有很多人开发了针对这种工作的程序和发布了一些窍门。然而,有关这些方面的细节描述远非本文的主题所能涵盖了。

  如果WEB服务器上的几个文件需要定期更新,scp——cp函数在SSH中的安全版本——就显得不是很好用了。一个更合适的方法是使用SSLftp,它具有FTP的功能并且象SSH一样对数据进行了加密。

  日志数据很重要,所有的从WEB服务器和路由器所记录的重要日志记录都应该送到一个集中管理的日志主机,这个日志主机主要用来监视所有计算机的运行状态。通过这种方法,攻击者就就很难遁形灭迹了。

  另外,将Solar Designer [13]设计的安全内核补丁集成到系统中是个很好的主意,有了这个安全补丁,利用缓冲区溢出做手脚的攻击方式将变得更困难。

  应该剥夺那些suid和sgid程序所具有的没必要的过高特权。这可以通过将那些不再需要具有特权的程序逐个输入到/etc/permissions.local然后手工去掉程序的授权(或启动SuSEconfig)的方法实现。

  这个工作直到没有sgid程序并且仅仅有下面列出的少数几个suid程序时结束:
  -rwsr-xr-x 1 root shadow 27920 Mar 11 11:50 /usr/bin/passwd
  -rwsr-x--- 1 root trusted 56600 Mar 11 18:41 /usr/bin/sudo
  -rwsr-xr-x 1 root root 6132 Mar 11 09:36 /usr/lib/pt_chown

  如果系统由几个分区,通过使用mount选项ro(只读)、nodev(无设备)、nosuid (没有高特权的suid文件)和noexec (没有可执行文件)显著地提高系统的安全级别。

  除此之外,可以使用ext2文件系统标志”append-only”和”immutable”(通过chattr命令设置)定义内核能力,这样就可以保护日志和引导文件等不被篡改。

  如果服务器需要具有防止本地攻击的能力,必须为LILO引导装载器配备一个口令,这可以通过在/etc/lilo.conf文件的顶端输入下面的脚本行实现:
  password=something_difficult_to_guess
  restricted

  最后,WEB服务器不仅仅只是Apache。通常要包括1到2个数据库,还要引入一些附加的模块和程序,或者需要激活其它一些服务(如DNS服务器)。Linux包过滤(参见第二步中的例子)可以方便有效地提供保护支持。一个称为”隔离间”(”compartment”:可以从这里获得)的程序支持chroot、特权分配以及Linux能力配置等任务。

  当然,还可以做很多其它的事情,但我所能想到的只有这些了。

最后的提示

  更新!一个没有采用最新的安全补丁进行更新的系统会很快称为攻击者的目标。

  已经完成配置安全系统所需的所有工作之后,要记住:CGI脚本将是最大的安全隐患。大多数成功的攻击都是通过这些脚本实现的。简明的建议是:最好使用那些公开发布并且已经被不同的网站使用了一段时间的CGI脚本;如果管理员不得已需要写一些CGI脚本程序的话,这些程序应该由其它人对其安全因素进行例行检查。

  结论

  一个非常安全且高可用的WEB服务器——这似乎有些矛盾,但确实是很好的折中——能够在短短45分钟的时间内配置完。当然您可以通过更多的工作以提高系统的安全级别,但是这里配置的系统对大多数应用来说已经足够了。

  Linux与安全的更多信息

  如果您决定选用Linux,您应该感到庆幸,因为您可以免费使用非常多且优秀的安全程序,这是其它UNIXWindows平台所无法比拟的。为找到合适的工具,您会发现安全焦点[9]和包风暴(Packetstorm [10])是两个比较好的起点。

  迄今为止,SuSE Linux是所有商用Linux发布中最专注与安全的。下面一些工具是SuSE所开发的,您可以根据需要自由下载


  --------------------------------SuSE安全软件------------------------------
  ---------------------------------------------------------------------------------
  程序名称(rpm)---功能-----------从哪一版本------能否运行-----下载地址-----------
  -------------------------------开始包含在--------于其它发布
  -------------------------------Linux发布中----------------
  ———————————————————————————————————————
  FTP代理套件--一个非常--------6.3------------------http://proxy-suite.suse.de----
  ---------------安全的FTP---------------------------------------------------
  ---------------代理,它还----------------------------------------------
  (fwproxys)-----支持SSL--------------------------------------------
  SuSE防火墙-----一个包过滤器---6.3-------http://www.suse.de/~marc-(betas)
  ---------------,能够创建一----------------(如果是其它--------------------------
  (firewals)------复杂的防火墙----------------发布,init.d------
  -----------------系统并且非常----------------和startup脚本-------
  ------------------容易配置--------------------要重新调整)----------------------------
  -------------------------------------------------------------------------
  加固SuSE-------配置一个非常-----6.1------------否------------http://www.suse.de/~marc-(betas)----
  ---------------安全的SuSE------------------(专门为SuSE----------------------
  (hardsuse)----------------------------------所设计)--------------
  ---------------------------------------------------------------
  安全模块-------一个防止symlink--6.3------------是-------------SuSE-FTP-server----
  ---------------,hardlink,-pipe-------------------------------------------------------
  (secumod)------和许多其它安全策
  -------------------略的内核模块
  ----------------------------------------------------
  安全检查器-----每天对本地安全------6.2---------大部分--------------SuSE-FTP-server----
  ---------------进行一次例行检----------------------------------------------------
  (seclearcase/" target="_blank" >ccheck)-----查---------------------------------------------http://www.suse.de/~marc-(betas)------
  Compartment----程序的安全包装------计划在------是-------------http://www.suse.de/~marc-(betas)
  (-)------------器,支持chroot------7.0中采用----------------------------------
  ---------------ing,特权和能力--------------------------------------------------------
  ---------------分配
  --------------------------------------------------------------------
  Auditdisk-(-)--安全产生校验和------计划在------是-------------现在还没有发布beta版-------
  ---------------与Tripwire不同------7.0中采用---------------------------
  ---------------它不能被回避---------------------------------------------------
  -------------------------------------------------------------------------------
  SCSLogger------能够记录向内和------6.2---------是-------------SuSE-FTP-server---- ---------------向外连接日志的---------------------------------http://www.suse.de/~thomas-
  (betas)-----------------------
  (scslog)-------内核模块-----------------------------------
  ----------------------------------------------------------
  安全库---------一个为程序员准------计划在------是-------------http://www.suse.de/~thomas-(betas)
  (-)------------备的函数库,它------7.0中采用--------------------------------
  ---------------为不安全的函数----------------------------------------------------
  ---------------提供了安全功能---------------------------------------------------
  ---------------提示--------------------------------------------------------
  CD上提供的其它安全程序还有:Nessus, Saint, nmap, PGP, GNU Privacy Guard, OpenSSH, Tripwire, FreeSWAN,等等。

  另外,除随SuSE Linux发布的操作手册中广泛深入地涉猎安全内容之外,还有suse-security和suse-security-announce两个邮件列表可供参考。

  当然,也有其它的选择。比如说Trustix[6] Linux发布就是新近出现的完全面向安全的产品。令人失望的是,这个发布还处在初级阶段。不过,它的一个大约150 MB ISO文件的第一个Alpha已经提供下载了。

  如果您不信任Linux,那就看看OpenBSD [5]。就在几年前,人们为了安全问题逐行地检查了NetBSD发布的程序。通过比较关于Unix变种(当然还有Windows)的安全问题的消息的数量和质量,人们发现OpenBSD是无可争议的优胜者。那么主要障碍是什么呢?其中的一个原因是应用软件太少。把所有的OpenBSD汇集在一起,甚至还不能填满一张CD。其它需要集成到系统中的程序都需要用户通过一种所谓的接口(ports)或者称为引入(imported)的方法实现。这些都没能被验证是安全的。另外一个问题是,它的代码基础是BSD,受Linux热潮的影响,BSD平台已经不再是软件工业的战略目标。但是,OpenBSD在安全专家中间仍然有很好的口碑。如果不需要运行一些特殊的软件的话,OpenBSD仍然是配置安全服务器的正确选择。

  当然,也有很多商用的高度安全的Unix系统。他们被称为Trusted {Solaris, Irix, SCO, ...}。不同的系统实现了美国C2、B1甚至B2安全标准。这些系统除了非常昂贵以外,其安全也根本没有达到他们宣称的那样高。虽然安全标准的实现显著地增强了系统的安全性,但受到缺少开放源码和质量声誉极佳的源码的影响,期望它100%的安全是不现实的(但还是要比Windows强很多)。


原文转自:http://www.ltesting.net