前言 Trustix Secure Linux 是针对以高品质的服务器所设计的Linux套件或许读者会有个疑问 为什么已经有这么多的Linux 套件为何还要创造Trustix Secure Linux ﹖在安装了其它各式的Linux套件后我们达成了结论那就是有许多的套件在服务器上是不需要的例如 X windows系统而且很难移除掉大部分的安装套件有许多的服务预设是在执行的在今天的网络上有许多计算机犯罪者执行不必要的服务就等于开了个后门是个禁忌 Trustix 感觉到大部分的Linux都针对于桌面市场然而决定去创造出Trustix Secure Linux 一套Linux distbution焦点放在针对于对服务器的安全上最值得注意的就是它没有了X windows系统图形使用者界面(GUI)将只会浪费内存CPU和硬盘空间系统默认值的设定是任何的服务都不执行的更容易让人知道什么是需要什么是不需要的需要的时候才去执行所以Trustix Secure Linux的设计就是减少不必要的程序和把焦点放在安全上(安装程序的数目大小和安全成反比)针对一些有经验的系统管理者能在短时间内能够去安装和设定以及让无经验的使用者容易上手 对于更详细的Trustix Secure Linux的设计目的可以参考 安装系统 我们可以至 取的最新的版本虽然目前稳定的版本是 不过由于在Linux 以前版本的核心有安全上的疑虑(见?NEWSID=)所以笔者在此建议使用 () 来安装附带提的是要获得一个安全的 Linux 系统第一步要做的就是去获得一个有安全保证的发行商所发行的套件所谓的安全保证应不只是现在发行的套件没有安全上的疑虑更要有完整服务手册更新电子论坛 (mail listing) 的机制不晓得读者对国内目前发行的 Linux 套件评价有多高呢﹖原则上不管读者决定安装那一个套件最好去原发行商处取得 如果读者从不信任的地方取得一定要在安装之前去查证来源码例如 PGP/GPG 签章或 MD checksum确定是安全的才去安装这听起来好象不是很重要的样子但它经常是许多管理者忽略的地方导致木马后门在系统中作祟 由于 Trustix 是源自 RedHat所以安装过程也是相同的只是没有烦人的图形安装界面使用的是文字的安装方式只是硬盘分割区的大小和选择安装软件须由安装者自己指定安装程序并不代劳有时想想这也是应该的如果系统管理者无法决定上述的选项如何提供使用者安全的服务呢﹖至于详细的安装过程就请读者参考一下 RedHat 是如何安装的有经验的读者可以直接略过或参考 在此笔者还是对些应注意的事项再【老生常谈】一下假如机器上只用来当 web/email/dns 服务器只要建立一位使用者因此要去设 root 密码和另一个帐号建立另一个帐号的理由是尽量少用 root 去系统上工作而是用一般的使用者去登入做一般各种的检查若有需要去执行root 级的权限再执行 sudo命令去执行 root 的工作而且由于不太可能使用 root 帐号作为对外 Email 用所以请将 root 的 email 透过 aliases 转给一般的使用者免得一些漏接一些重要的警告信而不自知 对于侵入者要获得系统的使权限最简单的方法之一就是利用其它使用者的帐号密码是 UNIX 安全管制作业中最重要的一部分如果侵入者得到一个使用者的密码可以利用这个帐号登入系统中继而用这个帐号的权限去做他想做的事再严重一点的如果获得的是 root 的密码侵入者立刻就拥有了对系统的绝对控制权如此整个系统就落入了他人手中后果是很严重的因此选择一个安全的密码是很重要的 根据某项测试结果分析一般人选用的密码有几项特性 用跟帐号相同的密码(最多) 用自己的汉语拼音 用常用的英文单字 用计算机中常出现的字还有操作系统的命令如:commandhostcopy… 简单的数字例如…等等 用自己出生日期如: 选择密码的原则就是让人永远猜不到这样可以让侵入者痛苦地不断猜测密码即使是用字典法(暴力破解法)也无辄(注一) · 不要使用跟帐号一样的密码 · 不要使用任何人或任何东西的名称 · 不要使用英文单字或外文单字或任何字的缩写 · 不要使用从讨论计算机安全的书上看到的用来举例的密码不论它有多好 · 使用数字和大小写字母混合的密码 · 至少使用六个字母的密码 · 不要使用帐户拥有者的个人相关资料例如不要使用姓名前缀缩写电话号码身分证号码工作职称单位名称等等 · 不要使用键盘字母的排列顺序如asdf · 不要使用上面各项的反序或大写形式或类似的变化 · 不要使用全部是数字的密码 · 使用看似随机选取的字母和数字 在基本的安装及重新开机完成之后然后要去做必需的 patches (修补)和增加必需的应用软件首先必需去下载及去应用 patch (修补)以 Trustix 为例在 ftp:///pub/Trustix/updates/ 中以 Redhat 为例那些 patch 档能够在 中找到那些 patch 档有三种不同的形式包含安全咨询 (security advisories)错误修正 (bug fixes) 及套件更新 (package updates)接着在命令列下执行 rpm Uvh filenamerpm 并且记得定时到网站去看看有没有新的修补档案还要订阅相关的邮件论坛例如有 tslannounce tsldiscuss tsltesters 详细的资料请参考 另一个要讨论安全问题的就是 LInux LOader (LILO)LILO 是激活管理程序当一台计算机要使用许多种操作系统时就可以用 LILO 来管理LILO 也能够提示符号中去输入参数 LILO 通常在安装完之后就大概会被忘记然而它却存在着安全的危险因为可能有恶意的使用者可以经由不同的LILO参数去通过安全的手段进而取得读者的系统举例来说如果有使用者在LILO的提示符号中输入这样的参数 linux init=/bin/sh 然后这个参数允许使用者直接去激活 linux 并且给予使用者 root 的权限(尽管它是在只读的型式)而不需要密码因为可能会发生上述的事件所以必须去对 LILO 做限制这个控制包含在 /etc/nf 档案中理想上这 /etc/nf 档案应该如下列所设定的一样 Boot=/dev/had map=/boot/map install=/boot/bootb Prompt timeout= image=/boot/vmlinuz label=linux initrd=/boot/initrd readonly root=/dev/hda restricted password=PASSWORD 结果为 LILO boot Password 这个例子中设定时间为 秒如果没有命令参数在 秒内输入的话它就会继续去激活预设的设定去开机这样子就没有机会去输入参数在这档案中另外一个重要的地方就是使用者必需要去输入密码密码就是存放在这个档案中可以任意去改变格外要注意的是它的权限必须改成避免被人去读取只能由 root 去读写这个档案执行 chmod /etc/nf 为了读者的 Linux 主机变的更安全还有许多额外的步骤要去执行首先必需要做的是对系统帐号对安全管制在 /etc/passwd 档案中包含了许多预先设定好的帐号这些帐号包括 gopher news mail ftp 等等仅仅为了软件使用权等目的而设置在这建议读者将这些帐号通通移除或用 # 批注掉 在此有些帐号会没有去设定密码必须要确定每个帐号都有密码保护着执行下面指令可以找出 /etc/passwd 中没有密码保护的帐号 awk –F: $ == /etc/passwd
当修改了 /etc/passwd 时也必需去检查影子密码文件(shadow passwords)可以去执行 pwconv and grpconv 命令去读取 /etc/passwd 档产生 shadow 档案出来 注一字典法 在passwd档里使用crypt加密过程为 以明码正文形式取出密码 把密码做为关键词用一系列进行加密 把一个位二进制值转变成位变量基础的唯一的位二进制值作为关键词再加密 crypt加密随机性大位关键词存在可为xE个所以要逆向译码是不可能的使用比较法 获得一个字典文件它是一个单字表 把单字用用户的加密程序加密(符合DES的标准) 把每个单字加密后的结果与目标加密后的结果进行比较如果 符合则该单字就是加密关键词也就是密码 这就是所谓的字典法 档案权限 Linux 档案系统跟其它的 UNIX 系统非常相似每个档案都有它的权限在包含读取写入执行等种权限和大部分的 UNIX 一样档案和目录权限会产生问题及被有心人利用来破坏或窃取读者宝贵的资料所以系统上档案和目录必须设权根只能给有权根的使用者去读取写入和执行 Read该档案或目录可以被读取对目录来说读取权限可以允许使用者去查看目录的内容但不能对目录内的档案进行读取 Write该档案或目录可以被写入对于目录来说写入是指在此目录区中建立删除档案及改名的能力要注意的是移除档案的能力并不是由档案的权限控制的而是由包含该档案的目录权限位所控制 Execute该档案或目录可以被执行(被搜寻)对目录而言是指允许该目录区能被搜寻的权限即查看目录中档案的权限 执行已编译的可执行档只需要设定该档案的执行权限即可但执行 shell 指令文件则必需同时需要设定读取和执行两种权限因为 shell 必须先能够从档案中读取指令再去执行以 /bin/mount 这个档案举例来说(这档案是用来挂上某些装置如 CDROM)它标准的权限是 rwsrxrx表示一般的使用者能够去执行这个档案从安全的观点来看一般的使用者不应该能够去执行这个档案就这点来看有许多系统的档案是被滥用的谁都可以去执行 不用说最基本的就是去讨论重要的目录(例如/etc