位置:海鸟网 > IT > linux/Unix >

Linux用户管理安全宝典:密码防破解与帐号文件保护

 Linux作为一种多任务、多用户的操作系统,在同一时间段上可能为众多用户使用,且用户的管理直接关系到整个系统的安全,用户需要对其中的密码管理和帐户文件管理进行着重的强调和保护。

Linux用户管理主要分为两方面:密码管理,以及用户与用户组的管理。下面将对这两方面分别进行阐述。

本文隶属于专题:Linux系统全方位管理
1. 密码管理

密码是用户登录Linux系统的钥匙,如果没有钥匙总是要费一番力气后,才能登录到目标操作系统。无论入侵者采用何种远程攻击,如果无法获得管理员或超级管理员的用户密码,就无法完全控制整个系统。若想访问系统,最简单也是必要的方法就是窃取用户的密码。因此,对系统管理员账户来说,最需要保护的就是密码,如果密码被盗,也就意味着灾难的降临。

入侵者大多是通过各种系统和设置漏洞,获得管理员密码来获得管理员权限的,然后,再实现对系统的恶意攻击。账号的弱密码设置会使入侵者易于破解而得以访问计算机和网络,而强密码则难以破解,即使是密码破解软件也难以在短时间内办到。密码破解软件一般使用3种方法进行破解:字典猜解、组合猜解和暴力猜解。毫无疑问,破解强密码远比破解弱密码困难得多。因此,系统管理员账户必须使用强密码。

据统计,大约80%的安全隐患是由于密码设置不当引起的。因此,密码的设置无疑是十分讲究技巧的。在设置密码时,请遵守密码安全设置原则,该原则适用于任何使用密码的场合,既包括Windows操作系统,也包括UNIX/Linux操作系统。

John the Ripper是一个工具软件,用于在已知密文的情况下尝试破解出明文的破解密码软件。目前的最新版本是JOHN1.7版,主要支持对DES、MD5两种加密方式的密文进行破解工作。它可以工作于多中不同的机型以及多种不同的操作系统之下,目前已经测试过能够正常运行的操作系统有:Linux x86、freeBSD、x86、Solaris、SPARC、OSF/1 Alpha、DOS、WinNT/WinXP系列等。

John the Ripper官网:

John the Ripper 1.7是目前比较好的破解密码工具,在解密过程中会自动定时存盘,用户可以强迫中断解密过程(使用ctrl+c组合键),下次还可以从中断的地方继续进行下去(john-restore命令)。任何时候敲击键盘,用户都可以看到整个解密的进行情况,所有已经被破解的密码会被保存在当前目录下的JOHN.POT文件中,SHADOW中所有密文相同的用户会被归成一类,这样JOHN就不会进行无谓的重复劳动了。在程序的设计中,关键的密码生成的条件被放在JOHN.INI文件中,用户可以自行修改设置,不仅支持单词类型的变化,而且支持自己编写C的小程序限制密码的取值方式。

在使用该软件前,我们可以从网上下载其最新版本john-1.7.3.4 for Linux版本,它包含DOC、SRC和RUN三个目录,在SRC目录下,在机器上执行如下命令即可:
#make
#make clean linux-x86-any

安装好后,可以切换到RUN目录下,进行测试,如下所示:
#cd ../run
#./john –test

John the ripper提供了如下多达10余种的命令,供用户选择使用:
pwfile:<file>[,..]:用于指定存放密文所在的文件名,(可以输入多个,文件名一我“,”分隔,也可以使用*或者 这两个通配符引用一批文件)。也可以不使用此参数,将文件名放在命令行的最后即可。
wordfile:<字典文件名>-stdin:指定的用于解密用的字典文件名。也可以使用STDIO来输入,就是在键盘中输入。
rules:在解密过程中使用单词规则变化功能。如将尝试cool单词的其他可能,如COOLER、Cool等,详细规则可以在JOHN.INI文件中的[List.Rules:Wordlist]部分查到。
incremental[:<模式名称>]:使用遍历模式,就是组合密码的所有可能情况,同样可以在JOHN.INI文件中的[Incremental:*****]部分查到。
single:使用单一模式进行解密,主要是根据用户名产生变化来猜测解密,可以消灭比较低级的用户。其组合规则可以在JOHN.INI文件中的[List.Rules:Single]部分查到,我们在下面详细解释。
external:<模式名称>:使用自定义的扩展解密模式,用户可以在john.ini中定义自己需要的密码组合方式。JOHN也在INI文件中给出了几个示例,在INI文件的[List.External:******]中所定义的自订破解功能。
restore[:<文件名>]:继续上次的破解工作,JOHN被中断后,当前的解密进度情况被存放在RESTORE文件中,用户可以拷贝这个文件到一个新的文件中。如果参数后不带文件名,JOHN默认使用RESTORE文件。
makechars:<文件名>:制作一个字符表,用户所指定的文件如果存在,则将会被覆盖。JOHN尝试使用内在规则在相应密钥空间中生成一个最有可能击中的密码组合,它会参考在JOHN.POT文件中已经存在的密钥。
show:显示已经破解出的密码,因为JOHN.POT文件中并不包含用户名,同时用户应该输入相应的包含密码的文件名,JOHN会输出已经被解密的用户连同密码的详细表格。
test:测试当前机器运行JOHN的解密速度,需要1分钟,它会得出在当前的情况下解密的各种可能情况下相应的解密速度,如同时解密100个用户时的平均速度,使用 遍历法解密模式时解密的速度。salts指用户个数,如果给出的对于100个用户解密的平均速度为18000次/秒,那么表明同时对100个用户解密,解 密的速度为每个180次/秒。因为绝大多数的时间被用于密钥比较过程中了。所以应该对用户进行挑选。
users:<login|uid>[,..]:只破解某类型的用户或者属于某个组的用户。如果得到的PASSWD文件没有包含密文,那么在得到SHADOW后应该进行组合,JOHN的附带程序 UNSHADOW.EXE可以完成这一过程,当然了,用户也可以手工做。一般的能够进入CSH的用户都是解密的首选对象。也可以要UID=0的ROOT级别 的用户。
shells:[!]<shell>[,..]:和上面的参数一样,这一选项可以选择对所有可以使用shell的用户进行解密,对其他用户不予理睬。“!”就是表示不要某些类型的用户。例如:“-shells:csh”。