我思故我在我有我精彩--liangqihui

爱欲追而情已逝,子欲孝而亲不待。人生的困苦又怎能用一个难字囊尽百味
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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

Posted on 2017-08-11 09:14  挥辉  阅读(2543)  评论(0编辑  收藏  举报

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\nSudoers_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