通用数据库弱密码检测解决方案

通过加密解密算法检验数据库用户密码是否存在弱密码问题,可适用于主流的数据库产品(Oracle,MySQL,Postgres,SQLServer,达梦8,人大金仓8),解决传统通过碰库方式检测的效率低下和用户被锁的问题。

01

数据库密码存储图解说明

工具通过密码生成算法的方式,以最高的计算效率分析弱密码问题。以下是工具的性能效率测试统计。

测试项目

算法执行次数

执行时间(秒)

验证速率(次/秒)

备注

Oracle10g

857,375

08

107,171

破译容易

Oracle11g

857,375

12

71,447

破译容易

Oracle12c

9,025

55

164

Oracle19c

9,025

52

173

MySQL5

857,375

06

142,895

破译容易

MySQL8

9,025

31

291

Postgres_md5

857,375

08

107,171

破译容易

Postgres_scram

9,025

79

114

DM8

857,375

06

142,895

破译容易

SQLServer

857,375

08

107,171

破译容易

02

详细功能说明

在线模式:

通过online.json配置数据库连接信息,自动连接数据库并查询1次数据库用户表(对数据库性能无任何影响)获取用户信息后在本地进行checksum计算和校验,checksum匹配则说明密码匹配,记录匹配用户信息并最后生成报告,所有运算在本地服务器。

离线模式:

通过offline.json配置离线获取的用户和checksum信息,全部在本地进行checksum计算和校验,checksum匹配则说明密码匹配,记录匹配用户信息并最后生成报告,所有算力在本地服务器。

03

安装和部署

操作系统:CentOS Linux 6,7,8

软件包:libblkid libblkid-dev libblkid-devel openssl openssl-devel

JDK版本:jdk1.8以上

软件包安装:

# yum install libblkid libblkid-dev libblkid-devel openssl openssl-devel

创建用户

# useradd -g disk dbpass
# passwd dbpass

解压文件

# unzip -d /usr/local dbpass.zip# chown -R dbpass:dbpass /usr/local/dbpass

许可证

# su - dbpass$ cd /usr/local/dbpass$ ./run.sh license

00DBD8843BDC41152C72B370FBC846A68FF70F29

记录并提交获取用户使用授权码,请妥善保持

6BCCF0A6AB0B62F473B466933AC8E6114947BF6D

获取的授权码用于程序执行

04

配置文件说明

参数配置文件 param.json

[{"PARALLEL":8}]

参数说明

PARALLEL:并行参数,同时运行的线程数量。

连接配置文件 online.json

[{"NAME":"192.168.2.199_oradb","JAR_PATH":"/root/ojdbc6.jar","DRIVER":"oracle.jdbc.driver.OracleDriver","URL":"jdbc:oracle:thin:@//192.168.2.199/oradb","USER":"system","PASSWD":"abc123"}{"NAME":"192.168.2.199_3306","JAR_PATH":"/root/mysql-connector-java-5.1.49.jar","DRIVER":"com.mysql.jdbc.Driver","URL":"jdbc:mysql://192.168.2.199:3306/d1?useSSL=false","USER":"u1","PASSWD":"abc123"}]

参数说明

NAME:连接任务名称,可为任意易于识别字符串,可为空值。

JAR_PATH:数据库jdbc jar包完整路径,用于连接自动加载。

DRIVER:数据库jdbc驱动名称

URL:数据库连接串

USER:数据库用户

PASSWD:数据库密码

弱密码配置文件 pass.json(支持正则表达式)

[{"NAME":"","TYPE":"TEXT","VALUE":"abc123"}{"NAME":"","TYPE":"REGEX","VALUE":"abc[0-9a-bA-Z]{1,2}"}]

参数说明

NAME:密码规则名称,可为任意易于识别字符串,可为空值。

TYPE:TEXT为字符串密码,REGEX为正则表达式密码集。

VALUE:具体密码串或正则表达式值

离线checksum文件 offline.json(通过数据库查询语句获取用户和checksum值)

[{"NAME":"test","USER":"u1","CHECKSUM":"XXXXXXXXXXXXXXX"}{"NAME":"test","USER":"u1","CHECKSUM":"YYYYYYYYYYYYYYY"}]

参数说明

NAME:离线用户测试任务名称,可为任意易于识别字符串,可为空值。

USER:数据库用户名称。

CHECKSUM:数据库密码checksum值。

附不同数据库厂家,用户和checksum的查询语句

Oracle:

select name, nvl(password, spare4) checksum from sys.user$ where type# = 1

MySQL:

select concat_ws("@", user, host) user, hex(authentication_string) checksum from mysql.user where authentication_string is not null

SQL Server:

SELECT name, password_hash FROM sys.sql_logins

Postgres:

select rolname, rolpassword from pg_catalog.pg_authid where rolpassword is not null

DM:

select a.username, b.password from dba_users a, sysuser$ b where a.user_id = b.id

kingbase:

select rolname, rolpassword from pg_catalog.sysauthid where rolpassword is not null

05

任务运行

/usr/local/dbpass/run.sh online  <param.json> <online.json>  <passwd.json> <licence string>

在线模式:

$ /usr/local/dbpass/run.sh ONLINE param.json online.json passwd.json C474517AF70C9DD0DB5E14E6D4F6B91F98829AF7

/usr/local/dbpass/run.sh offline <param.json> <offline.json> <passwd.json> <licence string>

离线模式:

$ /usr/local/dbpass/run.sh OFFLINE param.json offline.json passwd.json C474517AF70C9DD0DB5E14E6D4F6B91F98829AF7

06

运行和生成excel报告

$ /usr/local/dbpass/run.sh ONLINE param.json online.json passwd.json C474517AF70C9DD0DB5E14E6D4F6B91F98829AF72022-03-29 10:58:02 Thread started, name: 192.168.2.199_oradb2022-03-29 10:58:04 Thread done, name: 192.168.2.199_oradb, status: 0, total Computed: 35592, total User count: 24, total Found user: 0, total User error: 0.Generate weak password report: online_report_2022_03_29_10_58_08.xlsx


任务汇总表

弱密码样式配置表

被检出弱密码信息表

微信联系方式:13533073162

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值