zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Calendar来进行一个时间段内每天的判断
    关于PreparedStatement的setDate的了解
    git学习--创建标签
    git学习--bug分支
    hibernate(1)
    JavaScript(三)---- 控制流程语句
    JavaScript(二)---- 变量、数据类型和运算符
    JavaScript(一)---- 概述
    css(四)-- 盒子模型和定位
    css(三)-- 常用属性
  • 原文地址:https://www.cnblogs.com/jicki/p/5547001.html
Copyright © 2011-2022 走看看