更新:新版已发见 http://laoguang.blog.51cto.com/6013350/1576729php
----------------------------------------------------------node
更新:有疑问qq群 399218702python
更新:建议你们第一遍作的时候,全部的都与文档一致,因为笔者懒把全部的密码设置成redhat了,因此致使好多小伙伴部署的时候遇到问题,抱歉,笔者正在努力码代码,修改一下bug,更新一些功能,另若是有小伙伴对该项目有兴趣,能够一块儿作作,笔者水平确实有限。mysql
环境:系统CentOS6.4 iptables, selinux已关闭linux
jumpserver ldapserver : 192.168.2.130git
测试服务器: 192.168.2.132github
mysql数据库: 192.168.2.130web
1、安装ldapserversql
1. yum安装openldap servershell
1 yum install -y openldap openldap-servers openldap-clients
2. 准备配置文件
1 cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf
2 cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
3. 修改配置文件 注意:rootpw后面的密码前面最好有3个tab,配置文件严格,每行后面不能有空格
1 vim /etc/openldap/slapd.conf
2
3 1) 设置目录树的后缀
4 suffix "dc=dianping,dc=com"
5 2) 设置管理员DN
6 rootdn "cn=admin,dc=dianping,dc=com"
7 3) 设置管理员密码
8 rootpw redhat
9 或机密格式, 加密格式可经过 slappasswd命令来生成
10 rootpw {SSHA}j6OO++o76F2yhww2Cg/+Hy8oDPixx6C3
11 4) 设置ldap日志,在argsfile下面添加
12 loglevel 1
13 修改系统日志配置文件
14 vim /etc/rsyslog.conf # centos5版应该是syslog.conf
15 local4.* /var/log/ldap.log
16 service rsyslog restart
17 5) 修改完配置文件后用如下命令生成新的配置文件,之后再也不特殊说明
18 service slapd start # 第一次须要启动一下
19 rm -rf /etc/openldap/slapd.d/*
20 slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
21 chown -R ldap:ldap /etc/openldap/slapd.d/
22 service slapd restart
4. 查看启动状况
1 [root@localhost openldap]# netstat -tulnp | grep slapd
2 tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 48776/slapd
3 tcp 0 0 :::389 :::* LISTEN 48776/slapd
5. 安装migrationtools,迁移本地帐户密码到ldap
为了测试,咱们先在服务器上创建一个测试帐号,这个帐号是为了测试ldap是否成功的
1 useradd guanghongwei
2 echo 'redhat' | passwd --stdin guanghongwei
1). 安装并修改配置文件
1 yum -y install migrationtools
2 cd /usr/share/migrationtools/
3 vim migrate_common.ph # 71行左右
4 $DEFAULT_MAIL_DOMAIN = "dianping.com";
5 $DEFAULT_BASE = "dc=dianping,dc=com";
2). 使用脚本导出ldif文件
1 ./migrate_base.pl > /tmp/base.ldif
2 ./migrate_passwd.pl /etc/passwd > /tmp/passwd.ldif
3 ./migrate_group.pl /etc/group > /tmp/group.ldif
3). 导入到ldap中,会提示输入密码,密码slapd.conf配置文件中设置的那个rootpw
1 ldapadd -x -W -D "cn=admin,dc=dianping,dc=com" -f /tmp/base.ldif
2 ldapadd -x -W -D "cn=admin,dc=dianping,dc=com" -f /tmp/passwd.ldif
3 ldapadd -x -W -D "cn=admin,dc=dianping,dc=com" -f /tmp/group.ldif
2、测试服务器安装ldap客户端
1. 安装LDAP客户端及依赖组件
1 yum -y install openldap openldap-clients nss-pam-ldapd pam_ldap #centos6
2 yum -y install openldap openldap-clients nss_ldap #centos5
2. 增长BIND策略,避免LDAP没法链接时没法开机
1 echo "bind_policy soft" >> /etc/openldap/ldap.conf
3. 自动建立目录设置
1 echo "session required pam_mkhomedir.so skel=/etc/skel umask=0077" >> /etc/pam.d/system-auth
4. 设置LDAP启用,后面的ldapserver改成实际中的
1 #centos6
2 authconfig --savebackup=auth.bak
3 authconfig --enableldap --enableldapauth --enablemkhomedir --enableforcelegacy --disablesssd --disablesssdauth --ldapserver=192.168.2.130 --ldapbasedn="dc=dianping,dc=com" --update
4
5 #centos5
6 authconfig --enableldap --enableldapauth --enablemkhomedir --ldapserver=192.168.2.130 --ldapbasedn="dc=dianping,dc=com" –-update
5. 从主上测试链接服务器,该用户是刚才添加的那个
1 ssh guanghongwei@192.168.2.132 #132上没有useradd该用户哦,若是能链接上证实ldap使用ok
3、 让ldap server负责sudo管理
1. 拷贝sudo schema,centos版本不同,可能sudo的版本不是1.8.6,其余的也能够
1 cp /usr/share/doc/sudo-1.8.6p3/schema.OpenLDAP /etc/openldap/schema/sudo.schema ## 拷贝schema
2. 配置文件导入schema,切记 配置文件比较敏感,行尾不要有多余空格
1 vim /etc/openldap/slapd.conf # 增长一项一项
2 include /etc/openldap/schema/sudo.schema
3 rm -rf /etc/openldap/slapd.d/*
4 slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
5 chown -R ldap:ldap /etc/openldap/slapd.d/*
6 service slapd restart
3. 将sudo base导入到ldap
1) 创建数据库ldif文件,切记该数据文件每行最后也不容许有空格,并删掉注释,能够用群共享里那个
1 vim sudo.ldif
2
3 dn: ou=Sudoers,dc=dianping,dc=com
4 objectClass: top
5 objectClass: organizationalUnit
6 ou: Sudoers
7
8 dn: cn=defaults,ou=Sudoers,dc=dianping,dc=com
9 objectClass: top
10 objectClass: sudoRole
11 cn: defaults
12 sudoOption: !visiblepw
13 sudoOption: always_set_home
14 sudoOption: env_reset
15 sudoOption: requiretty
16
17 dn: cn=guanghongwei,ou=Sudoers,dc=dianping,dc=com ## dn, 使用时 请删除注释,并不能有空格
18 objectClass: top
19 objectClass: sudoRole
20 cn: guanghongwei ## 对应的是用户名或者组
21 sudoCommand: ALL ## 能够执行的命令
22 sudoHost: ALL ## 能够登陆的Host
23 sudoOption: !authenticate ## 是否须要输入密码
24 sudoRunAsUser: ALL ## 以哪一个用户执行
25 sudoUser: guanghongwei ## 用户或者组
2) 导入到ldap中,若是报错颇有多是空格的缘由
1 ldapadd -x -W -D "cn=admin,dc=dianping,dc=com" -f sudo.ldif
测试服务器:
4. 测试服务器设置,让ldap代理sudo,行尾不能有空格
1 vi /etc/sudo-ldap.conf
2 uri ldap://192.168.2.130
3 Sudoers_base ou=Sudoers,dc=dianping,dc=com
4 vi /etc/nsswitch.conf 增长
5 Sudoers: ldap files
5. 测试,用户并没在服务器的sudoer file中,若是sudo成功,证实已使用ldap的sudo
1 [root@localhost tmp]# ssh guanghongwei@192.168.2.132
2 guanghongwei@192.168.2.132's password:
3 Last login: Mon Mar 10 02:27:50 2014 from 192.168.2.130
4 [guanghongwei@2namenode ~]$ sudo su
5 [root@2namenode guanghongwei]#
上面这部分实际上是ldap配置的过程,若是用过的朋友应该很熟悉,再部署个phpldapadmin才算完整,不过咱们先不用,下面进入主题,讲讲如何部署跳板机 http://laoguang.blog.51cto.com/6013350/1540793
4、 部署jumpserver
1). 下载代码
1 cd /opt/
2 git clone https://github.com/ibuler/jumpserver
若是克隆不下来去https://github.com/ibuler/jumpserver 下载代码
2. 若是是下载的,须要重命名
1 mv jumpserver-master jumpserver ## 切记最终是 /opt/jumpserver/哦
3. 下载创建数据库, 并受权
1 yum -y install mysql-server
2 serivce mysqld start
3 mysql
4 mysql> create database jumpserver charset='utf8'; # 不然中文可能乱码
5 mysql> grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'redhat';
6 mysql> grant all on jumpserver.* to 'jumpserver'@'localhost' identified by 'redhat';
4. 编辑配置文件
1) 修改jumpserver的配置文件, 主要是修改一下db和key,下面的不动
1 vim jumpserver.conf
2 #coding:utf-8
3
4 [db]
5 host = 127.0.0.1
6 port = 3306
7 user = jumpserver # 受权的用户
8 password = redhat # 受权密码
9 db = jumpserver # 数据库
10
11 [jumpserver]
12 log_dir = /opt/jumpserver/logs/
13 user_table = UserManage_user
14 assets_table = Assets_assets
15 assets_user_table = Assets_assetsuser
16 key = 88aaaf7ffe3c6c04 #可修改此key须要是16位
17 useradd_shell = /opt/jumpserver/useradd.sh
18 userdel_shell = /opt/jumpserver/userdel.sh
19 sudoadd_shell = /opt/jumpserver/sudoadd.sh
20 sudodel_shell = /opt/jumpserver/sudodel.sh
21 keygen_shell = /opt/jumpserver/genkey.sh
22 chgpass_shell = /opt/jumpserver/chgpass_shell.sh
2) 修改bash调用的配置文件 shell.conf
1 vim shell.conf
2
3 #!/bin/bash
4
5 host=127.0.0.1
6 ldapassword=redhat
7 domain=dianping
8 suffix=com
9 #host2=172.16.2.74
10 #host2_port=2001
3) 添加一个admin用户
1 useradd admin
2 echo 'redhat' | passwd --stdin admin
4) 安装依赖的python库,若是有epel源能够 yum -y installl python-pip,也能够源码安装参考: http://my.oschina.net/zhangxu0512/blog/175208
1 yum -y install python-devel python-crypto mysql-devel # MySQLdb也就是mysql-python依赖
2 pip install django==1.6 paramiko pam mysql-python pexpect pycrypto-on-pypi -i http://pypi.douban.com/simple
3
5) 初始化库
1 cd webroot/AutoSa/
2 python manage.py syncdb
3 no
6) 测试运行
1 chmod +x manage.py
2 chmod +x runserver
3 chmod +x ../../*.sh
4 chmod 777 ../../logs
5 ./runserver #默认监听80,能够修改
6
7 浏览器查看,密码是 第3步 admin的帐号和密码
5、 测试添加用户主机登陆
1) 登陆
帐号是admin,密码是 第3部添加的那个密码
2) 添加用户, 提示添加成功,才算成功,若是不成功,请看./runserver那里的提示
密码:是指登陆web和跳板机的密码(若是禁用密码登陆就不能登陆了),key密码是登陆跳板机密钥的密码,个人想法是不容许跳板机使用密码登陆,只容许使用密钥,须要修改sshd_config,另外查看用户里面的Key目前不容许admin下载
3) 添加主机
4) 受权
添加权限-添加权限
5) 退出admin,登陆jery帐号,能够更改各类密码,而后下载密钥
6) 将下载的密钥导入xshell或者其余shell中,输入密码
7) 使用密钥登陆跳板机
8) 登陆测试
1 cd /opt/jumpserver
2 python jumpserver.py
3 试试各类功能
9) 查看日志 /opt/jumpserver/logs中
10) 最终没确认没问题将目录下面的jumpserver.sh移动到 /etc/profile.d/中,来让登陆时运行堡垒机脚本
1 mv jumpserver.sh /etc/profile.d/
11) 目前web版本没有管理sudo的功能,因此须要安装phpldapadmin来管理sudo,能够控制该用户再哪些服务器上有sudo权限,能够执行哪些命令 ,phpldapadmin安装参考 http://zhumeng8337797.blog.163.com/blog/static/100768914201010994913503/
题后:目前版本有些bug, 不建议生产中使用,虽然笔者已经在生产中使用了,由于须要考虑ldap的主备,jumpserver的主备,若是能理解原理,能够对代码进行改进,并应用到生产中,
其实部署ldap占用了太多时间,有兴趣的朋友能够试试,未来打算写个一键脚本,有问题能够联系我 ibuler@qq.com 有疑问能够加群,见最前面!