用户的帐户通常是很难确保安全的。当你用严格的访问限制来约束你的用户时,你不
可以使用你有的普通用户帐户来这样做。如果你有充分的控制,那你可以确保用户帐户的
安全。如果没有,你必须时刻警惕地监视那些帐户。为用户的帐户使用ssh 和kerberos 可
能会有问题,需要额外的管理和技术支持,但与crypted 密码文件相比仍是一个比较好解决
方案。
10.3.4 确保密码文件的安全
唯一的确保安全的方法是用*号来代替输入的密码,使用ssh 或kerberos 来访问那些帐
户。即使crypted 密码文件(/etc/spwd.db)只能被root 读取,入侵者可能无法获得root 写
的权限,但也可能会获得读的权限。
你的安全脚本必须经常检查和报告密码文件的修改情况。
10.3.5 确保内核核心,Raw 设备和文件系统的安全
如果一个入侵者攻破root,他就可以做任何事情。例如,绝大多数现代内核都有一个
包来探测内建的设备启动器。在FreeBSD 下,它被叫做bpf 设备。一个入侵者通常会试图
在一台不安全的机器上运行一个包探测器。所以,绝大多数系统都不把bpf 设备编译进内
核。
但即使你关闭了bpf 设备,你仍然可能会对/dev/mem 和/dev/kmem 担心。因为,入侵
者仍可以写到raw 磁盘设备。另外,还有另一个叫做module loader 的内核特性,kldload。
一个入侵者可以在运行内核时使用一个KLD module 来安装它自己的bpf 设备,或其他检测
设备。
第6 页FreeBSD 使用手册
要避免这些问题,你必须在更高安全级别上运行内核,至少在securelevel 1 上。
Securelevel 可以在kern.securelevel 变量上用sysctl 来设置。一旦你把securelevel 设
置成1,对raw 设备的写入操作将被拒绝,特殊的chflags 标记如schg 将被强迫执行。你
必须保证schg 标记被设置在特定的启动程序,目录和脚本文件上。这样做可能有点夸大了。
当你在一个安全性比较高的水平上操作时,升级系统可能比较困难。
你可以折中一下,将系统运行在一个安全性更高的水平上,但不对每个系统文件和目
录设置schg 标记。另外一个方法是简单地将/ 和/usr 设为只读。这样就可以阻止所有重要
的侵入检测了。
10.3.6 检查文件的完整性:程序,配置文件等
你需要保护你的核心系统配置和控制文件。例如,在/和/usr 中的绝大多数文件上使用
chflag 来设置schg 位可能达不到预期的目标,因为当它保护文件的时候,它也会关闭一个
检测窗口。你安全层的最后一层也许是最重要的检测层。如果你不能检测到潜在的入侵,
你安全层的其余部分可能就没有用了。你的工作是要让入侵者慢下来,而不是阻止它,以
便寻找时机抓住它。
检测入侵的最好方法是寻找有没有修改,丢失或不需要的文件。寻找修改文件的最好
方法是来自另一个访问受限制的系统。在一个特别的访问受到限制的系统上写上你的安全
脚本使得入侵者不可见,这一点很重要。为了集中优势,你通常必须使用有限访问的机器
来访问其他机器,通常是执行一个其他机器的只读NFS 输出到有限访问的机器,或通过设
置ssh 钥匙对来允许有限访问的机器ssh 到其他机器。除了它的网络传输,NFS 是很少用的
方法---允许你监视每个客户机的文件系统。
如果你的有限访问服务器通过一个switch 来连接到客户机,NFS 方法是比较好的选择。
如果你的有限访问服务器是通过一个hub 或通过几层的路由连接到客户机,NFS 方法可能很
不安全,使用ssh 可能是更好的选择。
一旦你使用一个访问受限制的机器,至少需要能读取客户系统,你必须写一些脚本来
执行实时的检测。挂上NFS 之后,你可以用find 和md5 这样的工具。至少每天一次物理地
md5 客户机文件。当发现匹配错误时,会发出“尖叫声”提示系统管理员去检查。一个安全
脚本也会检查不适当的suid 程序和系统分区上新增或删除的文件。
第7 页FreeBSD 使用手册
当使用ssh 而不是NFS 时,写入安全脚本是很困难的。为了运行它们,你必须scp 脚
本到客户机上,使它们看得见,为了安全你也必须scp 那些脚本使用的程序。在客户机上
的ssh 程序已经有安全问题了。总的来讲,当通过不安全的连接运行时,使用ssh 可能是
必须的,但它也比较难处理。
一个好的安全脚本将通过访问配置文件来检查用户的变
化:.rhosts, .shosts, .ssh/authorized_keys。它已经超出了MD5 检查的范围。
如果你有一个巨大的磁盘空间,它可能需要花很长时间来检查每个文件。在这种情况
下,设置挂载标记来不接受suid 程序和设备在那些分区上是一个好主意。nodev 选项nosuid
选项正是你所看到的。你可以把它们扫描一下,至少一个星期一次。
处理帐户是操作系统的一个相关特性,它可以作为一个post-break-in 的评价机制。
它在跟踪入侵者是如何侵入系统的时候特别有用.
最后,安全脚本应当处理日志文件。一个入侵者设法掩盖自己的踪迹,日志文件可以
指示系统管理员设法追踪到最初侵入的时间和方法。确保日志文件持久记录的日志文件的
一个方法是运行系统控制台到一个串行口,通过持续不断地检测控制台来收集信息。
10.3.7 偏执狂
带点偏执可能不会有伤害。作为一个惯例,一个系统管理员需要添加许多安全特性,
并且尽可能地不影响到使用的便利性。更重要的是一个安全系统管理员应当经常修复漏洞。
10.3.8 拒绝式服务攻击(DoS)
这节将介绍拒绝式服务攻击。一个DoS 攻击通常是一个包攻击,它可以使你的网络瘫
痪。你应当做一些限制,让攻击不会瘫痪你的服务器。
1. 限制服务器的forks.
2. 限制跳板springboard 攻击(ICMP response attacks, ping broadcast, etc.)。
3. 内核通道的缓存。
一个普通的DoS 攻击通常试图让服务器吃掉所有进程,文件描述和内存,直到机器死
机。inetd 有好几个选项可以来限制这种攻击。需要注意的是当无法阻止一个服务被攻击所
打断时,可以阻止一台机器当机。阅读一下inetd 的联机手册,特别需要注意-c, -C, 和
第8 页FreeBSD 使用手册
-R 选项。注意,哄骗式的IP 攻击可以饶过inetd 的-C 选项。所以,最好一起使用这些选
项。
Sendmail 有一个-OMaxDaemonChildren 选项,它往往要比sendmail 的负载限制选项工
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




