heavensend 0b5cc16e32 更新 'pyproject/SSHManager/README.md' 6 lat temu
..
local_generater 88f7ca1e23 更新 'pyproject/SSHManager/local_generater/word_generater.py' 6 lat temu
passwd_changer 0c1c82e67d first commit in gogs. 6 lat temu
README.md 0b5cc16e32 更新 'pyproject/SSHManager/README.md' 6 lat temu
__init__.py 0c1c82e67d first commit in gogs. 6 lat temu

README.md

Linux服务器密码定时更改程序 Agent(Python 2.x)

  • 部署在服务器端,进程常驻,建议使用supervisord来守护,定时更新服务器ssh登陆密码(默认为5分钟)
  • 程序需要用到一个redis和一个mysql实例
  • 配置文件config.py指定mysql和redis和用户信息,字符串需要通过local_generater/word_generater.py加密生成
  • 日志输出在logging.conf中配置
  • 更新过程中,写入数据或更新密码失败,不会影响服务器正常登陆,客户端可以正常申请到正确的密码

1. 安装

依赖模块

pip install redis  MySQLdb 

2. 配置

日志

[handler_rotateFileHandler]
class=handlers.RotatingFileHandler
level=DEBUG
formatter=simpleFormatter
args=('securitypw.log', 'a', 50*1024*1024, 6)
  • 在logging.py中找到该段落。args指定日志名称,写入方式和轮转周期

密码修改间隔时间

token_unix_time = hashlib.md5(str(int(self.t) / 300)).hexdigest()[10:]
  • aumain.py模块中,第47行tokengenerate函数中str(int(self.t) / 300,修改300为需要的秒数

配置redis、mysql和用户名

class Config():
    #database setting
    dbhost = '678h0MTkyLjE2OC41LjnTjBX8ugEwNQ'
    dbport = 'WRed4MzMwNg'
    dbuser = 'qCgtpZGVhbg'
    dbpasswd = 'jcwGKMTIzNDU2'
    dbname = 'yU4LbYXV0aGNlbneWYjqFvQRlcg'

    #redis setting
    redishost = 'eZroIMTkyLjE2OC4xvEWFh7azLjgy'
    redisport = 'MRci8NjM3OQ'
    redisdb=0
    
    #users
    users = [ 'mYPeZZG91eXVedTrv2ONvcHM',
                 ]

初始化数据库

CREATE TABLE `token_info` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `host` varchar(15) NOT NULL,
  `time` varchar(45) NOT NULL,
  `rd_list` varchar(100) NOT NULL,
  PRIMARY KEY (`id`,`host`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

  • config.py模块中,参数均需由local_generater/word_generater.py加密生成,加密模块这里只提供简单的生成和解释部分,一般需要整合到自有的管理平台中
  • 在local_generater/word_generater.py中,最后注释了两行打印语句,其中encodestr函数为加密,decodestr函数为解密
  • config.py模块中,users可以指定多个,可以实现多用户的密码定时修改

3. 运行

  • 配置完成后,后台执行DyAgent.py即可
  • 通过日志输出或检查数据是否正常写入来确认是否工作正常

4. 补充

  • 建议通过ansible,fabric等工具批量分发,一个集群内一般配置文件可以做到统一
  • 如果集群内配置不一致,可以考虑用puppet或saltstack来管理
  • 当前在申请入口上完成度不高,主要是因为大家一般都有自己的管理平台,这一块一般都整合到CMDB中了,不好放出来,我考虑做一个简单的web入口,方便大家拿去整合
  • 联系QQ:408963040