运维堡垒机(跳板机)系统 部署小记_落英缤纷

这是一位朋友开发的,可以去他的博客看看
http://laoguang.blog.51cto.com/6013350/1540793
2014-09-18

环境:系统CentOS6.4 iptables, selinux已关闭
jumpserver ,ldapserver ,mysql数据库: 192.168.2.130
测试服务器: 192.168.2.132
一、安装ldapserver
安装一些必须包
# yum install gcc gcc-c++ wget make ntpdate vim lrzsz -y
1. yum安装openldap server
# yum install -y openldap openldap-servers openldap-clients
2. 准备配置文件
# cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf
# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
3. 修改配置文件 注意:rootpw后面的密码前面最好有3个tab,配置文件严格,每行后面不能有空格
# vim /etc/openldap/slapd.conf
suffix    “dc=dianping,dc=com”               //设置目录树的后缀
rootdn    “cn=admin,dc=dianping,dc=com”     //设置管理员DN
rootpw redhat              //设置管理员密码,或机密格式, 加密格式可通过 slappasswd命令来生成,
rootpw                  {SSHA}j6OO++o76F2yhww2Cg/+Hy8oDPixx6C3
loglevel 1                                  //设置ldap日志,在argsfile下面添加
3.1 修改系统日志配置文件
# vim /etc/rsyslog.conf                     //centos5版应该是syslog.conf
local4.* /var/log/ldap.log
#service rsyslog restart
3.2 修改完配置文件后用以下命令生成新的配置文件,以后不再特殊说明
# service slapd start # 第一次需要启动一下
# rm -rf /etc/openldap/slapd.d/*
# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
# chown -R ldap:ldap /etc/openldap/slapd.d/
# service slapd restart
4. 查看启动情况
# netstat -tulnp | grep slapd
tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 48776/slapd
tcp 0 0 :::389 :::* LISTEN 48776/slapd
5. 安装migrationtools,迁移本地账户密码到ldap
为了测试,我们先在服务器上建立一个测试账号,这个账号是为了测试ldap是否成功的
# useradd guanghongwei
# echo ‘redhat’ | passwd –stdin guanghongwei
5.1 安装并修改配置文件
# yum -y install migrationtools
# cd /usr/share/migrationtools/
# vim migrate_common.ph # 71行左右
$DEFAULT_MAIL_DOMAIN = “dianping.com”;
5$DEFAULT_BASE = “dc=dianping,dc=com”;
5.2使用脚本导出ldif文件
#./migrate_base.pl > /tmp/base.ldif
#./migrate_passwd.pl /etc/passwd > /tmp/passwd.ldif
#./migrate_group.pl /etc/group > /tmp/group.ldif
5.3 导入到ldap中,会提示输入密码,密码slapd.conf配置文件中设置的那个rootpw
# ldapadd -x -W -D “cn=admin,dc=dianping,dc=com” -f /tmp/base.ldif
# ldapadd -x -W -D “cn=admin,dc=dianping,dc=com” -f /tmp/passwd.ldif
# ldapadd -x -W -D “cn=admin,dc=dianping,dc=com” -f /tmp/group.ldif
二、测试服务器安装ldap客户端
#####################
1. 安装LDAP客户端及依赖组件
# yum -y install openldap openldap-clients nss-pam-ldapd pam_ldap //centos6
# yum -y install openldap openldap-clients nss_ldap               //centos5
2. 增加BIND策略,避免LDAP无法连接时无法开机
# echo “bind_policy soft” >> /etc/openldap/ldap.conf
3. 自动创建目录设置
# echo “session required pam_mkhomedir.so skel=/etc/skel umask=0077” >> /etc/pam.d/system-auth
4. 设置LDAP启用,后面的ldapserver改为实际中的
centos6命令为:
# authconfig –savebackup=auth.bak
# authconfig –enableldap –enableldapauth –enablemkhomedir –enableforcelegacy –disablesssd –disablesssdauth –ldapserver=192.168.2.130 –ldapbasedn=”dc=dianping,dc=com” –update
centos5命令为:
# authconfig –enableldap –enableldapauth –enablemkhomedir –ldapserver=192.168.2.130 –ldapbasedn=”dc=dianping,dc=com” –-update
5. 从主上测试连接服务器,该用户是刚才添加的那个
# ssh guanghongwei@192.168.2.132 #132上没有useradd该用户哦,如果能连接上证明ldap使用ok
#####################
三、 让ldap server负责sudo管理
1. 拷贝sudo schema,centos版本不一样,可能sudo的版本不是1.8.6,其他的也可以
# cp /usr/share/doc/sudo-1.8.6p3/schema.OpenLDAP /etc/openldap/schema/sudo.schema ## 拷贝schema
2. 配置文件导入schema,切记 配置文件比较敏感,行尾不要有多余空格
# vim /etc/openldap/slapd.conf # 增加一项
include /etc/openldap/schema/sudo.schema
# rm -rf /etc/openldap/slapd.d/*
# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
# chown -R ldap:ldap /etc/openldap/slapd.d/*
# service slapd restart
3. 将sudo base导入到ldap
1) 建立数据库ldif文件,切记该数据文件每行最后也不允许有空格,并删掉注释,可以用群共享里那个
# vim sudo.ldif
dn: ou=Sudoers,dc=dianping,dc=com
objectClass: top
objectClass: organizationalUnit
ou: Sudoers
dn: cn=defaults,ou=Sudoers,dc=dianping,dc=com
objectClass: top
objectClass: sudoRole
cn: defaults
sudoOption: !visiblepw
sudoOption: always_set_home
sudoOption: env_reset
sudoOption: requiretty
dn: cn=guanghongwei,ou=Sudoers,dc=dianping,dc=com
objectClass: top
objectClass: sudoRole
cn: guanghongwei
sudoCommand: ALL
sudoHost: ALL
sudoOption: !authenticate
sudoRunAsUser: ALL
sudoUser: guanghongwei
2) 导入到ldap中,如果报错很有可能是空格的原因
1 ldapadd -x -W -D “cn=admin,dc=dianping,dc=com” -f sudo.ldif
#####################
测试服务器上面的操作:
4. 测试服务器设置,让ldap代理sudo,行尾不能有空格
# vi /etc/sudo-ldap.conf
uri ldap://192.168.2.130
Sudoers_base ou=Sudoers,dc=dianping,dc=com
# vi /etc/nsswitch.conf 增加
Sudoers: ldap files
#####################
5. 测试,用户并没在服务器的sudoer file中,如果sudo成功,证明已使用ldap的sudo
[root@localhost tmp]# ssh guanghongwei@192.168.2.132
guanghongwei@192.168.2.132’s password:
Last login: Mon Mar 10 02:27:50 2014 from 192.168.2.130
[guanghongwei@2namenode ~]$ sudo su
[root@2namenode guanghongwei]#
上面这部分其实是ldap配置的过程,如果用过的朋友应该很熟悉,再部署个phpldapadmin才算完整,不过我们先不用,下面进入主题,讲讲如何部署跳板机。
四、 部署jumpserver
1). 下载代码
# cd /opt/
如果克隆不下来去https://github.com/ibuler/jumpserver 下载代码
2. 如果是下载的,需要重命名
# mv jumpserver-master jumpserver    ## 切记最终是 /opt/jumpserver/哦
3. 下载建立数据库, 并授权
# yum -y install mysql-server
# service mysqld start
# mysql -uroot -p
# mysql> create database jumpserver charset=’utf8′; # 否则中文可能乱码
# mysql> grant all on jumpserver.* to ‘jumpserver’@’127.0.0.1’ identified by ‘redhat’;
# mysql> grant all on jumpserver.* to ‘jumpserver’@’localhost’ identified by ‘redhat’;    //加上这一句,否则后面初始化数据库时可能报错
4. 编辑配置文件
1) 修改jumpserver的配置文件, 主要是修改一下db和key,下面的不动
# vim jumpserver.conf
#coding:utf-8
[db]
host = 127.0.0.1
port = 3306
user = jumpserver         # 授权的用户
password = redhat         # 授权密码
db = jumpserver           # 数据库
[jumpserver]
log_dir = /opt/jumpserver/logs/
user_table = UserManage_user
assets_table = Assets_assets
assets_user_table = Assets_assetsuser
key = 88aaaf7ffe3c6c04   #可修改此key需要是16位
useradd_shell = /opt/jumpserver/useradd.sh
userdel_shell = /opt/jumpserver/userdel.sh
sudoadd_shell = /opt/jumpserver/sudoadd.sh
sudodel_shell = /opt/jumpserver/sudodel.sh
keygen_shell = /opt/jumpserver/genkey.sh
chgpass_shell = /opt/jumpserver/chgpass_shell.sh
2) 修改bash调用的配置文件 shell.conf
# vim shell.conf
#!/bin/bash
host=127.0.0.1
ldapassword=redhat
domain=dianping
suffix=com
#host2=172.16.2.74
#host2_port=2001
3) 添加一个admin用户
# useradd admin
# echo ‘redhat’ | passwd –stdin admin
4) 安装依赖的python库,如果有epel源可以 yum -y install python-pip,也可以源码安装参考:    http://my.oschina.net/zhangxu0512/blog/175208
# rpm -ivh epel-release-6-8.noarch.rpm
# yum install python-pip
# mkdir /etc/yum.repos.d.bak
# mv /etc/yum.repos.d/epel* /etc/yum.repos.d.bak
安装依赖的python库
# yum -y install python-devel python-crypto mysql-devel # MySQLdb也就是mysql-python依赖
# pip install django==1.6 paramikopam mysql-python pexpect pycrypto-on-pypi -i http://pypi.douban.com/simple
这里pip安装各个模块,最好单独一个个装,最后检查模块是否都安装好
测试:
# python
在python命令行输入以下命令:
>>>import django
>>>django.VERSION
(1,6,0,’final’,0)
>>>import paramiko
>>>import pam
>>>import pexpect
>>>import MySQLdb
如果都没有报错,说明安装好了。
5) 初始化库
# cd webroot/AutoSa/
# python manage.py syncdb
no
6) 测试运行
#chmod +x manage.py
# chmod +x runserver
# chmod +x ../../*.sh
# chmod 777 ../../logs
# ./runserver      #默认监听80,可以修改
7) 浏览器查看,密码是 第3步 admin的账号和密码(redhat)
五、 测试添加用户主机登录
1) 登录
账号是admin,密码是 第3部添加的那个密码
2) 添加用户, 提示添加成功,才算成功,如果不成功,请看./runserver那里的提示
密码:是指登录web和跳板机的密码(如果禁用密码登录就不能登录了),key密码是登录跳板机密钥的密码,我的想法是不允许跳板机使用密码登录,只允许使用密钥,需要修改sshd_config,另外查看用户里面的Key目前不允许admin下载
3) 添加主机
4) 授权
添加权限-添加权限
5) 退出admin,登录jery账号,可以更改各种密码,然后下载密钥
6) 将下载的密钥导入xshell或者其他shell中,输入密码
7) 使用密钥登录跳板机
8) 登录测试
# cd /opt/jumpserver
# python jumpserver.py
3 试试各种功能
9) 查看日志 /opt/jumpserver/logs中
10) 最终没确认没问题将目录下面的jumpserver.sh移动到 /etc/profile.d/中,来让登录时运行堡垒机脚本
# mv jumpserver.sh /etc/profile.d/
11) 目前web版本没有管理sudo的功能,所以需要安装phpldapadmin来管理sudo,可以控制该用户再哪些服务器上有sudo权限,可以执行哪些命令 ,
phpladpadmin 安装如下:
# yum install http* php* perl*  -y
# yum -y install httpd httpd-devel php-mysql php php-ldap
# cd /var/www/html
# tar -xzvf /usr/local/src/phpldapadmin-1.2.3.tgz
# mv phpldapadmin-1.2.3 phpldapadmin
# cd phpldapadmin/config/
# mv config.php.example config.php
# ldapsearch -x -b ” -s base ‘(objectclass=*)’ namingContexts   //检验查询
# vim config.php
$servers->newServer(‘ldap_pla’);
$servers->setValue(‘server’,’name’,’LDAP Server’);
$servers->setValue(‘server’,’host’,’127.0.0.1′);
$servers->setValue(‘server’,’port’,389);
$servers->setValue(‘server’,’base’,array(‘dc=dianping,dc=com’));
$servers->setValue(‘login’,’auth_type’,’cookie’);
$servers->setValue(‘login’,’bind_id’,’cn=admin,dc=dianping,dc=com’);
$servers->setValue(‘login’,’bind_pass’,’redhat’);
$servers->setValue(‘server’,’tls’,false);
# service httpd restart               //重启web服务
TM截图20140918181531 ldap
TM截图20140918181601 ldap
TM截图20140918181705 ldap
TM截图20140918181846 ldap
Print Friendly

匿名进行回复 取消回复

电子邮件地址不会被公开。 必填项已用*标注