记录一次大规模linux系统root密码撞库的经历

原创 2016年08月31日 10:48:44

在某公司做了一个项目,查找公司几十万台主机的root密码是否是弱密码。

该过程涉及到任务下发,数据处理和上报等过程,这里不介绍其他模块,只介绍收集部分。


一、怎么判断linux主机密码是否是弱密码

首先linux下面的密码保存在passwd和shadow文件中,其中passwd文件保存账户名,shadow文件保存密码hash值,只有root权限才能看到shadow文件内容

然后linux下密码hash格式如下:

$6$wYvk1x5b$YmSYE85080W5okRftVVJgxcmT/qRaJK4e07UkxhnX4gtNy3/hwFPEbpJ9P1G4qqMnWk0eaxuMfoLtnFsfm5HX1

其中黄色部分代表加密方式:

(1)如果密码不是以$开头,则密码是以EDS加密,文本全部为密文(暂时没有见到)

(2)如果密码以$1开头,表示使用MD5加密,加密后是22个字符

(3)如果密码以$2a开头,表示使用Blowfish加密(暂时没有见到)

(4)如果密码以$5开头,表示使用SHA256加密,加密后是43个字符

(5)如果密码以$6开头,表示使用SHA512加密,加密后是86个字符

绿色部分为使用以$开头的加密方式加密时使用的salt

蓝色标记部分为密码加密后的密文

根据以上规则提取出使用的加密方式,将弱密码库中的密码使用对应的加密方式加密,然后对比看是否相同,若有相同则可判定该密码为弱密码。


二、怎么收集弱密码

提取主机的密码有如下两种方案:(1)将几十万台主机的密码hash值全部收集到server端,然后再进行撞库判断;(2)将弱密码库下发到主机端,在主机端进行撞库。

首先第一个方案的好处是,收集和计算很方便,坏处是,将大规模的密码收集到一个地方是非常危险的操作。

第二个方案的好处是,除去了弱密码聚集在一处的风险,坏处是将弱密码库下发在主机端进行计算不方便,而且下发数据量有点大。

我们最终选择第二个方案,因为我们认为主机密码的安全级别比较高,而弱密码库在公司内部不是很机密。虽然如此,我们在下发弱密码库的时候还是将弱密码库进行加密处理,在主机端再进行解密判断,这个过程中,弱密码库中的密码没有落地,在主机内存中完成判断后删除,在一定程度上保证了弱密码库的安全。


三、大规模主机的兼容性

一般数据处理采用python进行处理,但是基于几十万台主机的情况下,Python的版本很可能不一致,比如python的2.和3.版本就不兼容,所以在大规模主机上运行Python代码时需要先检查Python的版本,如果版本统一,则可以使用Python,如果版本不统一或者不兼容的情况下,则需要考虑其他兼容性好的语言,比如,我是用的是shell语言。


四、运行时出现的一个问题

在上线运行时,遇到一个问题,在线测试三台主机,另外两台主机正常产生数据,并上报。只有一个主机没有产生数据。

后来发现是使用nohup+&后台方式启动时,该主机的sudoer文件中规定不能运行sudo命令,导致运行失败。注意,在运行该脚本时,已经是在root权限下,所以没有必要再使用sudo。




相关文章推荐

缓存机制 Cache ARC算法(二)

转自: http://blog.chinaunix.net/uid-28466562-id-3842965.html 闲话缓存:ZFS 读缓存深入研究-ARC(二) Solaris Z...
  • WSKINGS
  • WSKINGS
  • 2015年06月08日 19:03
  • 1214

关于一次忘记mysql root账号密码的经历

忘记了mysql的root密码,当幸好我有linux服务器的root权限,所以可以这么处理:1.首先我们要使用root权限停止mysql:[dev@LAMP1 ~]$ /etc/init.d/mysq...

Linux系统忘了MySQL的root用户密码怎么办

1.修改MySQL的配置文件(默认为/etc/my.cnf),在[mysqld]下添加一行 skip-grant-tables 2.保存配置文件后,重启MySQL服务 service ...

Linux系统默认root用户忘记密码重置

Linux系统默认root用户忘记密码后的解决方法是用单用户模式进入系统,直接用passwd来更改密码,具体步骤如下: 1.启动后进入grub界面,选择版本,按住E键进入编辑界面; 2.再选择...

修改linux系统的root密码

由于linux下有6中运行级别 其中单用户运行几倍也就是 -1 运行级别为单用户运行级别 在该模式下可以修改root 密码 该模式有以下几个特点: 为内核传递参数 1  或者single 可以进入单用...

Linux系统root用户密码修改

Linux系统root用户密码修改    安装Linux的虚拟机很久了,之前不太会用,也比较忙,一段时间没有学习它,因此一直没打开虚拟机,结果很悲催的哥们儿我把root密码给忘了,伤心欲绝,但是不知...

ECS Linux系统重置mysql数据库root用户密码

ECS Linux系统重置mysql数据库root用户密码 ecs linux 系统mysql运行正常,但root密码忘记了,找回root密码方法如下: 1. 打开/etc/my.cn...

linux系统忘root密码怎么办

这个问题其实很常见的,有的客户要求安全性就把root密码改的很安全,并且开了一些普通帐户使用,很少使用root帐户,但是时间一长root密码就很容易忘记 这里有一个方法,可以不用输入密码直接登录系统...
  • cbbbc
  • cbbbc
  • 2015年08月10日 00:29
  • 275

破解linux系统的root密码

原文链接:http://blog.sina.com.cn/s/blog_64aac6750100vaew.html 核心提示:破解root密码,才能顺利进入系统。 破解root密码,必...

使用单用户模式重置Linux系统root密码

忘记Linux系统root密码的处理方法-单用户模式重置密码记root密码,可能是很多人使用Linux时遇到过的情况。下面是使用单用户模式,重置root密码的方法。1、重启系统,在出现启动倒计时的画面...
  • neo4945
  • neo4945
  • 2017年06月19日 15:45
  • 179
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:记录一次大规模linux系统root密码撞库的经历
举报原因:
原因补充:

(最多只允许输入30个字)