一、Jumpserver堡垒机概述
1.跳板机概述
跳板机就是一台服务器,开发或运维人员在维护过程中首先要统一登录到这台服务器,然后再登录到目标设备进行维护和操作。
跳板机缺点:没有实现对运维或开发人员操作行为的控制和审计,使用跳板机的过程中还是会出现误操作、违规操作导致的事故,一旦出现操作事故很难快速定位到原因和责任人。
2.堡垒机概述
堡垒机,即在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,而运用各种技术手段实时收集和监控网络环境中每一个组成部分的系统状态、安全事件、网络活动,以便集中报警、及时处理及审计定责。
总结:堡垒机比跳板机多了实时收集、监控网络环境、集中报警等功能。
3.jumpserver概述
Jumpserver是一款使用Python、Django开发的开源跳板机系统。为互联网企业提供了认证,授权,审计,自动化运维等功能。
官方网址: http://www.jumpserver.org
jumpserver堡垒机组件说明:
1、Jumpserver:现指 Jumpserver 管理后台,是核心组件(Core),使用 Django Class Based View (Django基于类的视图)风格开发,支持 Restful API。
2、Coco:实现了 SSH Server 和 Web Terminal Server 的组件,提供 SSH 和 WebSocket 接口, 使用 Paramiko 和 Flask 开发。
3、Luna:现在是 Web Terminal 前端,计划前端页面都由该项目提供,Jumpserver 只提供 API,不再负责后台渲染html等。
二、实验环境准备
一台jumpserver服务端
一台或几台服务器资源,作为被管理的服务器
搭建jumpserver所用到的软件包集。
(1)服务器终端下载:
cd /opt && wget https://web.lixian.fun/data/jumpserver-package.zip
(2)本地下载地址:
或者下载到本地上,然后使用xshell上传到服务器。
文件下载
三、安装Python3环境
1.上传资源包并解压
[root@jump ~]# cd /opt/ [root@jump /opt]# rz jumpserver-package.zip [root@jump /opt]# ll total 72708 -rw-r--r-- 1 root root 74450263 Sep 9 2019 jumpserver-package.zip [root@jump /opt]# unzip jumpserver-package.zip [root@jump /opt]# cd jumpserver-package [root@jump /opt/jumpserver-package]# mv * /opt/ [root@jump /opt/jumpserver-package]# cd .. [root@jump /opt]# rm -rf jumpserver-package jumpserver-package.zip [root@jump /opt]# ls -l total 24220 drwxr-xr-x 5 root root 194 Jun 8 2018 coco drwxr-xr-x 11 root root 253 Jun 8 2018 jumpserver -rw-r--r-- 1 root root 7910019 Apr 10 2018 luna.tar.gz -rw-r--r-- 1 root root 16872064 Apr 10 2018 Python-3.6.1.tar.xz drwxr-xr-x 2 root root 8192 Jun 8 2018 python-package
2.修改中文字符集
Jumpserver是我们国人开发的,所以有些报错在日志里是中文的,这里我们把字符集修改为中文。
[root@jump /opt]# cat /etc/locale.conf LANG="en_US.UTF-8" [root@jump /opt]# export LC_ALL=zh_CN.UTF-8 [root@jump /opt]# echo 'LANG=zh_CN.UTF-8' > /etc/locale.conf [root@jump /opt]# logout [root@jump ~]# cat /etc/locale.conf LANG=zh_CN.UTF-8
将本地的yum源更新为阿里云的仓库源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
开启yum缓存功能
把软件包下载下来方便后期使用
sed -ri '/^keepcache/s#0#1#g' /etc/yum.conf
安装Python依赖包
[root@jump ~]# yum -y install wget sqlite-devel xz gcc automake zlib-devel openssl-devel epel-release git
编译安装python3.6.1
[root@jump ~]# cd /opt/ [root@jump /opt]# tar fx Python-3.6.1.tar.xz [root@jump /opt]# cd Python-3.6.1/ && ./configure && make && make install
建立Python虚拟环境
解决python2.7和python3.5冲突了怎么办?
老程序需要使用2.7,新程序需要3.6?
因为 CentOS 6/7 自带的是 Python2,而Yum等工具依赖原来的Python,为了不扰乱原来的环境我们使用Python虚拟环境。
[root@jump /opt/Python-3.6.1]# cd /opt/ [root@jump /opt]# python3 -m venv py3 [root@jump /opt]# source py3/bin/activate (py3) [root@jump /opt]#
看到上面的(py3)提示符代表成功,以后运行Jumpserver都要先运行以上source命令,以下所有命令均在该虚拟环境中运行。
四、安装jumpserver堡垒机
1.安装依赖rpm包
(py3) [root@jump /opt]# cd /opt/jumpserver/requirements/ (py3) [root@jump /opt/jumpserver/requirements]# yum install -y `cat rpm_requirements.txt`
2.配置pip加速下载
(py3) [root@jump /opt/jumpserver/requirements]# cd ~ (py3) [root@jump ~]# mkdir .pip (py3) [root@jump ~]# cat >~/.pip/pip.conf <<EOF [global] index-url = http://mirrors.aliyun.com/pypi/simple/ [install] trusted-host=mirrors.aliyun.com EOF (py3) [root@jump ~]#
3.安装python依赖库
(py3) [root@jump ~]# cd /opt/jumpserver/requirements/ (py3) [root@jump requirements]# sed -ir 's#python-gssapi==0.6.4#\#python-gssapi==0.6.4#g' requirements.txt (py3) [root@jump requirements]# pip install -r requirements.txt (py3) [root@jump requirements]# sed -ir 's#\#python-gssapi==0.6.4#python-gssapi==0.6.4#g' requirements.txt (py3) [root@jump requirements]# pip install -r requirements.txt
4.安装redis服务
jumpserver使用redis做cache缓存
(py3) [root@jump requirements]# yum install -y redis (py3) [root@jump requirements]# systemctl enable redis && systemctl start redis Created symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /usr/lib/systemd/system/redis.service.
5.安装MySQL数据库
(py3) [root@jump requirements]# yum install mariadb mariadb-devel mariadb-server -y (py3) [root@jump requirements]# systemctl enable mariadb && systemctl start mariadb Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
6.创建jumpserver数据库并授权
(py3) [root@jump requirements]# mysqladmin -uroot password New password: Confirm new password: (py3) [root@jump requirements]# mysql -uroot -p Enter password: MariaDB [(none)]> create database jumpserver default charset 'utf8'; Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by '123456'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> exit Bye
7.修改jumpserver配置文件
(py3) [root@jump requirements]# cd /opt/jumpserver/ (py3) [root@jump jumpserver]# cp config_example.py config.py (py3) [root@jump jumpserver]# vim config.py # MySQL or postgres setting like: DB_ENGINE = 'mysql' DB_HOST = '127.0.0.1' DB_PORT = 3306 DB_USER = 'jumpserver' DB_PASSWORD = '123456' DB_NAME = 'jumpserver'
一定要注意python的缩进
一定要注意python的缩进
一定要注意python的缩进(重要的事情说三遍)
8.生成数据库表结构和初始化数据库
注意:在执行这一条命令之前,必续保障之前的pip install ./* 命令已经执行完了,不然后导入不了Django等软件包
(py3) [root@jump jumpserver]# cd /opt/jumpserver/utils/ (py3) [root@jump jumpserver/utils]# bash make_migrations.sh
9.启动jumpserver
(py3) [root@jump jumpserver/utils]# cd /opt/jumpserver/ (py3) [root@jump jumpserver]# chmod +x jms (py3) [root@jump jumpserver]# ./jms start all -d
如果运行失败了,需要重新启动一下
使用方式./jms start|stop|status|restart all -d
# -d 是后台启动的意思
失败:
- Start Beat as Periodic Task Scheduler Error: celery start error Stop service: gunicorn celery is stopped beat is stopped
重启:
(py3) [root@jump jumpserver]# ./jms restart all -d gunicorn is stopped celery is running: 39116 beat is running: 39122
启动成功:
gunicorn is running: 39183 celery is running: 39199 beat is running: 39201
10.浏览器测试访问:IP:8080
默认用户名:admin,默认密码:admin
访问成功到这里搭建jumpserver就完美成功啦,但是这样还不够,没有很全的功能,下面需要安装coco和Luna等组件。
五、安装Coco组件和ssh server
当我们打开jumpserver左侧栏的会话管理中的web终端,会出现一个报错,需要我们部署luna,coco,配置nginx做url分发。
1.安装coco组件
coco实现了SSH Server和Web Terminal Server的组件,提供SSH和WebSocket接口,使用Paramiko和Flask开发。
(py3) [root@jump ~]# cd /opt/coco/requirements/ (py3) [root@jump requirements]# yum -y install $(cat rpm_requirements.txt) (py3) [root@jump requirements]# pip install -r requirements.txt
前面已经离线安装过python的包,这里有可能提示已经安装过了。
2.运行coco
(py3) [root@jump requirements]# cd /opt/coco/ (py3) [root@jump coco]# cp conf_example.py conf.py (py3) [root@jump coco]# chmod +x cocod (py3) [root@jump coco]# ./cocod start -d
六、安装luna组件并安装nginx整合各个组件
1.安装luna组件
Luna概述:Luna现在是 Web Terminal 前端,计划前端页面都由该项目提供,Jumpserver 只提供 API,不再负责后台渲染html等。
访问(https://github.com/jumpserver/luna/releases)下载对应版本的 release 包,直接解压,不需要编译。
这里我们资源包已经下载好了,直接解压即可。
(py3) [root@jump coco]# cd /opt/ (py3) [root@jump opt]# tar xf luna.tar.gz
2.安装nginx服务
(py3) [root@jump coco]# yum install -y nginx
3.修改nginx配置文件
(py3) [root@jump coco]# vim /etc/nginx/nginx.conf
删除nginx.conf配置文件默认的server层,并把下面的server层内容添加进去
删除nginx.conf配置文件默认的server层,并把下面的server层内容添加进去
删除nginx.conf配置文件默认的server层,并把下面的server层内容添加进去
server { listen 80; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; location /luna/ { try_files $uri / /index.html; alias /opt/luna/; } location /media/ { add_header Content-Encoding gzip; root /opt/jumpserver/data/; } location /static/ { root /opt/jumpserver/data/; } location /socket.io/ { proxy_pass http://localhost:5000/socket.io/; # 如果coco安装在别的服务器,请填写它的ip proxy_buffering off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } location / { proxy_pass http://localhost:8080; # 如果jumpserver安装在别的服务器,请填写它的ip } }
4.启动nginx服务
(py3) [root@jump coco]# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful (py3) [root@jump coco]# systemctl restart nginx && systemctl enable nginx Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
5.浏览器IP+80端口访问
点击会话管理,再点击web终端就可以正常访问了,不会出现报错啦。
七、使用jumpserver连接管理主机
web终端如果连接完成,我们就可以创建用户,连接主机进行管理了。
1.创建管理用户
首先点击左侧的创建管理用户,管理用户是服务器的 root,或拥有 NOPASSWD: ALL sudo 权限的用户,Jumpserver 使用该用户来推送系统用户、获取资产硬件信息等。
2.创建系统用户
系统用户是 Jumpserver 跳转登录资产时使用的用户,可以理解为登录资产用户, Jumpserver使用系统用户登录资产。
也就是我们资产的用户。
3.创建资产主机
4.资产授权
给资产授权,就是相当于推送系统用户给资产主机,然后使用这个系统用户来管理主机。
5.查看资产主机状态
6.web终端连接
点击左侧的Web终端,然后点击我们刚才创建的资产主机,即可连接到主机,这里资产主机的用户就是我们创建的系统用户,现在理解了吧 【显哥出品,必为精品】