Py学习  »  Django

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

阿布 • 8 年前 • 4503 次点击  

由于公司需要对现有服务器口令进行集中管理,借此机会写了一个密码管理的小系统,拿出来和朋友们分享一下设计的心得,由于我们所有的服务器口令都是一致的,所以系统设计也相对容易一些,不过大部分公司如果不采用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
 
4503 次点击  
文章 [ 5 ]  |  最新文章 8 年前
探索未来
Reply   •   1 楼
探索未来    8 年前

好样的,顶起。

阿布
Reply   •   2 楼
阿布    8 年前

@lostforsaya 对saltstack了解的不是很深,不能帮到你了,不好意思 :)

阿布
Reply   •   3 楼
阿布    8 年前

@hsdtsyl 谢谢 :)

hsdtsyl
Reply   •   4 楼
hsdtsyl    8 年前

楼主的博客做的不错,赞一个!

lostforsaya
Reply   •   5 楼
lostforsaya    8 年前

版主是运维开发吗? 我想用saltstack结合django写个web的发布系统,有什么建议吗