76 FreeBSD连载:设置基本系统( 九 )


安全日志记录
Unix系统使用Syslog记录应用软件发送的日志记录,日志记录对于安全管理非常重要,因为管理员可以从这些日志中发现系统遭受攻击的痕迹及证据 。然而syslogd本身也是一个服务程序,能接收网络上的消息,因此其本身也存在安全问题 。
这样,syslog就存在两个矛盾的问题,为了安全起见syslogd不应该接收网络上的其他计算机发送的日志记录 。由于接收消息是通过UDP传送并且没有加密保护,因此syslog消息可能是伪造的,即便攻击者不使用伪造信息进行欺骗,仅仅使用服务阻塞的方法,就能导致正常的日志记录系统不能正常使用,此后攻击者就能放心进行入侵操作而无需担心留下踪迹 。那么即使syslogd没有因为这种阻塞攻击而崩溃,大量无意义的syslog记录,也使得其他有用的日志记录被迅速淹没或清除(为了防止日志文件占用过多的磁盘空间,系统中缺省情况下会自动进行日志的清理工作) 。
为了使得syslogd不理会其他计算机的记录,可以使用-s参数重新启动syslogd 。在rc.conf中更改syslogd_flags的值为"-s" 。
FreeBSD系统中用于管理syslog日志文件的程序为newsyslog,它由crontab来启动,它检查由newsyslog.conf中指定的日志文件,当这些文件达到一定大小时,就截断原文件,重新启动syslogd,并压缩保存原有记录 。为了避免占用太多的磁盘空间,newsyslog保存的日志备份文件有数量的限制,因此就使得阻塞攻击清除日志的攻击方式成为了可能 。可以增加newsyslog保存的日志备份文件的数量,和进行备份时文件的大小,增大系统日志文件的容量 。
然而,当一台计算机仅仅使用自己硬盘来记录日志的话,那么一旦入侵者成功入侵这台计算机,他就能按照syslogd的配置文件syslog.conf的设置,清除相关的日志记录,以便为以后继续潜伏在系统中做打算 。甚至可以直接删除/var/log目录下文件以及其他syslog.conf中指明的文件,消灭入侵踪迹及证据 。这样,将syslog日志记录保留在其他计算机系统中也是一个有效增强安全审计的重要因素 。
因此,可以设定一台用于记录日志的计算机,其syslogd屏蔽外部计算机的日志请求,只记录本地可信任的计算机系统的日志 。这样,就需要在使用"-s"参数屏蔽任意计算机请求的同时,使用"-a"加上信任的计算机主机名,或者子网号,域名等,这样就只会记录这些计算机的日志记录 。为了安全起见,这台计算机最好是专用于这一项服务,不执行任何服务程序,以避免遭受入侵 。然而由于syslogd对系统要求不高,因此这台计算机可以不必使用很高的硬件配置,除了需要足够的硬盘空间以容纳大量日志记录 。
此外,还可以通过将特别重要的syslog的记录直接发送到行式打印机的方式,避免入侵者清除日志记录 。
由于日志记录会迅速增加,特别是在遭受攻击的时候更为显著,因此需要使用一些日志分析工具来帮助分析这些日志文件,以快速定位发生的安全问题,否则面临庞大的日志文件,很难找到有用的日志记录 。logcheck或其他具备相似功能的程序就用来完成这个任务 。http://www.psionic.com/abacus/abacus_logcheck.html为logcheck的主页 。
其他服务程序问题
有些软件本身很可能存在安全问题,应该尽量使用该软件的最新稳定版本并及时进行打补丁,或者使用具备同样功能,但更安全的软件来代替这种软件,例如使用qmail或postfix来代替sendmail 。
有时候软件的新版本由于增加了新功能,会变得更不稳定或具备其他的安全漏洞,对于这种情况就不能盲目升级软件 。
X Window也对网络安全有一定影响,特别是X服务器的认证问题,不要为了方便起见而直接使用xhost 命令,这样就会其他使用者能窥视用户正在进行的操作 。除了上面提到的措施之外,还可以将FreeBSD系统放置到防火墙之内,或者直接利用FreeBSD系统的包过滤能力,屏蔽一些不友好节点的访问,或者屏蔽所有的外部连接请求,而不影响本机对外部的访问 。将FreeBSD设置为防火墙是一个重要的安全措施,因为这不但能对本机提供保护,也能对网络内其他客户计算机提供保护 。毫无疑问,FreeBSD系统的包过滤能力非常优秀,结合FreeBSD具备的网络地址翻译的能力,就使得它能构建仅次于硬件防火墙的防火墙系统 。本章的后续部分中将详细讨论将FreeBSD设置为防火墙系统的各种方法 。

推荐阅读