环境: centos6.5 mini安装 iptables selinux已经关闭

jumpserver: 192.168.1.209

testserver: 192.168.1.210

一. 部署ldapserver

1.1 安装ldapserver

# yum install -y openldap openldap-servers openldap-clients openldap-devel

1.2 准备配置文件

# cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf

## 该文件是slapd的配置文件

# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

## 数据库的配置文件

1.3 修改配置文件# vim /etc/openldap/slapd.conf  ...  loglevel        1  ...  suffix          "dc=yolu,dc=com"  rootdn          "cn=admin,dc=yolu,dc=com"  rootpw          secret234  ...  #说明:  loglevel:设置日志级别  suffix:其实就是BaseDN  rootdn: 超级管理员的dn  rootpw: 超级管理员的密码

1.4 修改系统日志配置文件

# vim /etc/rsyslog.conf  local4.*          /var/log/ldap.log   # local7.*下添加一行

# service rsyslog restart

1.5 启动slapd, 查看启动情况

# 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# netstat -tulnp | grep slapd  #说明:第一次启动生会初始化ldap数据库,在/var/lib/ldap中,如果想删除ldap数据库就删除该目录,保留DB_CONFIG配置文件。新版的ldap使用的是/etc/openldap/slapd.d 下的配置文件,删除原来的配置文件,slaptest是重新生成新的配置文件

1.6 导入ldif数据库框架和测试用户,可以使用migrationtools导出框架,也可以用我导出好的. base.ldif,group.ldif,passwd.ldif 将其中的dc=yolu,dc=com替换成你的baseDN,然后导入,密码是rootpw设置的密码

# ldapadd -x -W -D "cn=admin,dc=yolu,dc=com" -f base.ldif

# ldapadd -x -W -D "cn=admin,dc=yolu,dc=com" -f group.ldif

# ldapadd -x -W -D "cn=admin,dc=yolu,dc=com" -f passwd.ldif  #说明:测试用户是testuser 密码是testuser123

二. testserver部署ldapclient

--- CentOS6设置 ---

2.1 安装LDAP客户端

# yum -y install openldap openldap-clients nss-pam-ldapd pam_ldap

2.2 设置自动创建目录

# echo "session required pam_mkhomedir.so skel=/etc/skel umask=0077" >> /etc/pam.d/system-auth

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

# authconfig --savebackup=auth.bak

# authconfig --enableldap --enableldapauth --enablemkhomedir --enableforcelegacy --disablesssd --disablesssdauth --ldapserver=192.168.1.209 --ldapbasedn="dc=yolu,dc=com" --update

--- CentOS5设置 ---

2.1 安装LDAP客户端

# yum -y install openldap openldap-clients nss_ldap

2.2 设置自动创建目录

# echo "session required pam_mkhomedir.so skel=/etc/skel umask=0077" >> /etc/pam.d/system-auth

2.3 设置使用LDAP认证

# authconfig --enableldap --enableldapauth --enablemkhomedir --ldapserver=192.168.1.209 --ldapbasedn="dc=yolu,dc=com" --update

2.4 从jumpserver连接testuser测试

# ssh testuser@192.168.1.210  # 密码是testuser123 如果连接成功则继续

三. LDAP负责sudo

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

# cp /usr/share/doc/sudo-1.8.6p3/schema.OpenLDAP /etc/openldap/schema/sudo.schema

3.2 修改文件导入schema

# vim /etc/openldap/slapd.conf 

include         /etc/openldap/schema/sudo.schema

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

# 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.4 导入sudo.ldif到ldapserver

# ldapadd -x -W -D "cn=admin,dc=yolu,dc=com" -f sudo.ldif

#说明:将sudo.ldif中的dc=yolu,dc=com换作你的baseDN

3.5 testserver设置sudo使用ldap

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

# sudo -V | grep 'ldap.conf'  

...

ldap.conf path: /etc/sudo-ldap.conf  # 已知有的版本是 /etc/nslcd.conf,下面应该做出对应改变

...

--- CentOS6 ---

# echo -e "uri ldap://192.168.1.209\nSudoers_base ou=Sudoers,dc=yolu,dc=com" > /etc/sudo-ldap.conf

# echo "Sudoers: files ldap" >>  /etc/nsswitch.conf

--- CentOS5 ---

# echo "Sudoers_base ou=Sudoers,dc=yolu,dc=com" >> /etc/ldap.conf

# echo "Sudoers: files ldap" >> /etc/nsswitch.conf

3.6 测试sudo

# ssh testuser@192.168.1.210

# sudo su  #说明:密码是testuser123,sudo su如果不提示输入密码,则成功

四. 部署jumpserver

4.1 安装mysql数据库,创建库

# yum -y install mysql mysql-server mysql-devel

# service mysqld start

# mysql

mysql> create database jumpserver charset='utf8';

mysql> grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'mysql234';

mysql> grant all on jumpserver.* to 'jumpserver'@'localhost' identified by 'mysql234';

4.2 下载最新Jumpserver项目

# yum -y install git# cd /opt

# git clone https://github.com/ibuler/jumpserver.git

# cd jumpserver

4.3 安装Python2.7.6

# yum -y install xz gcc automake autoconf ncurses-devel patch

# tar xvf Python-2.7.6.tar.xz && cd Python-2.7.6

# ./configure && make && make install

# mv /usr/bin/python /usr/bin/python.bak

# ln -s /usr/local/bin/python /usr/bin/python

# vim /usr/bin/yum  #!/usr/bin/python2.6  #说明:yum使用python2.6,否则报错

4.4 安装setuptools 和 pip

#  tar xvf pypa-setuptools-8e8c50925f18.tar.gz  && cd pypa-setuptools-8e8c50925f18 && python setup.py install

# tar xvf pip-1.5.6.tar.gz && cd pip-1.5.6 && python setup.py install

4.5 安装依赖库

# cd /opt/jumpserver/scripts

# pip2.7 install -r requirements.txt -i http://pypi.douban.com/simple

#说明:如果报错请手动安装每个模块

4.6 修改Jumpserver配置文件 # cd ..

# vim jumpserver.conf    [db]    host = 127.0.0.1    port = 3306    user = jumpserver    password = mysql234    db = jumpserver    [jumpserver]    key = 88aaaf7ffe3c6c04    ldap_host = ldap://127.0.0.1:389    ldap_base_dn = dc=yolu,dc=com    admin_cn = cn=admin,dc=yolu,dc=com    admin_pass = secret234    web_socket_host = 192.168.1.209:3000    # 说明:    # db里是数据库的设置,相信你看一眼就知道了    # jumpserver中    # key是加密时需要的字符,可以更改但需要是16位    # ldap_host,ldap_base_dn,admin_cn,admin_pass都是与上面ldapserver设置的一致

# admin_cn 对应ldap中的rootdn,必须一致

# admin_pass是ldap的密码,对应ldap.conf中的 rootpw ,必须使用明文

# web_socket_host是websocket的url,把ip改为jumpserver的IP地址,需要修改,3000是默认端口

4.7 修改logs目录权限

# chmod 777 logs

4.8 django sync db 到数据库

# cd /opt/jumpserver/webroot/AutoSa

# python manage.py syncdb  Would you like to create one now? (yes/no): no

4.9 测试运行

# python manage.py runserver 0.0.0.0:80

# python log_handler.py  #说明:两个窗口分别打开

4.10 初始化jumpserver浏览器打开

http://192.168.1.209/install

显示安装成功测继续

博客地址:http://laoguang.blog.51cto.com/

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

5.1 下载node.js   官方地址:http://www.nodejs.org/download/   或   使用我提供的源码   或   使用我编译好的rpm,适用于centos6 x86_64,跳过编译安装和设置path

5.2 编译安装

# ./configure --prefix=/opt/node/ && make && make install

5.3 设置path

# vim /etc/profile.d/node.sh  export PATH=$PATH:/opt/node/bin

# source /etc/profile.d/node.sh

5.4 安装项目依赖module,或使用下载好的

# cd /opt/jumpserver/webroot/AutoSa/websocket

# npm install        # 可能下载需要几分钟,可以更省时  #说明:使用已经下载好的,将node_modules.tar.bz2 移动到/opt/jumpserver/webroot/AutoSa/websocket  # tar xvf node_modules.tar.bz2

5.5 测试启动websocket

# node index.js  #说明:新窗口运行,如果开启了iptables确保放行3000端口

------------------------------编译nodejs报错-----------------------------

/src/node-v0.10.33/out/Release/openssl-cli] error 69
make[1]: Leaving directory `/home/wenba/software/src/node-v0.10.33/out'
make: *** [node] error 2

解决方案:

在安装Python2.7之前:

yum install gcc-c++

yum install bzip2*

编译安装python

编译安装后编译安装 zlib模块

cd Python-2.7.3/Modules/zlib  
    ./configure ;  
    make;  
    make install

------------------------------------------------------------------------

六. 测试jumpserver

截图见:http://laoguang.blog.51cto.com/6013350/1576502

6.1  登录
账号密码都是admin

6.2 添加属组

6.3 添加用户

6.4 添加IDC

6.5 添加主机

6.6 添加权限

6.7 查看权限

6.8 测试登录

6.9 下载key

6.10 导入key并登录xshell导入  Tools --> User Key Manager --> import --> 输入密码

6.11 登录

6.12 测试登录测试主机

# python /opt/jumpserver/jumpserver.py
 #说明:p/P显示有权限主机ip E/e多主机执行命令 Q/q退出 输入ip或部分ip登录

6.13 显示有权限主机

6.14 多主机执行命令,逗号分隔     # 这里就一台主机

6.15 登录

6.16 查看sudo

6.17 修改sudo

6.18 测试sudo

6.19 测试监控
 刷新,

6.20 结束session

6.21 查看统计日志
 刷新,

6.22 用户测试上传下载

6.23 修改登录密码

七. 收尾 如果一切没问题后,开始收尾

7.1 修改sshd配置,禁止密码登录# vim /etc/sshd/sshd_config
 ...
 PasswordAuthentication no
 ...

# service sshd restart

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

# cd /opt/jumpserver/scripts

# vim jumpserver.sh
 ...
 if [ $USER == 'guanghongwei' ];then   # 修改特殊用户,结束后不退出
 ...

# cp jumpserver.sh /etc/profile.d/

7.3 正常运行jumpserver系统

# cd /opt/jumpserver/

# ./runserver#说明:如果想结束系统# ./stopserver

free 堡垒机的更多相关文章

  1. Python之路第一课Day9--随堂笔记之一(堡垒机实例以及数据库操作)未完待续....

    一.堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: ...

  2. Python之路:堡垒机实例

    堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: 1 ...

  3. python远程连接paramiko 模块和堡垒机实现

    paramiko使用 paramiko模块是基于python实现了SSH2远程安全连接,支持认证和密钥方式,可以实现远程连接.命令执行.文件传输.中间SSH代理功能 安装 pip install pa ...

  4. python学习笔记-(十三)堡垒机

    1.课前准备: 本次学习堡垒机相关知识:之前,需要安装Python的paramiko模块,该模块基于SSH用于连接远程服务器并执行相关操作. 前提: python3.5程序安装到默认路径下并已添加pa ...

  5. Python开发【第九章】:堡垒机实例

    一.堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块基于SSH用于连接远程服务器并执行相关操作 模块安装 C:\Program Files\Python 3.5\Scri ...

  6. 利用paramiko模块实现堡垒机+审计功能

    paramiko模块是一个远程连接服务器,全真模拟ssh2协议的python模块,借助paramiko源码包中的demos目录下:demo.py和interactive.py两个模块实现简单的堡垒机+ ...

  7. Python之路-python(堡垒机)

    运维堡垒机开发 前景介绍 到目前为止,很多公司对堡垒机依然不太感冒,其实是没有充分认识到堡垒机在IT管理中的重要作用的,很多人觉得,堡垒机就是跳板机,其实这个认识是不全面的,跳板功能只是堡垒机所具备的 ...

  8. python之实现基于paramiko和mysql数据库的堡垒机

    一.堡垒机结构 堡垒机执行流程: 管理员为用户在服务器上创建账号(将公钥放置服务器,或者使用用户名密码) 用户登陆堡垒机,输入堡垒机用户名密码,现实当前用户管理的服务器列表 用户选择服务器,并自动登陆 ...

  9. Python成长笔记 - 基础篇 (十三)--堡垒机

    堡垒机架构 堡垒机的主要作用权限控制和用户行为审计,堡垒机就像一个城堡的大门,城堡里的所有建筑就是你不同的业务系统 , 每个想进入城堡的人都必须经过城堡大门并经过大门守卫的授权,每个进入城堡的人必须且 ...

  10. Python之路【第九篇】堡垒机基础&数据库操作

    复习paramiko模块 Python的paramiko模块,是基于SSH用于连接远程服务器并执行相关操作. SSHClient #!/usr/bin/env python #-*- coding:u ...

随机推荐

  1. css背景图片位置:background的position

    position的两个参数:水平方向的位置,垂直方向的位置----------该位置是指背景图片相对于前景对象的 1.background:url(../image/header.jpg) no-re ...

  2. rnqoj-82-又上锁妖塔-dp

    又是一个敢想就敢做的题目... 同时记录更新两个状态 dp[i] :第i层是飞上去的 df[i]  :第i层是走上去的 dp[i]=min(df[i-1],df[i-2]); df[i]=min(dp ...

  3. jsp的include两种使用方法区别

    指令include是将被包含页面中的代码复制粘贴到主页面中,最后编译形成主页面的类文件(一个). 指令include中file属性的值必须是项目中已存在的文件,否则主页面报异常. 指令include如 ...

  4. 洛谷 P1026 统计单词个数

    题目描述 给出一个长度不超过200的由小写英文字母组成的字母串(约定;该字串以每行20个字母的方式输入,且保证每行一定为20个).要求将此字母串分成k份(1<k<=40),且每份中包含的单 ...

  5. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(7)-MVC与EasyUI DataGrid

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(7)-MVC与EasyUI DataGrid 没有源码的同学跳到第六讲下载源码再来. 我们需要漂亮的UI, ...

  6. BZOJ 3333 排队计划 树状数组+线段树

    题目大意:给定一个序列.每次选择一个位置,把这个位置之后全部小于等于这个数的数抽出来,排序,再插回去,求每次操作后的逆序对数 首先我们每一次操作 对于这个位置前面的数 因为排序的数与前面的数位置关系不 ...

  7. TopCoder SRMS 1 字符串处理问题 Java题解

    Problem Statement   Let's say you have a binary string such as the following: 011100011 One way to e ...

  8. ios中图片的绘画和截图

    ios中图片的绘画和截图 CGImageCreateWithImageInRect截图和UIGraphicsGetImageFromCurrentImageContext绘画图片 使用CGImageC ...

  9. oracle添加数据时主键自动增长

    CREATE TABLE STUDENT( --创建学生表  ID NUMBER(10) PRIMARY KEY,   --主键ID  SNAME VARCHAR2(20), ); 此时给学生表添加数 ...

  10. display:table- cell属性的练习

    display:table- cell属性指让标签元素以表格单元格的形式呈现,类似于td标签.目前IE8+以及其他现代浏览器都是支持此属性的,但是IE6/7只能对你说 sorry了,这一事实也是大大制 ...