社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Django

【分享】Django+Bootstrap---Linux主机密码集中管理系统V1.0

阿布 • 8 年前 • 4524 次点击  

由于公司需要对现有服务器口令进行集中管理,借此机会写了一个密码管理的小系统,拿出来和朋友们分享一下设计的心得,由于我们所有的服务器口令都是一致的,所以系统设计也相对容易一些,不过大部分公司如果不采用key信任做登陆,而采用口令方式登陆的话,大多每台主机的口令都是不一样的,而这个系统的设计是所有主机的口令都是一致的,但是最终分享的目的不是推广系统的使用,而是在这里能和大家一起讨论一下设计的思路,以及系统不完善的地方。

下面说一下为什么要做这个系统,那么从以下几个方面来总结一下。

1、随着部门服务器越来越多,口令管理面临着很多问题,例如服务器分配给其他部门使用,分配出去的机器口令往往需要修改成临时口令,但是服务器归还时,可能由于忘记修改回原密码,最终就会导致需要很多沟通确认,如果服务器在重启后,能够自动同步获取服务器配置的最新口令,那么这种问题就能够避免。

2、密码修改更为便捷,只需要在服务端配置好用户口令,客户端只需要执行一条命令就可以完成口令同步,目前的做法是采用puppet自动同步修改任务,但随着系统数量的增加,大多数主机的直接结果不能确认,甚至会有漏执行的系统。

介绍完了系统背景后,主要来说明一下程序的设计逻辑,下面是系统的流程结构:

enter image description here 1、系统管理员在服务端输入明文口令,系统根据前端JS的限制,可以限制口令位数、复杂度等。

2、系统获得明文口令后调用加密算法,将最终加密后的数据存入数据库,此时前台显示的口令均为密文。

3、管理员如果需要再次获取明文口令,那么只需要执行解密程序,即可获得明文口令,这里的加密算法采用了自定义key+ASE及base64的双层加密,后面会介绍到。

4、客户端通过Http协议的POST方法来获得服务端存储的密文口令,成功获取后会调用本地的解密方法进行解密,最终将解密的明文口令交给Linux系统命令,完成口令修改。

在Http通讯时,服务端需要验证客户端提交的认证口令,如果失败则拒绝,以此来提高服务端的安全性,否则任何客户端就可以随意来获取数据了。程序的主要流程基本就是这样,系统后台采用Django实现,前台为bootstrap框架模板,其实这样的一个简单的webserver是没有必要用django来做的,但是考虑到后续还会扩展更多其他的系统功能,就采用这套方案,下面详细介绍一下系统功能使用。

1、登录界面,这里输入Django后台配置的用户及口令即可登陆系统。

enter image description here

2、登陆系统后,主界面列表即显示了当前数据库中存在的系统用户,口令均为密文显示,如需获取明文口令,需要执行系统脚本来进行解密。

enter image description here

3、更新和添加用户都非常简单,只需要选中用户,即可更新该用户口令或是删除该用户,密码复杂度限制都是靠前端js实现的,感兴趣的朋友可以看一下index.html中的js片段。

4、下面是客户端的下载页,这里介绍了客户端的命令功能,以及下载地址,大家可以根据自己的服务器地址配置,在这里说明一下为什么是64位,因为在生产系统上,我这里把python的运行环境集中编译到了一个文件里,这样做的好处是不会因为python环境不统一导致运行异常。

enter image description here

整个系统操作基本就介绍完了,程序源码和客户端代码已经发布到博客了,感兴趣的朋友可以参考下载 http://www.abuve.com/article/8

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/1165
 
4524 次点击  
文章 [ 5 ]  |  最新文章 8 年前