Skip to content

使用python3 实现的一款简单的堡垒机程序

Notifications You must be signed in to change notification settings

ayangliayangli/blockhouse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

项目概述

blockhouse

堡垒机,一款用python实现的简单的堡垒机系统
让用户不再直接登录linux系统, linux系统的密码只针对高管以及堡垒机
用户连接之后可以随心使用任何命令,且执行的命令会存储在数据库中

基本功能

  • 【机器管理】命令行新增用户,主机,主机用户组,主机用户
  • 【指定机器登录】使用堡垒机登录指定机器,然后使用任何命令
  • 【tab自动不全】在登录了指定机器后,支持tab自动不全
  • 【日志记录】用户执行的命令,保存到数据库中
  • 【日志查询】可以查看当前用户的所有日志记录

核心技术亮点

  • paramko 执行命令

  • sqlalchemy 操作数据库

  • 利用relationship 来做连表操作

  • configparser 把连接数据库的信息写入配置文件,方便别人使用

      [db]
      # 数据库主机IP, 注意要堡垒机又登录权限 configParser 处理的文件,注释信息可以单独启一行,不会影响结果
      db_host = 192.168.126.250
    
      # 数据库主机端口
      db_port = 3306
      
      # 数据库主机的用户
      db_user = yangli
    
      # 数据库主机对应用户的密码
      db_password = yanglipass
      
      # 数据库主机上工blockhouse系统使用的数据库名字,需要自己在服务mysql服务器上添加,
      # 由于是code first, 所以不用自己建表
      db_name = blockhouse
    

修复优化

  • 【161002】增加控制台,支持交互式写入命令
  • 【161002】删除打印的调试信息
  • 【161002】优化写入日志数据库的逻辑,如果命令为空就不写入
  • 【161002】修改数据库字段,让日志的日期字段存储的是timestamp
  • 【161002】优化 日志显示格式, 用字符串形式代替timestamp
  • 【161002】优化欢迎信息
  • 【161002】优化程序的入口,为bin,
  • 【161002】优化程序控制台,输入为空的时候直接跳下一次循环
  • 【161002】优化控制台, 输入的命令不支持的时候,直接跳出帮助信息
  • 【161002】优化,登录的时候,显示欢迎信息,以及帮助信息
  • 【161002】修复: 当系统没有用户的时候,在/bin 下面有一个admin入口,可以添加一个完整的用户信息

todo

  • 计划把文件传输的功能也加上去,暂时没有需要,先暂停
  • 如果用户输入删除键,显示的信息有点不正常,这个还需要优化

依赖

  • python3
  • paramiko
  • pymysql
  • sqlalchemy

作者信息

    author: Leo Yang  杨力
    mail: yangliw3@foxmail.com
    phone: (+86)185 658 66568

About

使用python3 实现的一款简单的堡垒机程序

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages