【分享】开源跳板机Jumpserver

相信各位对堡垒机(跳板机)不陌生,为了保证服务器安全,前面加个堡垒机,所有ssh连接都通过堡垒机来完成,堡垒机也需要有 身份认证,授权,访问控制,审计等功能,笔者用Python基本实现了上述功能。

架构:

J1

后端主要技术是LDAP,配置了LDAP集中认证服务器, 所有服务器的认证都是由ldap完成的,我的做法是每个用户一个密码,把密码加密放到了数据库中,当用户输入ip从跳板机登陆服务器的时候,跳板机系统取 出密码,并解密,通过pexpect模块将密码发送过去,来完成登录的。

登录界面和方法

用户登录跳板机,用的是秘钥认证,登录跳板机后会自动执行跳板机的系统

J2

输入完整IP或者部分IP可以完成登录,如果输入的部分ip匹配的ip不是唯一,会有提示,没有权限的会提示没有权限

J3

J4

输入P/p可以查看自己拥有权限的服务器ip

J5

输入E/E可以在几台服务器上执行同样的命令,IP直接以逗号分隔

J6

日志记录

日志记录用的是pexpect自带的日志记录,记录的日志既保存了命令又保存了命令的输出,也不小心讲发送的密码记录(不满意),pexpect模 块处理有些难做,我的想法是将日志每天再处理一遍,将密码等去掉,日志保存在logs目录下面,文件名是 ip_日期_用户名 ps:用的chinaren登录的,提示窗口却是baidutest,这是由于我个人原因导致的。

对该项目感兴趣的朋友可以通过以下链接进行下载:

https://github.com/ibuler/jumpserver

以下是配置手册:

测试环境

Centos6.5 mini , iptables, selinux关闭

jumpserver: 192.168.20.130

测试机testserver: 192.168.20.131

. 部署ldapserver

1.1 安装ldapserver

1.2 准备配置文件

1.3 修改配置文件

1.4 修改系统日志配置文件

1.5 启动slapd, 查看启动情况

1.6 导入ldif数据库框架和测试用户,可以使用migrationtools导出框架,也可以用我导出好的. 

. testserver部署ldapclient

CentOS6设置

2.1 安装LDAP客户端

2.2 设置自动创建目录

2.3 备份原来authconfig,然后设置使用LDAP认证

CentOS5设置

2.1 安装LDAP客户端

2.2 设置自动创建目录

2.3 设置使用LDAP认证

2.4 从jumpserver连接testuser测试# ssh testuser@192.168.20.131  # 密码是testuser123 如果连接成功则继续

生产中部署注意建立灾备账户这里就不再说明

. LDAP负责sudo

3.1 拷贝sudo schema,centos版本不一样,可能sudo的版本不是1.8.6,其他的也可以

3.2 修改文件导入schema# vim /etc/openldap/slapd.conf   include         /etc/openldap/schema/sudo.schema

3.3 重新生成配置文件,重启slapd

3.4 导入sudo.ldif到ldapserver

# ldapadd -x -W -D “cn=admin,dc=jumpserver,dc=org” -f sudo.ldif  #说明:将sudo.ldif中的dc=jumpserver,dc=org换作你的baseDN

3.5 testserver设置sudo使用ldap

 说明: centos6上sudo1.7.4p5的使用的ldap配置文件是 /etc/sudoldap.conf,sudo版本不同使用的配置文件可能也有所不同,sudo V | grep ‘ldap.conf’ 查看

CentOS6

CentOS5

3.6 测试sudo

. 部署jumpserver

4.1 安装mysql数据库,创建库

4.2 下载最新Jumpserver项目

4.3 安装依赖模块

4.5 建立logs目录并修改权限

4.6 django sync db 到数据库

4.7 测试运行

4.8 初始化jumpserver浏览器打开 http://192.168.1.209/install

显示安装成功测继续

. 安装node.js

为了实现实时监控,使用了node.js来完成websocket

5.1 yum安装node.js 

5.2 测试启动websocket 

# node index.js

. 使用jumpserver

6.1 登陆 账号密码: admin admin

6.2 新建部门

6.3 新建用户

6.4 新建IDC

6.5 添加主机

6.6 建立用户组

6.7 建立主机组

6.8 将主机组授权给用户组

6.9 授权sudo

6.10 新建部门管理员

6.11 授权主机给部门

6.12 部门管理员登陆

6.13 部门管理员添加用户和授权

6.14 查看监控

6.15 查看统计

6.16 普通用户登录

. 收尾

7.1 修改sshd配置,禁止密码登录

7.2 让用户登录jumpserver自动运行系统

7.3 正常运行jumpserver系统

. 生产注意情况

8.1 每台服务器最好建立灾备用户,以防由于网络等情况连接不上ldap服务器导致影响维护

8.2 ldap server建立主从或者镜像, 这部分内容已超出本话题 客户端指定时需要写上两台的地址

8.3 数据库备份或主从

8.4 nginx + uwsgi + django 运行,上面的server.sh是开发模式,只能单并发

本次更新Log

— 登录脚本 —

1.1 使用paramiko原生ssh协议登录后端主机(原来版本使用pexpect模拟登录)

1.2 新增使用别名备注登录

1.3 新增主机分组查看,使用更方便

1.4 多线程批量执行命令

1.5 优化登录脚本

— web管理 —

1.6 Web界面更加美观漂亮

1.7 增加部门管理员负责管理本部门成员

1.8 增加仪表盘统计信息

1.9 增加部门, 用户组, 主机组

1.10 用户信息,主机信息更加详细

1.11 主机登录方式增加登录方式 map,用于登录不支持ldap的主机

1.12 主机授权,sudo授权改为组组之间授权

1.13 增加主机批量修改,批量添加

1.14 添加用户自动生成随机密码,然后自动发送邮件

1.15 添加各种搜索

1.16 增加普通用户web页面的授权申请

1.17 审计界面更加友好

1.18 主机添加过滤搜索功能

1.19 增加用户头像

1.20 上传批量上传

1.21 增加部门管理员页面

1.22 普通用户页面内容更加丰富

二. 截图

2.1 登陆页面

登录

2.2 管理员主页

主页

主页2

 

2.3 查看用户

查看用户

2.4 查看资产

查看资产

 

2.5 监控页面

监控页面

 

2.6 命令统计

查看统计

 

2.7 普通用户主页

普通用户主页

 

2.8 普通用户个人信息

个人信息

 

2.9文件上传

文件上传

2.9 跳转界面

wKioL1U2fKDCxAdBAAGDDTbuT90033.jpg

[via@laoguang]

p.s:现在给91RI投稿还送BUGSCAN的邀请码呢,数量有限,速速来稿吧。(*^__^*)