77 FreeBSD连载:安全工具

安全工具虽然只使用FreeBSD基本系统提供的功能,就能将计算机系统设置为具有非常高的安全性的系统 。然而网络上也存在各种用于增强或检查系统安全性的软件工具,有些工具是标准程序的更安全替代品,增强了系统安全性,有些是对系统或网络进行监视和检查的工具 。使用这些工具,毫无疑问会进一步增强系统的安全性 。FreeBSD的Packages Collection或Ports Collection通常将这些工具放在security子类中 。
系统工具软件
虽然FreeBSD系统本身提供了对访问的认证、控制和记录,然而由于在Unix系统中,服务程序基本上是独立的,使用标准的安全控制方式的服务程序能从FreeBSD的认证控制机制中获益,但是有些服务程序并没有使用这些安全认证方式 。对于独立进行认证控制的软件,除了使用其本身的控制能力之外,还有一些独立的软件具备为其他程序服务的控制访问功能 。
还有一些系统工具,能用于自动检查系统,帮助管理员发现系统中存在的问题,这些软件也是非常有用的工具 。此外,还有一些工具软件属于系统工具,但对于增进系统安全也有很大意义,例如sudo,能在一定程度上增加root口令的安全性 。
TcpWrapper
tcp_wrapper对于多种服务器软件是非常有用的访问控制工具,它能以统一的方式保护各种不同服务器 。对于没有受防火墙保护的独立主机系统,tcpwrapper的保护更为重要 。因为配置了tcp_wrapper之后,任何向inetd发起的连接首先是连接到tcp_wrapper提供的tcpd上之后,再连接到具体的服务进程上,这样tcpd就有机会查看远程系统是否被允许访问,并能将连接的情况通过syslog记录下来,包括请求的种类,时间和连接的来源地址 。
这个程序事实上代替了系统提供的守护进程,来轻松和高效的监控外部网络与服务器的连接 。由于它提供了详细的日志记录,也是用于抓住入侵者,并提供可靠的证据的一种方法 。tcpwrapper的思想与代理型防火墙的思路是相同的,都是通过替换正常服务器的做法来完成控制任务 。
当使用Packages Collection安装了tcpwrapper之后,它的守护进程tcpd就被安装到了/usr/local/libexec目录下,然后就能使用tcpd来代替原有的守护进程提供网络服务了 。
FreeeBSD 3.2-RELEASE之后,tcp_wrapper进入了FreeBSD的基本系统中,而不再需要额外安装 。
有几种不同的使用tcpd的办法,最基本的办法是通过更改inetd.conf来启动tcpd 。例如要想让tcpd来保护fingerd,那么就需要将inetd.conf中对应fingerd的设置更改为tcpd:
finger stream tcp nowait/3/10 nobody/usr/local/libexec/tcpdfingerd-s
tcpd能在标准的系统文件目录中查找正确的守护进程以提供服务,如果进程不在标准的目录路径下,就需要在最后一列中指定所要执行文件的全路径,如/usr/libexec/fingerd 。此后,对finger端口的访问,将被记录进系统的日志文件,具体为syslog.conf中对auth指定的记录文件,例如下面的syslog设置将tcpd的信息发送到/var/log/auth.log文件中(需要保证auth.log文件已存在) 。
auth.*/var/log/auth.log
tcpd使用/usr/local/etc/目录下的hosts.allow和hosts.deny文件来控制对服务器的访问,访问控制是基于IP地址和域名的 。以下为一个hosts.allow控制文件的例子 。可以看出设置文件比较简单易懂,tcpwrapper也提供了一个程序tcpdchk,来检查用户更改过的设置文件是否正确 。
ALL: domain.com
telnet: 192.168.3.0/255.255.255.0 EXCEPT 192.168.3.10
此外有着相似功能,但用于替换inetd的软件为xinetd,它能用于代替原有的inetd来启动各种服务程序,但提供了更详细的日志记录 。
系统安全检查工具
Internet上针对每个系统均报告了大量的安全相关的问题,如果将这些已知的安全问题有效的组织起来,使用程序对系统自动进行检查,就能极大的帮助网络管理员查找现有的问题,使得系统更为安全 。网络上存在多种这类的工具,如Satan、cops,就用于这个目的 。然而由于它们的强大功能,这些工具也能被企图入侵他人系统的使用者利用,因此为了避免入侵者,系统管理员应该尽早使用这些软件,以起到预防作用 。

推荐阅读