跳板机就是一台服务器,开发或运维人员在维护过程中首先要统一登录到这台服务器,然后再登录目标设备进行维护和操作;
缺点:没有实现对运维人员操作行为的控制和审计,使用跳板机的过程中还是会出现误操作,违规操作导致的事故,一旦出现操作事故很难快速定位到原因和责任人。
堡垒机概述:
堡垒机,即在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,而运用各种技术手段实时收集和监控网络环境中每一个组成部分的系统状态,安全事件,网络活动,以便集中报警,及时处理及审计定责。
总结:堡垒机比跳板机多了实时收集,监控网络环境,集中报警等功能。
Jumpserver概述:
jumpserver 是一款使用python,Djan go 开发的开源跳板机系统,为互联网企业提供认证,授权,审计,自动化运维等功能。
官方网址: http://www.jumpserver.org
组件说明:
1 jumpserver: 管理后台,是核心组件(Core),使用Django Class Based View 风格开发,支持Restful API
2 Coco:实现了SSH Server 和 Web Terminal Server 的组件,提供SSH 和WebSocket接口,使用Paramiko和Flask开发
3 Luna:现在是Web Terminal前端,计划前端页面都由该项目提供,Jumpserver只提供API,不在负责后台渲染html等。
搭建jumpserver跳板机
实验环境: CentOS-7.4 关闭selinux和防火墙
dxt-node1 IP: 192.168.6.227 jumpserver服务器
dxt-node2 IP: 192.168.6.224 资源(即被管理的服务器)
修改字符集,否则可能会报 input/output error 的问题,因为日志里打印了中文
[root@dxt-node1 ~]# localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8
[root@dxt-node1 ~]# export LC_ALL=zh_CN.UTF-8
[root@dxt-node1 ~]# echo 'LANG=zh_CN.UTF-8' >/etc/locale.conf
[root@dxt-node1 ~]# exit
再重新连接,这样语言环境就改变了
准备Python3 和 Python 虚拟环境
1 安装依赖包(安装前,可以开启yum缓存功能,把软件包下载下来,方便后期使用)
[root@dxt-node1 ~]# vim /etc/yum.conf
[root@dxt-node1 ~]# cat /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=1
debuglevel=2
logfile=/var/log/yum.log
将原先的keepcache=0 改为keepcache=1即可
[root@dxt-node1 ~]# yum -y install wget sqlite-devel xz gcc automake zlib-devel openssl-devel epel-release git
2 编译安装python3.6.1
在线下载 wget http://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
然后解压编译安装
[root@dxt-node1 opt]# tar xvf Python-3.6.1.tar.xz && cd Python-3.6.1
[root@dxt-node1 Python-3.6.1]# ./configure && make -j 4 && make install
这里必须执行编译安装,否则在安装Python 库依赖时会有麻烦
问题: python2.7和python3.6冲突了怎么办? 如yum使用的是2.7,新程序需要使用3.6?
3 建立Python虚拟环境
因为CentOS 6/7 自带的是 Python2, 而 yum 等工具依赖原来的python2,为了不扰乱原来的环境,我们使用python虚拟环境
[root@dxt-node1 opt]# python3 -m venv py3
[root@dxt-node1 opt]# source /opt/py3/bin/activate
(py3) [root@dxt-node1 opt]#
看到下面的提示符代表成功,以后运行 Jumpserver都要先运行以上 source 命令,以下所有命令均在该虚拟环境中运行
安装 Jumpserver 1.0.0
1 下载或 Clone 项目
项目提交较多 git done 时较大,你可以选择去 Github 项目页面直接下载zip包
在线下载: git clone --depth=1 https://github.com/jumpserver/jumpserver.git && cd jumpserver && git checkout master
注:depth用于指定克隆深度,为1即表示只克隆最近一次commit
此处我已经提前git好了jumpserver
安装jumpserver依赖的RPM包

通常我们会使用yum -y install 然后将rpm_requirements.txt文件中的内容粘贴复制到此处
(py3) [root@dxt-node1 requirements]# yum -y install
cat rpm_requirements.txt
或者(py3) [root@dxt-node1 requirements]# yum -y install $(cat rpm_requirements.txt)
安装Python依赖的库
Python需要依赖的库文件在 /opt/jumpserver/requirements/requirements.txt 文件中

我提前已经下载好了,可以看到共有89个包,pip是一个安装个管理Python包的工具,相当于yum命令,也可以在线安装
# pip install -r requirements.txt
安装 Redis, Jumpserver使用 Redis 做 cache 和 celery broke
[root@dxt-node1 ~]# yum -y install redis
[root@dxt-node1 ~]# systemctl enable redis
[root@dxt-node1 ~]# systemctl start redis
安装数据库MySQL
[root@dxt-node1 ~]# yum -y install mariadb mariadb-devel mariadb-server
[root@dxt-node1 ~]# systemctl enable mariadb;systemctl start mariadb
建数据库 Jumpserver 并授权
[root@dxt-node1 ~]# mysql
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;
改 Jumpserver 配置文件
[root@dxt-node1 ~]# cd /opt/jumpserver/
[root@dxt-node1 jumpserver]# cp config_example.py config.py
[root@dxt-node1 jumpserver]# vim config.py

创建数据库表结构和初始化数据
(py3) [root@dxt-node1 jumpserver]# cd /opt/jumpserver/utils/
(py3) [root@dxt-node1 utils]# bash make_migrations.sh
注:在执行上面命令之前,必须保障之前的pip install ./* 命令已经执行完,不然导入不了Django等软件包
运行Jumpserver
(py3) [root@dxt-node1 ~]# cd /opt/jumpserver/
(py3) [root@dxt-node1 jumpserver]# chmod +x jms
(py3) [root@dxt-node1 jumpserver]# ./jms start all -d
注:启动服务的脚本,使用方式 ./jms start|stop|status|restart all 后台运行添加 -d 参数
堡垒机测试连接:http://192.168.6.227:8080/ 用户名:admin 密码:admin 后期搭建 nginx代理,就可以直接使用80端口正常访问了

安装 Coco组件
默认点击 Web终端 会弹出:

所以接下来,我们安装 luna 和 coco
Coco概述:coco实现了 SSH Server 和 Web Terminal Server 的组件,提供SSH和WebSocket接口,使用 Paramiko 和 Flask 开发
安装coco依赖包,主要有rpm 和 python包
(py3) [root@dxt-node1 ~]# cd /opt/coco/requirements/
(py3) [root@dxt-node1 requirements]# yum -y install $(cat rpm_requirements.txt)
(py3) [root@dxt-node1 requirements]# pip install -r requirements.txt
扩展:pip download -r requirements.txt 使用download 可以下载python包到本地
(py3) [root@dxt-node1 requirements]# cd /opt/coco/
(py3) [root@dxt-node1 coco]# cp conf_example.py conf.py
(py3) [root@dxt-node1 coco]# chmod +x cocod
(py3) [root@dxt-node1 coco]# ./cocod start -d
安装 Web Terminal 前端 Luna
Luna概述:Luna现在是 Web Terminal 前端,计划前端页面都由该项目提供, Jumpserver 只提供 API,不再负责后台渲染html等。
访问(https://github.com/jumpserver/luna/release)下载对应版本的release包,直接解压,不需要编译
在线下载
# wget https://github,com/jumpserver/luna/release/download/v1.0.0/luna,tar,gz
(py3) [root@dxt-node1 opt]# tar zvxf luna.tar.gz
(py3) [root@dxt-node1 opt]# cd luna/
配置 Nginx 整合各组件
(py3) [root@dxt-node1 jumpserver]# yum -y install nginx
删除第38行到57行中 server{...}相关内容,在vim命令模式下,输入38gg,快速跳到38行,然后输入20dd就可以删除了,删除后在38行处插入以下内容:
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
}
}
运行 Nginx
运行之前最好检测一下nginx的配置文件
(py3) [root@dxt-node1 opt]# 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@dxt-node1 opt]# systemctl start nginx
(py3) [root@dxt-node1 opt]# systemctl enable nginx
此时我们在浏览器直接访问Jumpserver服务器ip 即可
到此,Jumpserver堡垒机的安装就全部成功了。

后续堡垒机的详细使用可参考官方文档http://docs.jumpserver.org/zh/docs/admin_guide.html
网友评论