看到大家那么踊跃的认领研究主题,我也忍不住想认领一个。找来找去,就简要说一说Linux系统密码的攻击与防范吧。
在早期的Linux系统中,/etc/passwd文件含有系统每个用户的信息,当然,用户的口令经过一定的数字与逻辑算法后把一个运算结果(可见字符串)放到了passwd文件中,加密强度并不大。于是,早期黑客们只要拿到/etc/passwd这个文件,系统就已经攻入一半了。
后来,随着安全级别的提高,出现了passwd文件中口令单独加密的情况,密码加密后的结果和其他一些辅助信息存到了shadow文件。至于采用何种保存形式和加密算法,可以用/usr/sbin/authconfig程序来设置。
用户登录时输入的口令经计算后与/etc/passwd和/etc/shadow中的结果相比较,符合则允许登录,否则拒绝登录。
一个强壮的有效的口令应当至少有8个字符长,不要取用个人信息(如生日,名字,用户名,计算机的型号等也尽量不要在密码中连接电话号码和2002、2000、888等数字),普通的英语单词也不好(因为可用字典攻击法),口令中最好有一些非字母(如数字,标点符号,控制字符等),注意尽量不要写在纸上或计算机中的文件中,选择口令的一个好方法是将不相关的字母和数字或控制字符相连,并组成不少于8位的长度。
为了强迫用户指定足够强壮的密码,需修改文件/etc/login.defs中参数PASS_MIN_LEN(口令最小长度)。同时应限制口令使用时间,保证定期更换口令,建议修改参数PASS_MIN_DAYS(口令使用时间)。一般的Linux设置如图1所示。
Linux使用的是DES(加密函数式是Crypt)或MD5(函数式是Md)加密算法,由于计算量之大,它们几乎很难被逆向破解。DES口令密文是有13个ASCII字符的字符串,而MD5口令密文的启始字符总是“$1$”。OK,大家了解的差不多了吧。接下来,我们就来演示一下。如图2所示是一台被攻陷的红帽系列的Linux。入侵者远程溢出服务器后获得了一个root权限的登录界面。
如何知道root用户的密码呢?入侵者打开了/etc/passwd文件。如图3所示。
看来主机的账户是用shadow加密了。继续看/etc/shadow的情况。如图4所示。
root的冒号后面就是加密后的密码。开始破解工作吧。
破解Linux口令的工具有很多,如John the Ripper、Crack by Alex Muffett和Cracker Jack等等,其中John the Ripper的功能最为强大,速度也最快。
将/etc/shadow下载到本地,先使用John the Ripper的简单模式试一下,但没有结果,如图5所示。
再挂个字典看看。这里用“-w=1.txt”指定字典文件。很快,root密码出来了,原来是:“bigapple”。如图6所示。
有了root密码,以后再进这个服务器就方便了。