|
在讨论UNIX帐号安全,你首先要理解UNIX密码的安全。这种理解需要检查密码文件的格式。你可以利用下面的命令来得到几种特殊密码的格式$ man 5 password
密码文件包括几个字段,在表2-1作了详细解释
字 段 用 处
登陆名字
用户登陆时所真正使用的名字
加密后的密码
在UNIX中,密码是用高强度的DES算法来进行加密并保存结果
UID
用户唯一的标识号
GID
用户组的标识号
用户名
用户真正的名字
HOME
默认的主目录
SHELL
默认的程序SHELL接口
密码文件在显示的时候是加密的;这种显示叫做Shadow密码,通常创建在/etc/shadow,并属于root且只有root有权访问。
密码时效
按目前的形势,已有更强大的硬件大大地缩短了利用自动运行的程序来猜测密码的时间。因此在UNIX系统中防止密码被攻击的别一方法就是要经常地改变密码。很多时候,用户却不改变密码。因此一种机制用来强制规律性的更改密码是合乎要求的。这种技术称做密码时效并在很多UNIX系统上有效。
密码时效:LINUX
在LINUX系统上,密码时效是通过chage命令来管理的。
参数意思
-m 密码可更改的最小天数。如果是零代表任何时候都可以更改密码
-M 密码更改的最大天数
-W 用户密码到期前,提前收到警告信息的天数。
-e 帐号到期的日期。过了这天,此帐号将不可用。
-d 上一次更改的日期
-i 停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l 例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。
举个例子
% chage ?m 2 ?M 30 ?W 5 steven
此命令要求用户steven两天内不能更改密码,并且密码最长的存活期为30天,并在密码过期前5天通知他。
记录不成功的登陆企图
所有的UNIX系统都能够记录非成功的登陆企图。在LINUX中,登陆的失败是由syslog守护进程记录在/var/log/messages文件里。可以用下列命令来查找相关信息
$ grep login /var/log/messages
搜索路径(PATH)的重要性
在UNIX里,常使用的命令用来在不同的环境下查找一组特殊的目录称做PATH。想要运行当前目录包含的命令时是不需要加上一长串路径名的。在UNIX中用户经常使用”.”来表示当前的目录。如果”.”作为shell环境变量的一部分时,一个全局目录下的shell脚本或公用命令就有可能被相同目录下的伪程序所解释,而这个命令可能包含一段代码,一旦被执行后果可能是较严重的,比如是一个木马程序。在Bourne or Korn Shell里搜索路径通常这样来设置:
$ PATH=pathname1:pathname2:pathname3:
$ export PATH
在C或类似的shell里,以下列命令设置:
% set path = (pathname1 pathname2 pathname3)
在UNIX中像这样的路径可以保存在.profile文件里,可以看到像下面的语句
PATH=/bin:/usr/bin:/sbinHOME
Export PATH
因此,如果你经常参考用户主目录下的某个文件时,就创建一个叫”bin”的并把所以的个人的可执行文件放到里面,并要严格注意它们的安全性。假设”.”路径名存在于用户的shell初始化文件里,并且用户不精通有关安全的知识而且不太注意环境变量中路径,那么可以想像他经常使用到的who命令。假设用户已创建了下面的文件
$ touch /tmp/testfile
然后,编辑下面的程序并保存为who.c文件
# include
main()
{
system (“/usr/bin/who”);
system (“/bin/rm /tmp/testfile 2>/dev/null”);
}
然后对些程序进行编译
$ gcc ?o who who.c
并且此用户可能含有这样的profile:
PATH=.:/bin:/usr/bin:/sbinHOME
Export PATH
现在,如果户键入
$ who
再去找找你刚刚建立的testfile这个文件,看看发生了什么..
限制root登陆
另一增强root帐号安全的方法是限制其在系统上直接登陆。不同版本的UNIX处理此项任务的方法是不同的。
在SUN的Solaris系统上要修改/etc/default/login文件,你需要加入下面一行
CONSOLE=/dev/console |
|