zoukankan      html  css  js  c++  java
  • 【转】jumpserver 堡垒机环境搭建(图文详解)

    jumpserver 堡垒机环境搭建(图文详解)

     

    摘要: Jumpserver 是一款由python编写开源的跳板机(堡垒机)系统,实现了跳板机应有的功能。基于ssh协议来管理,客户端无需安装agent。 特点: 完全开源,GPL授权 Python编写,容易再次开发 实现了跳板机基本功能,认证、授权、审计 集成了Ansibl

    Jumpserver 是一款由python编写开源的跳板机(堡垒机)系统,实现了跳板机应有的功能。基于ssh协议来管理,客户端无需安装agent。

    特点:

    完全开源,GPL授权 
    Python编写,容易再次开发 
    实现了跳板机基本功能,认证、授权、审计 
    集成了Ansible,批量命令等 
    支持WebTerminal 
    Bootstrap编写,界面美观 
    自动收集硬件信息 
    录像回放 
    命令搜索 
    实时监控 
    批量上传下载


    jumpserver 3.0 安装

    相对于 jumpserver 2.0 版本,在新的版本 3.0 中取消了LDAP授权,取而代之的是ssh进行推送;界面也有所变化,功能更完善,安装更简单,不像 2.0 的版本,难住了好多人。下面通过两台主机来搭建 jumpserver堡垒机!

    环境: 
    Centos 6.5 x86_64 
    关闭 iptables,关闭 selinux 
    jumpserver:192.168.1.200 
    clients:192.168.1.210 
    ps:操作只针对 jumpserver,clients 不会进行操作,只是环境需求。

    一、安装依赖包 
    yum -y install epel-release 
    yum clean all && yum makecache 
    yum -y update 
    yum -y install git python-pip mysql-devel gcc automake autoconf python-devel vim sshpass lrzsz readline-devel

    yum install –y setuptool

    二、下载 jumpserver 
    cd /opt 
    git clone https://github.com/jumpserver/jumpserver.git 
    注: 如果下载失败,则去github上面下载zip包,unzip解压缩即可

    这里写图片描述

    三、执行快速安装脚本 
    cd /opt/jumpserver/install

    pip install -r requirement.txt

    这里写图片描述

    查看安装的包 
    pip freeze

    python install.py 
    输入jumpserver的地址,默认为:”192.168.1.200”,回车即可。 
    是否安装MySQL:选择”y”进行安装

    这里写图片描述

    MySQL 启动后会要求用户输入 邮件服务器及账户(后期用来发送用户名、ssh pass、web pass、ssh key)

    这里写图片描述

    输入smtp信息之后发现报错了,是python的pycrypto模块问题,需要卸载重装: 
    pip uninstall pycrypto 
    easy_install pycrypto

    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

    安装之后继续 python install.py 进行安装,并且输入 web管理员用户名和管理员密码,ok

    这里写图片描述

    这里写图片描述

    运行 crontab,定期处理失效连接,定期更新资产信息 
    cd /opt/jumpserver 
    python manage.py crontab add

    这里写图片描述

    注: 
    1)根据提示输入相关信息,完成安装,安装完成后,请访问web,继续查看后续文档 
    2)如果启动失败,请返回上层目录,手动运行 ./service.sh start 启动 
    3)如果 ./service.sh start 启动失败 
    cd /opt/jumpserver 
    python manage.py runserver 0.0.0.0:80 
    python run_websocket.py 
    4)如果启动失败,可能是由于80端口和3000端口已经被占用,或者数据库账号密码不对,请检查

    五、Web登录 
    http://192.168.1.200

    这里写图片描述

    注意: 
    在使用jumpserver过程中,有一步是系统用户推送,要推送成功,client(后端服务器)要满足以下条件: 
    1)后端服务器需要有python、sudo环境才能使用推送用户,批量命令等功能 
    2)后端服务器如果开启了selinux,请安装libselinux-python

    六、更新代码 
    cd /opt/jumpserver 
    git pull

    环境搭建到这一步就结束啦~

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

    CentOS7 开源跳板机(堡垒机) Jumpserver

     

    开源跳板机(堡垒机)Jumpserver

    环境 CentOS 7   x64       关闭 selinux  firewalld

    jumpserver: 172.24.0.14

    testserver: 172.24.0.15

    一. 部署ldapserver

    1.1 安装ldapserver

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

    1.2 准备配置文件      (centos7 slapd.conf.obsolete 并不存在,所以我从centos6 里拷贝了一个过来)

    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=jicki,dc=com"

      rootdn          "cn=admin,dc=jicki,dc=com"

      rootpw          jicki123

      ...

      

    #说明:

    loglevel:设置日志级别  

    suffix:其实就是BaseDN

    rootdn: 超级管理员的dn

    rootpw: 超级管理员的密码

    1.4 修改系统日志配置文件

    vim /etc/rsyslog.conf

    搜索  local7.*          在下面添加一行

    local4.*                                                /var/log/ldap.log

    保存以后重启服务

    systemctl restart  rsyslog.service

    1.5 启动slapd, 查看启动情况

    systemctl start  slapd.service

    删除ladp 原来配置

    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/

    重启服务

    systemctl restart  slapd.service

    1.6 导入ldif数据库框架和测试用户,base.ldif,group.ldif,passwd.ldif 修改文件其中的dc=yolu,dc=com替换成你的baseDN,然后导入,密码是rootpw设置的密码

    上传  base.ldif,group.ldif,passwd.ldif 文件至/tmp 目录下

    cd /tmp

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

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

    ldapadd -x -W -D "cn=admin,dc=jicki,dc=com" -f passwd.ldif

    #说明:测试用户是testuser 密码是testuser123

    二. testserver部署ldapclient

    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=172.24.0.14 --ldapbasedn="dc=jicki,dc=com" --update

    2.4 CentOS7 系统 必须注释掉这里才能从 ladp 验证通过.  ( 否则 提示  登录失败: password refused )

    vi /etc/pam.d/password-auth-ac

    #auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success

    2.5 启动nslcd 否则报 ( pam_ldap(sshd:auth): error opening connection to nslcd: No such file or directory )

    service nslcd start

    2.6 从jumpserver连接testuser测试

    ssh testuser@172.24.0.15

    密码是testuser123 如果连接成功则继续 ( Creating directory '/home/testuser'. )

    三. 在jumpserver 中配置 LDAP负责sudo   

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

    cp /usr/share/doc/sudo-1.8.6p7/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/* 

    systemctl restart  slapd.service

    3.4 导入sudo.ldif到ldapserver

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

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

    四 testserver设置sudo使用ldap

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

    sudo -V | grep 'ldap.conf'

    echo -e "uri ldap://172.24.0.14 Sudoers_base ou=Sudoers,dc=jicki,dc=com" > /etc/sudo-ldap.conf

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

    4.1 测试sudo

    ssh testuser@172.24.0.15

    sudo su 

    whoami

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

    五. 部署jumpserver

    5.1 安装mysql数据库,创建库  ( yum 安装 只用于存储信息  CentOS7 mysql 已替换为 mariadb)

    yum -y install mariadb mariadb-server mariadb-devel

    service mariadb start

    mysqladmin -u root password '12345678'

    mysql -uroot -p

    运行如下命令

    create database jumpserver charset='utf8';

    grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'mysql123';

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

    5.2 下载最新Jumpserver项目

    yum -y install git

    cd /opt

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

    5.3 安装setuptools 和 pip

    yum -y install python-setuptools gcc python-devel ncurses ncurses-devel

    easy_install pip

    5.4 安装依赖库

    cd /opt/jumpserver/docs

    pip install -r requirements.txt -i http://pypi.douban.com/simple

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

    Successfully installed readline

    Cleaning up...

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

    表示安装完成

    5.5 修改Jumpserver配置文件 

    cd /opt/jumpserver

    vim jumpserver.conf

    #coding: utf8

    [base]

    ip = 172.24.0.14

    port = 80

    key = 88aaaf7ffe3c6c04

    [db]

    host = 127.0.0.1

    port = 3306

    user = jumpserver

    password = mysql234

    database = jumpserver

    [ldap]

    ldap_enable = 1

    host_url = ldap://127.0.0.1:389

    base_dn = dc=jicki, dc=com

    root_dn = cn=admin,dc=jicki,dc=com

    root_pw = jicki123

    [websocket]

    web_socket_host = 172.24.0.14:3000

    [mail]

    email_host = smtp.exmail.qq.com

    email_port = 25

    email_host_user = jicki@qq.com

    email_host_password = jicki123

    email_use_tls = False

    # 说明:

    # 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是默认端口

    # [mail] 配置mail服务器,用来发送邮件,本版本添加用户会自动发邮件给用户的email

    5.6 修改logs目录权限

    cd /opt/jumpserver

    mkdir logs

    chmod 777 logs

    5.7 django sync db 到数据库

    cd /opt/jumpserver/

    python manage.py syncdb

    Would you like to create one now? (yes/no): no

      

    5.8 测试运行

    python manage.py runserver 0.0.0.0:80

    python log_handler.py

    #说明:两个窗口分别打开

    5.9 初始化jumpserver浏览器打开 

    http://172.24.0.14/install

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

    成功:安装成功

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

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

    6.1 下载node.js

    官方地址:http://www.nodejs.org/download/

    wget http://nodejs.org/dist/v0.12.0/node-v0.12.0.tar.gz

    6.2 编译安装

    yum -y install gcc-c++ bzip2*

    tar zxvf node-v0.12.0.tar.gz

    cd node-v0.12.0

    ./configure --prefix=/opt/node/ 

    make && make install

    6.3 设置path

    vim /etc/profile.d/node.sh

    export PATH=$PATH:/opt/node/bin

    source /etc/profile.d/node.sh

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

    cd /opt/jumpserver/websocket

    npm install        # 可能下载需要几分钟,可以更省时

    6.5 测试启动websocket 

    node index.js

    说明:新窗口运行

    6.6 访问页面

    http://172.24.0.14

    测试所有功能

    七. 收尾工作

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

    vim /etc/sshd/sshd_config

    PasswordAuthentication no

    service sshd restart

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

    cd /opt/jumpserver/docs

    vim jumpserver.sh

      ...

      if [ $USER == 'admin' ] || [ $USER == 'root' ] || [ $USER == 'jicki' ];then       # 修改特殊用户,结束后不退出

      ...

      

    cp jumpserver.sh /etc/profile.d/

    7.3 正常运行jumpserver系统

    cd /opt/jumpserver/

    chmod +x service.sh

    ./service.sh start                       #启动 

    ./service.sh stop                        #关闭

    http://172.24.0.14/                    用户名 admin    密码  admin

  • 相关阅读:
    Kotlin 数据类与密封类
    Kotlin 扩展
    Kotlin 接口
    Kotlin 继承
    Kotlin 类和对象
    Kotlin 循环控制
    Kotlin 条件控制
    Kotlin 基础语法
    freemarker的简单入门程序
    json数据格式的简单案例
  • 原文地址:https://www.cnblogs.com/liangqihui/p/7344029.html
Copyright © 2011-2022 走看看