安全安装REDHAT并介绍Bastille(下)

  86123检查和备份把系统备份在两盘磁带中,一盘放在安全的地方(最好是刻盘)。在这阶段,我们需要对安装的文件使用安全的hashing(散列)算法进行完整性检查,初始化它的数据库并运行合格的检查以便来监视以后的改变。如果可能,把主数据库存放在离线的另外一台机器上,或者写入一次性媒质上。对于数据完整性的我们需要那些项目?–下面的意思是RPM可以用来报告文件的改变(但本人有点对这句英文不理解,所以只好贴上原文,惭愧):The RPM commands also be used to report changes to rpm installedfiles “poor man’s tripwire”:for file in $(rpm -qa); do rpm -V $file; done > rpm_changes它可以打印出一列表,指示Size, MD5 hash, Links, Time (mtime), Device, User, Group, Mode (permissions)等是否改变:S.5….T c /etc/host.confS.5….T c /etc/hosts.allowS.5….T c /etc/motdS.5….T c /etc/securettyS.5….T c /etc/servicesS.5….T c /etc/localtimeS.5….T c /etc/nsswitch.conf.M…… /usr/sbin/rpcinfo你可以存储一份拷贝并在以后作为对比的基准。–Tripwire [5]:此程序有商业和免费两种版本。REDHAT X86是唯一正式使用商业信息的的LINUX:–免费的版本如果使用适当可以工作的不错,但存在一些BUG,提供源代码,在很大的磁盘上出现过崩溃现象。–商业版本相对来说比较贵,报告也相对来说比较冗长(你需要使用过滤的脚本来查找你所需的东西),提供多个配置样板文件,相对于免费版本较稳定。可以在UNIX和NT平台上很好的运行,通过一些政策化和配置化的文件提高安全性。但售后支持不是很好(即使你付了不少钱,呵呵)。–两个版本在定义方针化规则时都不支持正常表达式,,如你不能为”/home/*/www/cgi-bin”下的文件特定一规则。–也可以使用PGP,通过对文件的签名来得到保护的作用,并写一有效脚本来检查有效正确的签名。但PGP的不好之处是对文件的权限,连接,字节和修改的日期等改变不能进行检验。–MD5签证也可以作为文件效验,如果要更好的保护MD5,最好使用PGP签名或者使用其他方法加密。–在OPENBSD中可以使用mtree工具。或许这个工具不久会在LINUX上搭带。–Aide是一新的GPL效验工具,可能不久的将来将会代替tripwire.下面是使用免费Tripwire v1.2的例子:–在x86存在RPM包,在SPARC中的RPM已经被编译了,下载[5]并安装RPM工具包。–安装后Tripwire两进制程序在/usr/sbin目录下,配置文件位于/etc/tw.config,并且其通过/etc/cron.daily/tripwire.verify由cron进行每天的检测。数据库存放在/var/spool/tripwire下,也可以使用MAN查看使用方法:tripwire(8), twconvert(8), tw.config(5). –在安装后,需要保存系统的初始化状态(“initial state”),可以使用下面的方法:/usr/sbin/tripwire -initialise上面的命令会在/var/spool/tripwire下建立一新的数据库。–要通知Tripwire你所改变的文件或者整个目录,可以使用下面的方法:/usr/sbin/tripwire -update [path] –可以由cron或者手工来每天进行系统检查:/etc/cron.daily/tripwire.verify –使用带”-i 2″的选项来运行Tripwire可以增加其检查速度(此选项关闭了一个检验算法snerfu,但SHA1和MDS5还是继续使用)。–为了增强安全性和自动检查多个系统,你可以把Tripwire存放在一绝对安全的主机,拷贝Tripwire和它的数据库到安全主机并使用SSH远程的进行维护。在效验某一主机后,删除目标机上的数据库,这可以让攻击者不轻易发现你在使用tripwire进行系统检验。另外,立即更新tripwire数据库,这样可以在连续运行的情况下知道与原来的不同之处。你可以查看下面的Trip_linux.sh的脚本。如果使用这个脚本,你需要使用下面的方法来关闭本地检测功能:mv /etc/cron.daily/tripwire.verify /etc/cron.daily/.tripwire.verify –拷贝一份备份的配置文件和数据库到软盘或者一次性介质。8,安装,测试和更严格控制应用程序综述–根据服务器所需的相应功能,而采用相应的应用程序如ftpd,BIND,proxy等。WEB SERVER和防火墙更特别,需要很复杂和小心的配置,下面是server/application需要遵守的规则列表:–对于重要应用程序考虑安装在独立的分区,这分区在安装和测试阶段需要安装为读写状态,但在这些过程后最好需要把属性改变为只读属性。–在应用程序启动或者之前使用umask设置严格的属性,如(022)。–检查应用程序是否以最低权限的非ROOT用户运行?其本身的密码是否”禁用”并对其设置/dev/null类的SHELL。如果确实需要使用其本身密码来运行,是不是把其密码的标准设置为最小为8个字符并是字母,数字和符号混合的类型。–如果某应用程序以ROOT的身份,绑定一个低点的端口,要清楚其是否可以立即派生(fork)出一没有特权的用户来最小化减低危险程序?–应用程序有关的所有文件的权限是否设置正确,即四否只有应用程序可以读写,检查是否有全局可读写的文件,检查并正确设置。–检查应用程序写LOG记录的权限是否安全?检查应用程序是否把有关的密码写入LOG记录(这样的事情很多)。–是否可以把应用程序设置CHROOT环境?FTP服务(ftpd)–如果你使用Washington University的wu-ftpd,它的LOG记录和访问控制及其他特征有一定的独特程序,但必须要参考一些以前的BUG(请参看站点的关于wu-ftpd的安全建议:advisories CA-93:06, CA-94:07, CA-95:16和Auscert AA-97.03 和 AA-1999.02). 必须使用V2.6.0以上的版本。–在/etc/ftpusers(相当于黑名单)中加入系统帐号,使这些系统帐号不能用来FTP(如你要求ROOT不允许FTP,你把”root”加入到/etc/ftpusers文件中)。在一个全新的系统中,你可以使用下面的方法把所有系统帐号加入到ftpusers:awk -F: ‘{print $1}’ /etc/passwd > /etc/ftpusers–可以先把全部帐号加入到/etc/ftpusers中,在把需要FTP的帐号挑选出来,在进行相应设置(必须在ftpusers去掉相应的帐号)。或者使用下面的技巧:对于那些没有FTP访问的用户,给他们一个不是标准的SHELL(如tcsh),并不要把这个新的SHELL加入到/etc/shells中去,FTP的访问就会被拒绝,如果想要正常工作就必须在/etc/shells里面加入相应的SHELL。–FTP可以使用IP地址或者主机名来控制,请看/etc/hosts.allow和/etc/hosts.deny.–如果需要匿名FTP,必须非常小心,你必须使用chroot环境,Bastille可以为你设置这方面的环境。–如果使用正常的”user ftp”,推荐使用chroot。–把FTP的数据存放在一个独立的分区并把起安装为nosuid.DNS 服务使用最新版本的BIND(Berkeley Internet Name Server),请查看下面的站点:是哟功能8.2.2-P5或者更新的版本,在zone transfers文件中限制次级的IP地址(在/etc/named.conf)。可以使用Bastille来设置DNS服务器,它会自动设置下面的配置:–建立一”dns”用户和组并使用”named -u dns”来启动DNS,这样BIND可以派生(fork)和改变身份为dns用户。必须提供dns用户可以读BIND配置文件的权利(然而它们原属于ROOT)。–把BIND设置在chrooted的环境中(/home/dns)。发现并修补故障(Troubleshooting):–使用nslookup或者dig来检查服务器的配置结果。–客户端:如果你有DNS客户端问题,检查/etc/nsswitch.conf和/etc/resolv.conf文件,并使用带有”-d2″选项的nslookup来获得调试信息。–服务器端:使用debug选项”-d”来启动named守护程序,并阅读控制台和LOG信息,代表性的LOG可以在syslog的”daemon”部分找到。–下面站点的工具对于测试激活的守护程序有非常大的帮助: –要从name服务中获得统计信息,可以使用下面的方法:kill -ABRT `cat /etc/named.pid` 其中的统计文件会存放在/usr/tmp/named.stats文件中。–最后对named发送HUP信号,使其重新读取新的配置文件:kill -HUP `cat /etc/named.pid` HTTP服务如果WEB的内容很少改变,把内容存储在CD-ROM中,这样可以很简单的防止黑客很常见的喜好”篡改站点”。因为HTTPD服务有缓存页面的能力,必须保证其访问速度不依靠CD-ROM的速度。把”simple read-only”内容的服务从电子商务的服务器中分离出来。请查看公告,其中对怎样更好的设置INTERNET WEB服务器做了很好的描述。使用ServerAdmin设置WEBMASTER的电子邮件,在APACHE设置中不启用UserDir(除非用户确实允许从他们的HOME目录发布页面),可以把ServerSignature设置值为NO,这样可以避免泄露APACHE版本信息。不起用/manual/alias,除非你确实需要发布APACHE的文档信息。不要启动server-info, server-status 或 perl-status 设置。RedHat 下apache其设置如下(在RH6.1上是apache 1.3.9):–配置文件存放在/etc/httpd/conf目录下–HTML的目录根部为/home/httpd/html –使用nobody运行apache–服务器状态(Server-stats) 和服务器信息(server-info)连接是关闭的————————————————运行系统运行整个系统前的准备考虑安装一脚本来检查重要守护程序的运行,安装脚本文件并把其加入到cron文件中:## Check that important processes are running during office hours: ## [If you run 7×24, modify accordingly]0,30 8-19 * * 1-5 /secure/monitor_processes.pl inetd sshd httpd在应用程序安装和测试阶段,如果数据分区必须安装为读写状态,现在考虑是否安装为只读状态。重新初始化tripwire(或者类似的完整性检查软件)。把系统备份两个磁带中去(即两份),一份妥善保管。在系统上运行网络扫描器,保证只有一些自己必须的服务在运行。可以使用商业工具ISS或者免费免费工具Nessus,nmap或者Satan来进行相应的检查,打印出结果并保存结果。如果可能,尽量使用多个人员来进行最后的测试,以防止忘记某些东西进行设置。可以测试下面的工作–什么运行了?什么禁止了?检查console/log条目,你的系统按照你的设想在工作吗,在系统开头几天经常检查LOG。开始运转系统详细测试,检查LOG条目,系统是否正常运行的检查?对所有应用程序进行详细测试,通过不同的人员和不同的观点和不同的网络来进行测试。常规维护下面的行为必须是每月或者每天,星期或者每小时维护,其频率依据系统的安全程度来决定:–检查所有新出补丁的情况,更新必须的补丁,注意每个内核补丁(在没有应用程序的机器上测试),安装一些软件确实需要的补丁,因为大多数守护程序在主机上是关闭的。–检查所有错误和不寻常的活动LOG记录:/var/log/* 和所有的应用程序LOG。–写一脚本程序用于报告:重要系统PING不通,一些重要守护程序崩溃。–经常运行tripwire(或者其他类似完整性检查)。–订阅一些新的漏洞和安全信息的MAILLIST,可以在;;站点订阅。————————————————————-附加注意信息上面的文章用于一些系统,当然每一个安全管理员有自己的方式来配置,也必须要考虑每一个站点的不同来安全配置自己的站点–RedHat提供一个自动安装的设备,并提供了一安装说明的文本,可以很好的提示用户来安装系统,可以在下面的站点找到类似的说明: –Mandrake:Mandrake是一个完全兼容RED HAT的LINUX发行版本,但其中有自己独特的地方:–它提供更好的安装向导,有很好的GUI界面可以使安装更加直观。–ROOT的密码必须是8位的长度(应该指的是7.0的版本)。–Mandrake提供MSEC工具包(Mandrake Security)允许你为系统设置安全级别,但MSEC有些有趣的地方:要改变安全级别,运行/et/security/msec/init.sh X,默认状态X的级别是3,当我们把其转变为4的级别后重新启动 ,系统会询问一运行级别的数字,如果输入3,系统会停止在那里知道一个关于找不到运行级别错误为止,并且所有其他的TTYS将不可使用。–MSEC:init.sh可以使用”custom”参数来运行,这样系统会提示一系列安全问题并允许你想对什么样的安全条目进行安装。注意这个参数的运行会不允许ROOT通过串行来进行登录,如果你确实需要通过ROOT来登录,你就在/etc/securetty中加入ttyS0条目。–Mandrake的硬件适应性:它不支持Sun SuperSPARCs,但支持UltraSPARC 版本已经是BETA版了,另外支持Compaq Alpha BETA版也以支持。–如果发现某些工具包没有安装,可以在/mnt/cdrom/Mandrake/RPMS找到工具包,并使用rpm -i进行安装。–Mandrake提供一个非常漂亮的GUI工具–darkxconf:可以列出所有服务并可以停止和继续运行服务。还可以adduserdrake –增加用户,diskdarke一个非常优秀的磁盘分区GUI工具,drakesec允许低/中/高安全级别。–命令行工具chkconfig可以用来启用/关闭服务,可以使用下面的方法来列表服务:chkconfig –list ,如chkconfig httpd on 。–LOG记录–除一主要SYSLOG记录外,你需要保留一份本地的拷贝-以防止syslog服务器不正常关闭或者被遭到拒绝服务攻击而不产生记录,如果你使用本地LOG必须确保/var是一个独立的文件系统,这是为了避免目录被填满而是系统提高停止工作。–使用性能更高的syslog守护程序来代替原来syslog:syslog-ng: (提供TCP连接,内容过滤,加密,认证等功能)secure syslog: Nsyslogd: coombs.anu.edu.au/~avalon/nsyslog.html (TCP连接和SSL功能)–入侵检测:–经常使用定制的脚本和工具如logcheck 和swatch 来对LOG文件进行详细的分析。–也可以使用下面的perl脚本:来对一系列socket进行监听并通过MAIL来通知管理员,但不需要从inetd来运行。–Snort是一个基于网络入侵检测很好的工具——————————————————————Bastille可以在下面的站点里下载: 没有创造的生活不能算生活,只能算活着。

安全安装REDHAT并介绍Bastille(下)

相关文章:

你感兴趣的文章:

标签云: