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

【转】jumpserver 堡垒机环境搭建(图文详解)的更多相关文章

  1. jumpserver 堡垒机环境搭建

    jumpserver 堡垒机环境搭建(图文详解) https://blog.csdn.net/my_bai/article/details/62226474   http://docs.jumpser ...

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

    摘要: Jumpserver 是一款由python编写开源的跳板机(堡垒机)系统,实现了跳板机应有的功能.基于ssh协议来管理,客户端无需安装agent. 特点: 完全开源,GPL授权 Python编 ...

  3. jumpserver 堡垒机环境搭建(图文具体解释)

    Jumpserver 是一款由python编写开源的跳板机(堡垒机)系统,实现了跳板机应有的功能.基于ssh协议来管理,客户端无需安装agent. 特点: 全然开源,GPL授权 Python编写.容易 ...

  4. 大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机)

    引言 在大数据学习系列之一 ----- Hadoop环境搭建(单机) 成功的搭建了Hadoop的环境,在大数据学习系列之二 ----- HBase环境搭建(单机)成功搭建了HBase的环境以及相关使用 ...

  5. 大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 图文详解

    引言 在之前的大数据学习系列中,搭建了Hadoop+Spark+HBase+Hive 环境以及一些测试.其实要说的话,我开始学习大数据的时候,搭建的就是集群,并不是单机模式和伪分布式.至于为什么先写单 ...

  6. Scala IDEA for Eclipse里用maven来创建scala和java项目代码环境(图文详解)

    这篇博客 是在Scala IDEA for Eclipse里手动创建scala代码编写环境. Scala IDE for Eclipse的下载.安装和WordCount的初步使用(本地模式和集群模式) ...

  7. 用maven来创建scala和java项目代码环境(图文详解)(Intellij IDEA(Ultimate版本)、Intellij IDEA(Community版本)和Scala IDEA for Eclipse皆适用)(博主推荐)

    不多说,直接上干货! 为什么要写这篇博客? 首先,对于spark项目,强烈建议搭建,用Intellij IDEA(Ultimate版本),如果你还有另所爱好尝试Scala IDEA for Eclip ...

  8. 【必知必会】手把手教你配置MySQL环境变量——图文详解

    一.先决条件 假设我们已经成功安装MySQL数据库.如果还有小伙伴不知道如何安装MySQL数据库,可以在本文下留言,留言数超20,则出一期"手把手教你安装MySQL数据库--图文详解&quo ...

  9. Mybatis简介、环境搭建和详解

    简介: 1.Mybatis  开源免费框架,原名叫iBatis,2010在google code,2013年迁移到github 2.作用: 数据访问层框架 2.1  底层是对JDBC的封装 3.myb ...

随机推荐

  1. STP实验(指定特定交换机为根桥)

    实验要求:将三层交换机设置为根桥交换机,并查看 拓扑如下: 涉及内容有: 1.根桥交换机的选举方式 2.生成树修改优先级成为根桥交换机 3.生成树直接指定根桥交换机 根桥交换机是根据优先级和MAC地址 ...

  2. 【论文 PPT】 【转】Human-level control through deep reinforcement learning(DQN)

    最近在学习强化学习的东西,在网上发现了一个关于DQN讲解的PPT,感觉很是不错,这里做下记录,具体出处不详. ============================================= ...

  3. 服务器上安装caffe的过程记录

    1. 前言 因为新的实验室东西都是新的,所以在服务器上要自己重新配置CAFFE 这里假设所有依赖包学长们都安装好了,我是没有sudo权限的 服务器的配置: CUDA 8.0 Ubuntu 16.04 ...

  4. Unity 3D与Android Studio安卓交互之-导出jar包

    u3d与安卓 jar 包交互 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享 ...

  5. Gym - 101806T: Touch The Sky(贪心)

    Figure: The house floats up in the sky by balloons. This picture is also used in 2018 KAIST RUN Spri ...

  6. xdoj 1241--余神的rp机(区间dp)

    xdoj  1241---余神的rp机 核

  7. 原生的js轮播图

    图片会照常循环播放,当然也可以通过按钮来进行切换,当切出当前的页面时,等到你在回到当前页面时该轮播的图片还是停留在你之前所切出去的的那张图片的状态. HTML部分: <html> < ...

  8. <------------------字节流--------------------->

    字节流: 输入和输出:1.参照物都是java程序来惨遭 2.Input输入,持久化上的数据---->内存 3.Output输出,内存--->硬盘 字节输出流: OutputStream: ...

  9. Object 及toString() 方法的重写

    Object: 是所有的类的父类  ,Object中所有的方法 , 子类都能使用  ,   接口不是Object子类. Person: /*将父类的equals方法 重写 * 不改变父类的源代码 eq ...

  10. Percona Toolkit之pt-table-checksum学习

    pt-table-checksum用来检测主从数据库上的数据一致性,其原理是通过在主库上运行一系列的MySQL函数计算每个表的散列值,并利用主从关系将相同的操作在从服务器上重放(基于statement ...