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. 路由器DHCP服务及DHCP中继

    实验要求:掌握路由配置DHCP服务配置 拓扑如下: R1enable 进入特权模式config terminal   进入全局模式interface s0/0/0 进入端口ip address 192 ...

  2. RIP路由协议(一)

    实验要求:使用RIPv2配置路由器,使路由器能接收到所有的路由条目 拓扑如下: 配置如下: R1enable 进入特权模式configure terminal 进入全局模式interface s0/0 ...

  3. 文件系统--fs(读)--fs.read

    var fs = require('fs');var buf=new Buffer(1024);//fs.open(); //fs.open(path,flags,mode,callback);/* ...

  4. Python学习笔记第八周

    目录: 一.基础概念 1.动态导入模块 2.断言机制 3.SocketServer 二.作业 FTP服务器 三.单独注明 1.类中装饰器 2.进度条 一.基础概念 1.动态导入模块 有时在编程过程中, ...

  5. 20165228 学习基础和C语言基础调查

    ========== 做中学读后感 我依然认为兴趣与自觉性是推动一个人进步的两大因素,他们之间的区别是"兴趣"带来的影响更多是主动性的学习,而"自觉"则是略显被 ...

  6. Python之路PythonThread,第二篇,进程2

    python3   进程2 僵尸进程处理方法: 3,创建二级子进程处理 4,在父进程中使用信号处理的方法忽略子进程发来的信号: signal(SIGCHLD,DIG,IGN) # 创建二级子进场解决僵 ...

  7. 一些简单二分题,简单的hash,H(i),字符串题

    说在前面: 题是乱七八糟的. 几个二分的题. (但是我的做法不一定是二分,有些裸暴力. 1. Equations HDU - 1496 输入a,b,c,d问你这个方程有多少解.a*x1^2+b*x2^ ...

  8. Redis同时删除多个key(linux环境下)

    登录redis命令行 #del key1 key2 key3 进入redis命令安装目录 #./redis-cli KEYS "PHPREDIS_SESSION*" | awk ' ...

  9. 10 HashMap,Map.Entry,LinkedHashMap,TreeMap,Hashtable,Collections类

    Map集合的功能概述 添加功能 * V put(K key,V value):添加元素.            * 如果键是第一次存储,就直接存储元素,返回null            * 如果键不 ...

  10. Vue v-text和v-html的区别

    v-text和v-html的区别 v-text:会把html的标签输出 v-html:不会把html的标签输出 比如: <template> <div id="app&qu ...