当前位置:首页 期刊杂志

某精细化系统数据库帐号密码自动快速修改工具实现

时间:2024-06-01

吕荣峰 陈军

(中国联合网络通信有限公司重庆市分公司信息安全部,重庆 400042)

0 引言

在互联网中,黑客为获取非法利益,采用自动化攻击和渗透工具[1],攻击数据库以窃取重要信息[2]、篡改或破坏其中数据。现实威胁需要加强数据库网络安全防护[3],而数据库账号的密码安全是数据库安全的重要基础[4]。与主机帐号密码修改[5]不同,数据库账号密码绝大部分工作是将这些账号相关联的业务进程配置文件中的老密码替换成新密码,如果替换不全或出现错误,将会对系统业务造成影响,严重时将直接导致业务中断。

某精细化系统有4台数据库服务器,有2个oracle数据库,3个实例、1个mysql数据库;14台包含精细化应用、数据接口、数据处理、用户数据统计、导航门户、短彩信发送等业务应用服务器,10台数据采集和预处理服务器。数据库密码修改步骤文件达16页,需要修改的业务进程配置文件很多,配置文件中需要替换的地方最多的有8处。且业务进程配置文件中保存的是密码的密文;配置文件修改前首先要将密码加密为密文,然后再使用新密码的密文替换老密码的密文;此外,部分配置文件保存的是“账号+密码”组合再加密的密文。手工修改配置文件步骤多且并不一致,工作量很大,也容易出错。

根据其它业务系统数据库帐号密码修改的经验估计,该系统数据库帐号密码手工修改至少需要16小时,实施难度很大。而按照网络安全要求,系统数据库账号的密码每90天至少修改一次。手工修改密码基本不可能,必须开发快速修改工具(以下简称工具)来完成该精细化系统数据库帐号密码修改和业务服务器进程配置文件修改、进程重启相关工作。

1 工具实现方法和流程

1.1 工具实现方法

工具在客户端以Windows操作系统和SecureCRT为运行环境,使用bat、vbs和SecureCRT script语言和相关正则表达式[6]编写脚本代码;自动完成参数读取、分解、赋值、设备登录、接收服务器反馈,发送各种linux操作系统命令和数据库帐号密码修改命令,实现客户端操作的自动化。在服务器端,工具自动接收客户端命令、调用shell脚本程序并完成环境变量设置、帐号切换、数据库帐号密码修改、工作目录切换、密码字符串替换、业务进程重启以完成数据库帐号密码修改、业务服务器相关配置文件修改、业务进程重启等工作,从而实现服务器端的自动化。密码修改整个过程的时间基本取决于客户端和服务器端代码处理时间、代码设置的等待时间和数据的传输时间,从而达到减少密码修改时间、降低密码修改劳动强度和难度的目的。为监控密码修改过程,工具可以进行全过程日志记录。

1.2 工具综合流程

工具的综合流程如下图1所示:工具首先完成环境设置、时间变量设置、正则表达式设置等初始化,然后读取配置文件的各个设备登陆密码、超级账号密码、各个数据库新老密码等参数并完成参数的分解并去除前后空格,将这些参数赋值到各个主程序变量。

为保证参数的正确,工具在开始执行数据库密码修改之前以弹窗的形式显示各个参数以供确认,如果参数有问题,可以终止密码修改进程。

工具首先判断数据库新密码和老密码是否有空值,如有空值,就警告新老密码中有空值并终止工具的执行。如无空值,工具将自动使用指定设备的账号和密码进行登陆,开启日志记录功能以记录密码修改整个过程。随后切换到数据库账号环境下修改数据库账号的密码:oracle数据库修改sys、system和业务账号密码,mysql修改root和业务账号密码。

完成数据库帐号密码修改后,工具弹出是否进行相关业务服务器配置文件修改的弹窗,如果数据库密码修改有问题,点击“no”按钮终止工具运行;否则,点击“yes”按钮,开始业务服务器配置文件密码字符串替换流程。完成替换后,对业务服务器的进程进行重启以重置业务服务器和数据库的链接,使业务服务器相关进程采用新密码连接数据库,随后检查指定业务账号的业务进程和业务服务器和数据库的链接情况。

在工具运行终端,使用函数调用的方式通过Secure CRT和业务服务器进行自动交互,完成业务进程配置文件备份、设备登录、环境变量设置、配置文件修改shell脚本调用及执行、业务进程检查、业务服务器和数据库服务器链接检查等工作;在服务器端,通过shell脚本完成业务进程配置文件密码字符串替换、替换效果检查和业务进程重启。

在工具中,设置帐号密码修改的参数确认、配置文件开始修改确认、关键参数空值检查,服务器IP显示,防止参数设置错误带来的不良后果,保证了工具运行的安全性和可靠性。

1.3 业务服务器配置文件修改流程

业务服务器配置修改流程如图2所示:函数首先提示本函数用于完成那些IP地址和那个数据库账号的密码字符串的替换。然后完成运行环境设置、变量设置、实时时间数据变量获取、常数设置等初始化。初始化完成后,函数自动读取工具的配置文件相关行,完成业务服务器密码字符串修改所需要的各个设备登陆账号与密码、超级账号密码、各个数据库新老密码的读取,参数的分解与变量赋值,并去除各个变量的前后空格。

图1 工具综合流程Fig.1 Tool integration process

图2 业务服务器配置文件修改流程图Fig.2 Business server configuration file modification flowchart

图3 业务服务器配置文件密码字符串替换shell脚本流程图Fig.3 Business server configuration file password string replacement shell script flowchart

函数在开始替换业务服务器配置文件密码字符串前,判断数据库新密码和老密码是否存在空值,如存在空值,函数将用弹窗警告数据库新老密码中有空值并终止函数的执行。如果无空值,函数将自动使用当前设备的账号和密码登陆该设备,开启日志记录以全过程记录业务进程配置文件密码字符串替换。随后切换到指定业务账号环境下,设置环境变量、把工作目录切换到进行密码字符串替换的配置文件目录下、备份配置文件并给备份文件名称加上年月日时分字符串。这些工作完成后,切换到完成配置文件密码字符串替换shell脚本所在的目录,然后将指定数据库账号的新老密码字符串作为实参赋予shell脚本,执行脚本以完成密码字符串的替换、业务进程重启工作。此后函数向服务器发送指令,查看业务服务器指定业务账号的进程情况以及服务器与数据库实时链接情况。

1.4 配置文件密码密文替换shell脚本流程

业务服务器配置文件密码密文替换shell脚本流程如图3所示;首先显示接收参数及相关初始化;然后将工作目录切换到字符串加密程序所在的目录,再次显示指定数据库账号的新密码,加密新密码,将其密文作为环境变量输出。加密老密码,将其密文作为环境变量输出。将工作目录依次切换到需要替换密码密文的业务进程配置文件的目录下,使用正则表达式匹配配置文件中需要替换得密文行的关键字、使用新密码密文精确替换老密码密文,显示替换后的效果。在此过程中,若配置文件需要对“帐号+密码”组合进行加密密文的替换,shell脚本程序发送的实参为“账号+密码”,shell脚本程序以此进行相关处理。最后是重启业务进程,使业务进程使用新密码连接指定数据库实例。

简单的业务进程重启,是在启停业务进程程序所在的目录下,执行重启业务进程的程序。而针对比较难的业务进程重启,编写业务进程重启脚本。脚本首先是初始化,然后将工作目录切换到业务进程启动目录,先执行业务进程停止命令,然后判定指定账号是否还有进程存在,如果没有,就执行进程启动命令;如果还有指定账号的进程,就找出这些进程号使用kill-9强行杀除这些进程,等待2s后再执行进程启动命令。

2 工具实际应用效果

连续10多次成功使用工具完成某精细化系统数据库帐号密码修改、业务服务器配置文件修改、业务进程重启及进程检查、业务服务器和数据库链接检查等整个数据库帐号密码修改过程、所花时间均在35分钟以内,不到预估时间的二十分之一。工具运行期间、仅需人工进行必要的确认并监控工具的执行。从而解决了手工修改密码存在的效率低、时间长、操作繁琐、劳动强度高、精力损耗大、容易出现配置文件错改或漏改等问题;大大降低数据库帐号密码修改实施难度,从而可以保证密数据库帐号的密码强度及其修改的频度。

使用和工具相同方法开发的某web业务系统数据库账号密码修改工具,使该web系统数据库密码修改时间从150多分钟下降到不到15分钟,证明了该工具的相关方法在实际应用中具有较好的普适性。

3 结语

工具通过secureCRT和linux设备自动执行各种交互,自动完成数据库帐号密码修改、业务服务器配置文件修改、业务进程重启等工作。在实际的应用中,工具体现出了很高的效率,大大缩短了密码修改的时间,避免了手工操作繁琐、精力损耗大、容易出现配置文件漏改和改错等问题,大大降低了数据库密码修改的实施难度;在实际应用中体现了非常好的实用价值。工具开发方法在其它系统的成功实现和应用说明了该方法的普适性,为安全和自动化运维[7]提供一个良好的方法模版。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!