怎样部署Linux?
我详细讨论每个步骤时,我将部署两个样例系统(一个Fedora桌面系统和一个Debian服务器系统)来展示安全是如何实施的,我选择 Fedora是因为它是现在最流行的发行版,它可以为任何目标工作得很好,它有许多桌面增强特色,并且是用户推荐的无命令行的最容易使用的Linux发行版,我选择Debian作为我们的服务器平台是因为它是轻量级的、有非常悠久的历史而且很稳定、有一个强大的支持社区和大量的文档。
这两个都是非常优秀的平台并且都有它们自己的内置安全标准。如果你喜欢其它的发行版,这里指出的步骤可以应用到任何的系统。
第一步:计划
第一步也是最重要的一步,因为你在这里做出的决策将影响到全盘的安全,第一步定义系统将部署成什么样的目标,它将是一个小的邮件服务器吗?或者是一个桌面系统吗?又或是一个入侵检测系统?一旦你有一个目标后,你就可以用它来指导整个过程,然后将精力集中在如何尽可能地提供更安全的环境上,安全永远都不应该妨碍功能的完整,毕竟部署一个无人能用的系统有什么用呢?!
接着,你需要为你的系统决定一个安全目标,主要目标应建立在最小访问或最小权限原则之上,这就意味着仅仅为用户和程序提供系统操作必要的最小权限,你应该还有其他安全目标,如用杀毒软件扫描每个文件或用LDAP对每个用户进行认证,但是最小权限应是不变的原则。
实现这些目标,在你动手前,你应该思考如何实现它们,回答一些简单的问题将有助于你在步骤2和4里作出正确的决策。系统将作为一个服务器还是一个桌面系统?这个问题决定了你新系统上的大部分配置;用户将在本地访问还是远程访问这个系统?这是另外一个重要的与安全有关的配置问题;系统需要一个桌面环境吗?
如果你对命令行非常熟悉,将系统部署成无头的或者说无GUI接口的,将X window系统从你的安装中删除,你将很意外地减少系统的攻击面(你暴露在外的区域),另一方面,如果你或你的同事需要一个GUI,只安装一个GUI并弄清楚如何将系统正确地锁定,安装服务器时不安装X,安装桌面系统时才安装X是一个值得竖大拇指的方法。
最后,计划应用程序将会在系统上做什么,判断它依赖什么库以及比不可少的操作,常见的有:系统运行一个远程命令后不必须的库也被使用了,掩饰住了入侵者的姿态或探测网络,如果你不需要某个包请不要安装它。
当你弄清楚了这些问题和答案后,写到你的安装日志或笔记簿并保持更新。
步骤二:安装
写下这些计划后,进入建造步骤,从你在计划步骤中设定的安全目标的应用程序开始,由于空间限制,下面的章节不会给样例安装列出一个详细的检查列表,我仅将与安全有关的选项做了记号,在第一步中,在安装日志中写下你在安装过程中的选项,在重新安装系统时就可以派上用场了。
Fedora Core 7
从一个Fedora 7 ISO文件(可以在发行镜像站点找到)启动到一个干净的系统,在确定你的键盘和语言设置好后,来到磁盘分区部分,对于大多数桌面发行版,安装程序直接就把分区配置好了,但是,如果这个系统是供某些工作敏感的人准备的,请将/home文件夹放在一个独立的分区上。
分区完成后进入启动管理器选项,选择GRUB并为其设置一个密码,给启动管理器设置一个密码是最佳实践,它可以帮助你在磁盘或系统被盗的情况保护你的数据不会丢失。一个好的密码应该比较复杂,避免使用字典中的单词、纯数字、纯字母和非字母数字混合的符号。
下一个屏幕,选择DHCP,因为客户端机器通常不需要静态的ip地址,如果你需要使用静态ip地址,在你网络的某个地方务必使用网络地址转换(NAT),接下来,设置一个主机名和域,并为root用户设置一个复杂的密码,在软件包选择屏幕,如果选择自定义安装,请仔细检查你选择的软件包,在自定义选择屏幕,只选择一个桌面环境[译者注:GNOME/KDE等],多安装一个桌面环境就多一分危险,保留默认的选择GNOME,检查其他每一个选项,你会发现有许多软件包将被安装(图1),在我的安装中有843个软件包,你的数字可能不同,排除你不需要的软件包,每个包前面都一个可选框,当你选择完软件包后,系统将重新启动。