深度揭露Shadow文件背后的秘密

上一篇 / 下一篇  2011-08-07 22:17:52 / 个人分类:linux学习

 Linux操作系统Windows操作系统相比,最大的特点就是其所有的管理配置功能都可以通过更改配置文件来实现,而不需要通过累赘的图形化管理界面。如需要更改帐户的密码策略,就可以通过更改shadow这个配置文件来实现。如需要更改某个帐户的密码有效期,很少有系统管理员会利用图形化窗口去更改,而是在shell中直接来更改配置文件。如下图,就是用户帐号密码配置文件shadow的截图。笔者就以这个文件为例,谈谈如何通过修改配置文件来实现管理任务。

  虽然Linux操作系统的配置文件比起Windows操作系统的注册表等文件要容易理解的多,但是掌握shadow配置文件的基本结构与功能,仍然是系统管理员的一堂基础课。如上图所示,在shadow配置文件中,每条记录都有八个字段,每个字段之间利用冒号(:)进行分割。每个字段都完成一项特殊的控制。系统管理员通常需要更改某个字段来实现某个特殊的任务。

  第一个字段:用户名字。如上图,最前面的一个字段表示用户的帐号名。这个字段不用过多解释,不过系统管理员需要知道一点,在系统安装完毕后,除了root特权帐户外,系统还会自动建立不少的用户。这些用户往往用来完成一些特殊的作业。为此在没有了解这些帐户的用途之前,不要轻易更改系统创建的用户。而系统管理员的用户通常情况下都是保存在最后面。也就是说,其记录的顺序是按照帐号创建的先后顺序来保存的。这对于系统管理员迅速定位帐户信息能够提供一定的帮助。

  第二个字段:用户密码。用户名后面看起来一串没有含义的字符串,这就是密码。不过这是处理后的密码。为了操作系统的安全考虑,在这个配置文件中,密码是加密处理过的。如上图所示,笔者只是采用了简单的投影技术来加密口令,这个处理方法只防小人,不防君子。如果攻击者具有一定的专业知识,仍然可以破解这个口令。为此在一些安全性要求比较高的企业中,笔者建议大家采用MD5编码。如此的话,这里显示的字符串长度就会有256个字符,其破解的难度就会大的多。有时会这个字符串为空白,就表示这个帐户没有设置密码。另外用户需要注意的是,这个密码跟微软操作系统不同,其有最大的长度限制。如在RedHat9中其密码的最大长度为8位。如果用户设置的密码超过这个长度的话,则超过的位数操作系统会忽略掉。所以在设置密码的时候,用户最好不要依靠密码的长度来提高安全性;而最好是通过密码的复杂性,如字符与阿拉伯数字混用等手段来提高操作系统的安全。

  第三个字段:14165,表示密码最后修改的时间。系统管理员或者用户可以更改密码,然后操作系统会记录最后更改的时间。不过这里记录的时间读起来比较困难,其是以天数为单位的。如上图所示,14165就表示root帐户的密码最近一次更改距离现在有14165天。这个字段对于系统管理员没有什么用途。但是对于操作系统来说,确很有作用。其要通过这个参数来实现密码强制更改策略。

  第四个字段:密码两次更改之间,至少需要间隔的日数。有时候,密码过于频繁更改,对于应用系统的部署会有比较大的影响。如系统管理员在Linux操作系统上部署了文件共享服务。每个用户或者每个部门通过各自的帐户名与密码来访问这个文件服务器。此时,往往需要对这些用户的密码更改进行限制,如在一年之内不允许他们更改密码。因为如果更改密码的话,就需要在每个客户端上也进行相应的调整,这会增加维护的工作量。如上图所示,如果这个字段的值为0,则表示这个时间间隔的天数没有强制限制。

第五个字段:密码的有效期限。这个字段表示密码更改后,距离下次一定要更改口令的天数。有时候系统管理员为了安全考虑,会给密码设置一个有效期限。当这个期限到后,就会提示用户更改密码。特别是当Linux服务器暴露在互联网上时,频繁更改密码确实是提高其安全性的一个重要手段。如输入60,就代表距离上次更改密码60天后,用户就必须更改一个新的口令。如果逾期不进行更改的话,就会受到警告,最后这个帐户可能就会被注销。如上图所示,如果这个字段的值为99999的话,就表示没有密码有效期的限制,用户可以永远是用这个密码。不过这是一个非常危险的做法,系统管理员还是需要慎用。

  第六个字段:密码失效前的警告。如系统管理员把密码的有效期限设置为60天。那么比较人性化的做法是在密码失效7天之前就开始警告用户,需要更改密码。而不是等到密码失效了,用户不能够利用原有帐户登陆了,才知道自己的密码失效。这个字段就是用来设置当离下次密码必须更改日期前多少天时,就开始警告用户需要更改密码。如上图所示,笔者这里设置为7(这是操作系统的默认值),就表示在密码逾期七天之前向用户提出警告。如果不需要警告信息的话,则这里显示的是空白。注意这根上面的有所区别,没有警告是以空白表示的,而不是以99999来表示。

  第七个字段:账户注销时间。如果用户不听系统的警告,在逾期后仍然没有及时更改密码,那么为了安全起见,系统可能会把这个帐户注销。要实现这个限制的话,就需要在这个字段中进行设置。这个字段就表示超过口令必须更改的日期多少天后,系统会自动将这个帐户注销掉。如这里设置为5天,而密码到期的时间为2009年6月1日。如果用户在5天之内没有更改密码,则到6月6日的时候,系统就会自动的将这个帐户注销,不允许用户登录。有时候,如春节放假回来之后,系统管理员可能不得不更改这个值,如需要延长。因为春节放假时间比较长,不少用户可能会因为没有及时更改密码而被注销。为此系统管理员需要延长这个期限,让用户有足够的时间去更改密码。

  第八个字段:帐号的使用期限。不仅密码具有使用期限,而且帐号也具有使用期限。有时候这个帐号的使用期限控制非常有用。如企业有新员工,其使用期为60天。当然为了企业信息安全考虑,在试用期内的员工其权限肯定需要受到一定的限制。为此系统管理员可以在系统中专门设置一个账号为试用期的员工使用,可以把这个有效期限设置为60天。当过了这个有效期之后,系统就会锁住这个帐户。故通过这个管理机制,就可以最大限度的保障这些试用期员工帐号的安全。即系统管理员不用再费心的去管理这些帐号,其过期后会自动注销。如果这字段为空白的话,就表示没有账号使用期限的限制,其会永久生效。注意通常情况下不要为root帐户设置这方面的限制。否则的话,后果会不堪设想。

  第九个字段:这最后一个字段到现在为止还是一个预留字段,以待后续操作系统升级时使用。

  从上面的分析中,大家可以看出shadow文件中基本上包含了帐户与密码管理中的所有内容。作为系统管理员,除了要了解这个文件的基本结构之外,还需要了解这个文件中哪些字段可以更改。通常情况下,前面三个字段最好不要更改。后面的内容可以根据需要来调整。不过在账号有效期限这个字段中,不要为root帐户设置账号期限。因为root账号主要用来做管理用。如果为其设置有效期限,而期限过期后,那么就没有用户能够来完成系统的维护工作了。通过配置文件来维护帐户、密码等管理策略,要比通过其他方式简单的多。作为一名Linux操作系统管理专家,应该要养成这个能力。而不要太过于依靠其图形化的界面。因为很多管理维护任务,都需要依靠远程终端来实现。此时就需要考验系统管理员命名行操作的能力了。


TAG:

引用 删除 201314   /   2011-08-09 10:54:05
1
 

评分:0

我来说两句

Open Toolbar