1 创建用户访问安全策略
如果每名管理员 制作一项严密安全政策,并且帮助用户了解使用它,那么相关的安全事件将显著消退。 请遵循这些指导方针为创造一个用户安全策略。
● 访问对系统是特权。这种特权和责任相对。你必须采取所有防备措施可能保证访问权限不会被其他人获得。
● 密码不应是个人偏爱。 选择密码是,用户不能把密码看成是自己完全掌握的东西。
● 设置密码过期。用户应当认识到密码不能一成不变。
● 创建密码要有所区别。
● 建立一个用户终止安全策略。建立一个用户终止安全策略对离职的员工非常重要,当一个离开团体时,系统管理员可以采取两种措施:userdel username命令删除他的账户,使用usermod –s /bin/true 命令中止他的帐号,使其不能登陆系统。
2 使用Solaris命令定期验证用户和组文件
在Solaris操作系统中,每一个文件和程序都归属于一个特定的“用户”。每一个用户都由一个惟一的身份来标识,这个标识叫做用户ID(UserID,UID)。并且,系统中的每一个用户也至少需要属于一个“用户分组”,也就是由系统管理员所建立的用户小组,这个小组中包含着许多系统用户。与用户一样,用户分组也是由一个惟一的身份来标识的,该标识叫做用户分组ID(GroupID,GID)。用户可以归属于多个用户分组。对某个文件或程序的访问是以它的UID和GID为基础的。一个执行中的程序继承了调用它的用户的权利和访问权限。
用户文件和组文件包括:用户账户文件——/etc/passwd ,用户影子文件——shadow,用户组账号文件——/etc/group,组账号文件——/etc/gshadow。上面所介绍的用户以及组账号文件都非常重要,对于系统验证用户和组具有重要意义。一旦上述文件发生错误,则会对系统造成影响。正是基于这个原因,Solaris提供了pwck和grpck这两个命令分别验证用户以及组文件,以保证这两个文件的一致性和正确性。下面将分别加以介绍。
● 使用pwck命令
pwck用来验证用户账号文件(/etc/passwd)和影子文件(/etc/shadow)的一致性,它验证文件中的每一个数据项中每个域的格式以及数据的正确性。如果发现错误,该命令将会提示用户对出现错误的数据项进行删除。该命令主要验证每个数据项是否具有: 正确的域数目、惟一的用户名、合法的用户和组标识、合法的主要组群、合法的主目录、合法的登录shell。如果检查发现域数目与用户名错误,则该错误是致命的,则需要用户删除整个数据项。其他的错误均为非致命的,将会需要用户进行修改,而不一定要删除整个数据项。下面的例子说明如何使用该命令:
首先使用命令:cat /etc/passwd,显示系统中原来的用户账号文件。然后使用vi编辑/etc/passwd 加入一行:
“:x:200:00:superman:/home/super:/bin/bash”
这是一项不存在的数据项
然后运行命令:
#pwck /etc/passwd 如图-1。验证出系统字段太少
图-1验证出系统字段太少
● 使用grpck命令
与pwck命令相类似,grpck命令是用来验证组账号文件(/etc/group)和影子文件(/etc/gshadow)的一致性和正确性的。该命令验证文件中的每一个数据项中每个域的格式以及数据的正确性。如果发现错误,该命令将会提示用户对出现错误的数据项进行删除。 该命令主要验证每个数据项是否具有: 正确的域数目、惟一的组群标识、合法的成员和管理员列表。如果检查发现域数目与组名错误,则该错误是致命的,则需要用户删除整个数据项。其他的错误均为非致命的,将会需要用户进行修改,而不一定要删除整个数据项。下面的例子说明如何使用该命令:
首先使用命令:cat /etc/group 显示系统中原来的用户账号文件,然后使用vi编辑/etc/group加入不正确的数据项“test:x”,
然后运行命令:
#grpck /etc/group 如图-2。验证出用户组系统错误。
图-2验证出用户组系统错误,
3 保障Solaris用户安全的建议
Solaris安全性是一个复杂和广泛的问题,此处我们主要关注Solaris用户的账户安全,特别是Solaris系统管理员如何保障用户的安全。
● 口令安全
Solaris系统中的/etc/passwd文件含有全部系统需要知道的每个用户的信息(加密口令的密文也可能存于/etc/shadow文件中)。/etc/passwd中包含有用户的登录名、经过加密的口令、用户号、用户组号、用户注释、用户主目录和用户所用的Shell程序。其中,用户号(UID)和用户组号(GID)用于Solaris系统惟一标识用户和同组用户,以及用户的访问权限。一个好的口令应当至少有6个字符,最好不要取用个人信息(如生日、名字、反向拼写的登录名),普通的英语单词也不好(因为用字典攻击法容易破解)。口令最好含有一些非字母字符(如数字、标点符号、控制字符等),并且要好记,不能写在纸上或计算机中的文件里。选择口令的一个好方法是将两个不相关的词用一个数字或控制字符相连,并截断为8个字符。当然,如果你能记住8位乱码自然更好。不应在不同机器中使用同一个口令,特别是在不同级别的用户上使用同一口令。不要将口令存储于终端功能键或Modem的字符串存储器中。用户应定期改变口令,推荐3个月改变一次。系统管理员可以强制用户定期修改口令。为防止眼明手快的人得到口令,在输入口令时应确认身边无人。
黑客们经常用一些常用字来破解密码。曾经有一位美国黑客表示,只要用“password”这个字,就可以打开全美多数的计算机。其它常用的单词还有:account、ald、alpha、beta、computer、dead、demo、dollar、games、bod、hello、help、intro、kill、love、no、ok、okay、please、sex、secret、superuser、system、test、work、yes等。所以要避免使用以上单词作为口令。
● 文件和文件夹的安全
umask设置用户文件和目录的文件创建缺省屏蔽值,若将此命令放入.profile文件就可控制该用户后续所建文件的存取许可。umask命令与chmod命令的作用正好相反,它告诉系统在创建文件时不给予存取许可。
1.不要让文件或目录被他人读写。
如果不信任本组用户,umask设置为022。确保自己的.profile他人不可读写;暂存目录最好不要存放重要文件;home目录任何人不可写; uucp传输的文件应该加密,并尽快转移到自己的目录中。
2.若不想要其他用户读文件或目录,就要使其不允许任何人读。
umask设置为006/007。若不允许同组用户存取自己的文件和目录,umask设置为077;暂存文件按当前umask设置。存放重要数据到暂存文件的程序,就被写成能确保暂存文件其他用户不可读。这样,就可确保别的用户不可读home目录。
● 拷贝和移动文件的安全
用cp命令拷贝文件时,若目的文件不存在,则将同时拷贝源文件的存取许可,包括Suid和Sgid许可。新拷贝的文件属拷贝用户所有,故拷贝别人的文件时应小心,不要被其他用户的Suid程序破坏文件安全。
用mv命令移动文件时,新移的文件存取许可与原文件相同,mv仅改变文件名。只要用户有目录的写和搜索许可,就可移走该目录中某人的Suid程序,且不改变存取许可。若目录许可设置不正确,则用户的Suid程序可能被移到不能修改和删除的目录中,从而出现安全漏洞。
cpio命令用于将目录结构拷贝到一个普通文件中,然后再用cpio命令将该普通文件转成目录结构。小心使用该命令,因为它能覆盖不在当前目录结构中的文件,用t选项可首先列出要被拷贝的文件。
● 不要离开登录的终端
这个问题看起来简单,但却是最容易忽视的问题,哪怕只是几分钟的疏忽,也会给系统造成危害。
● 查找所有SUID/SGID位有效的文件
系统中SUID和SGID文件很有可能成为安全隐患,必须被严密监控。因为这些程序都给执行它的用户一些特权,所以要确保危险的SUID程序没有被安装。
黑客常常利用SUID程序,故意留下一个SUID的程序作为下次进入系统的后门。注意系统中所有的SUID和SGID的程序,并跟踪它们,这样你就可以尽早发现入侵者。用下面的命令查找系统中所有的SUID和SGID程序:
# find / -type f \( -perm -04000 -o -perm -02000 \) \-exec ls -lg {} \;
● CU的问题
CU命令能使用户从一个Solaris系统登录到另一个Solaris系统。此时,在远地系统还必须输入“~”后回车,以断开CU和远地系统的连接。 CU也有安全问题。如果本机安全性弱于远地机,不提倡用CU去登录远地机,以免由于本地机不安全而影响较安全的远地机。由于CU的老版本处理“~”的方法不完善,从安全性强的系统调用,会使安全性弱的系统的用户使用强系统用户的CU,传送强系统的/etc/passwd文件。
● 暂存文件和目录的安全
Solaris系统中暂存目录为/tmp,如果用这些目录存放暂存文件,别的用户可能会破坏这些文件。使用暂存文件最好将文件屏蔽值定义为007。保险的方法是建立自己的暂存文件和目录$Home/tmp,不要将重要文件存放于公共的暂存目录。
● UUCP文件传输和网络安全
UUCP命令用于将文件从一个Solaris系统传送到另一个Solaris系统。通过UUCP传送的文件,通常存于/usr/spool/uucppublic/login目录中,Login是用户的登录名,该目录存取许可为777。通过网络传输并存放于此目录的文件属于UUCP所有,文件存取许可为666和777。用户应当将通过UUCP传送的文件加密,并尽快移到自己的目录中。其它网络将文件传送到用户home目录下的RJC目录中。该目录对其他人是可写、可搜索的,但不一定是可读的,因而用户的RJC目录的存取许可方式应为733,允许程序在其中建立文件。同样,传送的文件也应加密并尽快移到自己的目录中。
● Suid/Sgid的安全
尽量不写Suid/Sgid程序。in为现有文件建立一个链,即建立一个引用同一文件的新名字。如目的文件已经存在,则该文件被删除而代之以新的链;或存在的目的文件不允许用户写,则请求用户确认是否删除该文件,因为只允许在同一文件系统内建链。若要删除一个Suid文件,就要确认文件的链接数,只有一个链才能确保该文件被删除。若Suid文件已有多个链,一种方法是改变其存取许可方式,这将同时修改所有链的存取许可;也可以Chmod000文件名,这不仅取消了文件的Suid和Sgid许可,同时也取消了文件的全部链。要想找到谁与自己Suid程序建立了链,不要立刻删除该程序,系统管理员可用Ncheck命令找到该程序的其他链。
● 智能终端的安全
由于智能终端有Send Enter换码序列,因此告诉终端当前系统就像是用户敲入的一样。这是一种危险的能力,其他人可用Write命令发送信息给本用户终端。禁止其他用户发送信息的方法是使用Mesgn命令。Mesgn不允许其他用户发信息,Mesgy允许其他用户发信息。 即使如此仍有换码序列的问题存在,任何一个用户用Mail命令发送同样一组换码序列,不同的要用!rm-r*替换rm-r*。
● 其他安全问题
除了信任的用户外,不要运行其他用户的程序。在自己的Path中,将系统目录放在前面。用Ctrl+D或Exit退出后,在断开与系统的连接前看到login:提示后再离开,以免在用户没注销时他人进入。定时使用ls -a .命令列出当前目录中的全部文件,包括以“.”开头的文件,查看所有文件的存取许可方式和所有者。任何不属于自己的文件都应怀疑和追究。以上这些是笔者作为Solaris系统管理员对保持用户账户安全的一些建议。更重要的是要建立安全意识,了解用户。系统管理员越熟悉自己的用户和用户工作习惯,就越能快速发现不寻常的事件,而不寻常的事件就意味着系统安全问题。避免用户账户不安全事故的最基本方法是预防和定期的安全检查,包括使用嗅探器。