7. 内核安全

本文描述了与安全相关的内核配置选项,并解释了它们的作用以及如何使用它们。

由于内核控制着您计算机的网络,因此内核的安全至关重要,并且不应受到破坏。 为了防止一些最新的网络攻击,您应该尽量保持您的内核版本为最新。 您可以在 或从您的发行商处找到新的内核。

还有一个国际组织为主流 Linux 内核提供一个统一的加密补丁。 此补丁为许多加密子系统和由于出口限制而无法包含在主流内核中的内容提供支持。 有关更多信息,请访问他们的网页:http://www.kerneli.org

7.1. 2.0 内核编译选项

对于 2.0.x 内核,以下选项适用。 在内核配置过程中,您应该会看到这些选项。 此处的许多注释来自./linux/Documentation/Configure.help,这与在make config内核编译阶段使用帮助工具时引用的文档相同。

7.2. 2.2 内核编译选项

对于 2.2.x 内核,许多选项是相同的,但已经开发了一些新选项。 此处的许多注释来自./linux/Documentation/Configure.help,这与在make config内核编译阶段。 下面仅列出了新添加的选项。 有关其他必要选项的列表,请查阅 2.0 描述。 2.2 内核系列中最显着的变化是 IP 防火墙代码。ipchains程序现在用于安装 IP 防火墙,而不是ipfwadm2.0 内核中使用的程序。

7.3. 内核设备

Linux 上有一些块设备和字符设备也可帮助您提高安全性。

以下两个设备/dev/random/dev/urandom由内核提供,用于随时提供随机数据。

两者/dev/random/dev/urandom都应该足够安全,可用于生成 PGP 密钥、ssh挑战以及其他需要安全随机数的应用程序。 攻击者应该无法根据这些来源的任何初始数字序列来预测下一个数字。 为了确保您从这些来源获得的数字在任何意义上都是随机的,我们投入了大量精力。

这两个设备之间唯一的区别是/dev/random用完随机字节后,它会使您等待积累更多字节。 请注意,在某些系统上,它可能会阻塞很长时间,等待新的用户生成的熵输入到系统中。 因此,在使用/dev/random之前,您必须谨慎。(也许最好的方法是在您生成敏感密钥信息时使用它,并告诉用户反复敲击键盘,直到您打印出“OK, enough”。)

/dev/random是高质量的熵,通过测量中断间隔时间等生成。 它会阻塞,直到有足够的随机数据可用。

/dev/urandom类似,但当熵存储不足时,它将返回现有熵的加密强度高的哈希值。 这不如安全,但对于大多数应用程序来说已经足够了。

您可以使用如下命令从设备读取数据

	root#  head -c 6 /dev/urandom | mimencode
这将在控制台上打印六个随机字符,适用于密码生成。 您可以在mimencode中的metamail软件包中找到它。

请参阅/usr/src/linux/drivers/char/random.c以获取算法的描述。

感谢 Theodore Y. Ts'o、Jon Lewis 以及来自 Linux-kernel 的其他人帮助我 (Dave) 完成此工作。