Unix系统的安全策略之口令安全
Unix系统中的/etc/passwd文件含有全部系统需要知道的关于每个用户的信息(加密后的口令也可能存于/etc/shadow文件中)。/etc/passwd中包含用户的登录名、经过加密的口令、用户号、用户组号、用户注释、用户主目录以及用户所用的shell程序。
其中用户号(UID)和用户组号(GID) 用于Unix系统惟一标识用户和同组用户及用户的访问权限。/etc/passwd中存放的是加密后的口令,用户在登录时需要输入的口令经计算后与/etc/passwd对应部分相比较,符合则允许登录,否则拒绝用户登录。用户可用passwd命令修改自己的口令, 但不能直接修改/etc/passwd中的口令部份。
一个好的口令应当至少有6个字符长,不要用个人信息做口令(如生日、名字、反向拼写的登录名、房间中可见的物品等),普通的英语单词也不好(因为可用字典攻击法),口令中最好有一些非字母(如数字、标点符号、控制字符等),还要好记一些, 不能写在纸上或计算机里的文件中。选择口令的一个推荐方法是将两个不相关的词用一个数字或控制字符相连,并截断为8个字符。当然,如果能记住8位乱码自然更好。
不应使用同一个口令在不同机器中使用,特别是不同级别的用户使用同一口令,可能导致安全隐患。用户应定期改变口令,至少6个月要改变一次,系统管理员可以强制用户定期做口令修改。为防止别人窃取口令,在输入口令时应注意保密。
Unix系统的安全策略之文件和目录访问许可
文件属性决定了文件的被访问权限,即谁能存取或执行该文件。用“ls -l”可以列出详细的文件信息,如:
-rwxrwxrwx 1 pat cs440 70 Jul 28 21:12 zombin
上述信息中包括了文件许可、文件链接数、文件所有者名、文件相关组名、文件长度、上次存取日期和文件名。
其中文件许可分为四部分: 第一个rwx表示文件属主的访问权限; 第二个rwx表示文件同组用户的访问权限; 第三个rwx表示其他用户的访问权限。若某种许可被限制则相应的字母换为“-”。
在许可权限的执行许可位置上,可能是其他字母,如s,S,t,T。s和S可出现在所有者和同组用户许可模式位置上,与特殊的许可有关。t和T可出现在其他用户的许可模式位置上,与“粘贴位”有关而与安全无关。小写字母(x,s,t)表示执行许可为允许,负号或大写字母(-,S或T)表示执行许可为不允许。改变许可方式可使用chmod命令,并以新许可方式和该文件名为参数。新许可方式以3位8进制数给出。
chmod也有其他方式的参数可直接对某组参数修改,在此不再赘述,详见Unix系统的联机手册。
文件许可权可用于防止偶然地重写或删除一个重要文件。改变文件的属主和组名可用chown和chgrp,但修改后原属主和组员就无法修改回来了。
另外,用户ID许可(SUID)设置和同组用户ID许可(SGID)设置可作用于可执行的目标文件(只有可执行文件才有意义)。当一个进程执行时就被赋于4个编号,以标识该进程隶属于谁,分别为实际和有效的UID、实际和有效的GID。有效的UID和GID一般和实际的UID和GID相同,有效的UID和GID用于系统确定该进程对于文件的存取许可。
设置可执行文件的SUID许可将改变上述情况,当设置了SUID时,进程的有效UID为该可执行文件的所有者的有效UID,而不是执行该程序的用户的有效UID,因此, 由该程序创建的进程和文件都有与该程序所有者相同的存取许可。这样,程序的所有者将可通过程序的控制在有限的范围内向用户发表不允许被公众访问的信息。
同样,SGID设置有效的GID。可用“chmod u+s文件名”和“chmod u-s 文件名”来设置和取消SUID设置;用“chmod g+s 文件名”和“chmod g-s 文件名”来设置和取消SGID设置。当文件设置了SUID和SGID后,使用chown和chgrp命令将全部取消这些许可。
在Unix系统中,目录也是一个文件,用“ls -l”列出时,目录文件的属性前带“d”。目录许可也类似于文件许可,用ls列目录要有读许可,在目录中增删文件要有写许可,进入目录或将该目录作为路径分量时要有执行许可,因此要使用任一个文件,必须有该文件及找到该文件的路径上所有目录分量的相应许可。
仅当要打开一个文件时,文件的许可才开始起作用,而rm、mv只要有目录的搜索和写许可, 就不需要文件的许可,这一点应注意。
UNIX系统会针对进攻策略采取了相应的防范措施,比如将口令与用户信息分开存放,限制用户登录的尝试次数等。希望大家多多掌握。
【编辑推荐】