搭建jumperserver堡垒机管理万台服务器-1
1 Jumpserver堡垒机概述-部署Jumpserver运行环境
2 安装Coco组件
3 安装Web-Terminal前端-Luna组件-配置Nginx整合各组件
4 jumpserver平台系统初始化
5 实战:使用jumpserver 管理数万台服务器
部署准备:
序号 | 服务器名 | IP | 角色 |
1 | k5 | 10.27.17.62 | jumbserver 、redis、mariadb、koko、Web Terminal |
2 |
.1.1 跳板机概述
跳板机就是一台服务器,开发或运维人员在维护过程中首先要统一登录到这台服务器,然后再登录到目标设备进行维护和操作;
跳板机缺点:没有实现对运维人员操作行为的控制和审计,使用跳板机的过程中还是会出现误操作、违规操作导致的事故,一旦出现操作事故很难快速定位到原因和责任人;
堡垒机概述:
堡垒机,即在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,而运用各种技术手段实时收集和监控网络环境中每一个组成部分的系统状态、安全事件、网络活动,以便集中报警、及时处理及审计定责。
堡垒机比跳板机多了实时收集、监控网络环境、集中报警等功能。
Jumpserver概述:
Jumpserver是一款使用Python, Django开发的开源跳板机系统, 为互联网企业提供了认证,授权,审计,自动化运维等功能。
jumpserver堡垒机组件说明:
1、Jumpserver:
现指 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等。
1.2 部署Jumpserver运行环境
安装说明:
服务器名:k5 ip:10.27.17.42 内容: jumpserver 服务端
服务器名:hero3 ip:10.27.17.43 内容: jumpserver的客户端,资源,被管理服务器
服务端准备:
上传依赖的软件到到Linux系统上 "rz " 上传到、/opt上
关闭防火墙并清空规则
[root@k5 opt]# systemctl stop firewalld
[root@k5 opt]# systemctl disable firewalld
[root@k5 opt]# iptables -F
关闭 SELINUX
[root@k5 opt]# vim /etc/selinux/config
修改字符集
[root@k5 opt]# localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8
[root@k5 opt]# export LC_ALL=zh_CN.UTF-8
[root@k5 opt]# echo 'LANG=zh_CN.UTF-8' > /etc/locale.conf
1.3安装Python 3和python 的虚拟环境
(1)、安装依赖包
[root@k5 ~]# yum -y install wget sqlite-devel xz gcc automake zlib-devel openssl-devel epel-release git
(2)、编译安装python3.6.1
[root@k5 ~]# cd /opt
[root@k5 ~]# tar xvf Python-3.6.1.tar.xz && cd Python-3.6.1
[root@k5 ~]# ./configure && make -j 4 && make install
(3)、建立 Python 虚拟环境
因为 CentOS 6/7 自带的是 Python2,而 Yum 等工具依赖原来的 Python2,为了不扰乱原来的环境我们来使用 Python 虚拟环境
[root@k5 ~]# cd /opt
[root@k5 ~]# python3 -m venv py3
[root@k5 ~]# source /opt/py3/bin/activate
(py3) [root@k5 ~]# #切换成功后,前面有一个py3 标识
# 看到下面的提示符代表成功,以后运行 Jumpserver 都要先运行以上 source 命令,以下所有命令均在该虚拟环境中运行
1.4 安装 Jumpserver 1.0.0
1、下载或 Clone 项目
方法1:项目提交较多 git clone 时较大,你可以选择去 Github 项目页面直接下载zip包。
(py3) [root@k5 ~]# cd /opt/jumpserver/ #我们已经提前下载
注:在线下载方法:
方法2:
(py3) [root@k5 ~]#git clone --depth=1 https://github.com/jumpserver/jumpserver.git && cd jumpserver && git checkout master
注:depth用于指定克隆深度,为1即表示只克隆最近一次commit
2、 安装依赖 RPM 包
(py3) [root@k5 jumpserver]# cd /opt/jumpserver/requirements
(py3) [root@k5 requirements]# yum -y install $(cat rpm_requirements.txt)
3、 安装 Python 库依赖
(py3) [root@k5 requirements]# cd /opt/jumpserver/requirements
(py3) [root@k5 requirements]# source /opt/py3/bin/activate
(py3) [root@k5 requirements]# pip -V
pip 9.0.1 from /opt/py3/lib/python3.6/site-packages (python 3.6)
方法1:离线安装:
(py3) [root@k5 python-package]# cd /opt/python-package
(py3) [root@k5 ~]# pip install ./*
方法2:在线安装:
(py3) [root@k5~]# pip install -r requirements.txt
pip 是一个安装和管理 Python 包的工具,相当于yum命令
建议这里选择方法2
4、安装 Redis, Jumpserver 使用 Redis 做 cache 和 celery broke
(py3) [root@k5 requirements]# rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
(py3) [root@k5 requirements]# yum -y install redis
(py3) [root@k5 requirements]# systemctl enable redis ; systemctl start redis
6、建数据库 Jumpserver 并授权
(py3) [root@k5 ~]# mysql
MariaDB [(none)]> create database jumpserver default charset 'utf8';
MariaDB [(none)]> grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by '123456';
MariaDB [(none)]> flush privileges;
7、改 Jumpserver 配置文件,让Jumpserver可以连接数据库
(py3) [root@k5 ~]# cd /opt/jumpserver
(py3) [root@k5 jumpserver]# cp config_example.py config.py
(py3) [root@k5 jumpserver]# vim config.py
修改:如下38-43
# 我们计划修改 DevelopmentConfig 中的配置,因为默认 Jumpserver 使用该配置,它继承自 Config
注意: 配置文件是 Python 格式,不要用 TAB,而要用空格
34 DB_ENGINE = 'sqlite3'
35 DB_NAME = os.path.join(BASE_DIR, 'data', 'db.sqlite3')
36
37 # MySQL or postgres setting like:
38 DB_ENGINE = 'mysql'
39 DB_HOST = '127.0.0.1'
40 DB_PORT = 3306
41 DB_USER = 'jumpserver'
42 DB_PASSWORD = '123456'
43 DB_NAME = 'jumpserver'
8、创建数据库表结构和初始化数据
(py3) [root@k5 jumpserver]# cd /opt/jumpserver/utils
(py3) [root@k5 utils]# bash make_migrations.sh #注,在执行这一条命令之前,必续保障之前的pip install ./* 命令已经执行完了。
9、运行 Jumpserver一定在python3环境下执行
(py3) [root@k5 utils]# source /opt/py3/bin/activate
(py3) [root@k5 utils]# cd /opt/jumpserver
(py3) [root@k5 jumpserver]# chmod +x jms
(py3) [root@k5 jumpserver]# ./jms start all -d #后台运行使用 -d 参数
注: ./jms start all #前台运行
如果运行失败,报错如一下:
- Start Beat as Periodic Task Scheduler
Error: celery start error
Stop service: gunicorn热
celery is stopped
beat is stopped
解决:重新启动一下
测试:
jumpserver堡垒机测试链接:http://10.27.17.62:8080 用户 : admin 密码: admin
2 安装 Coco组件
coco概述:coco实现了 SSH Server 和 Web Terminal Server 的组件,提供 SSH 和 WebSocket 接口, 使用 Paramiko 和 Flask 开发。
(py3) [root@k5 jumpserver]# cd /opt/coco #直接使用离线代码
(py3) [root@k5 coco]# source /opt/py3/bin/activate
方法1:附:在线下载代码:# git clone https://github.com/jumpserver/coco.git && cd coco && git checkout master
2、 安装coco的依赖包,主要有rpm和python包
(py3) [root@k5 coco]# cd /opt/coco/requirements
(py3) [root@k5 requirements]# yum -y install $(cat rpm_requirements.txt)
(py3) [root@k5 requirements]# pip install -r requirements.txt
注:扩展: pip download -r requirements.txt #使用download可以下载python包到本地
3、查看配置文件并运行
(py3) [root@k5 requirements]# cd /opt/coco
(py3) [root@k5 coco]# cp conf_example.py conf.py
(py3) [root@k5 coco]# chmod +x cocod
#如果 coco 与 jumpserver 分开部署,请手动修改 conf.py
(py3) [root@k5 coco]# ./cocod restart -d #启动
(py3) [root@k5 coco]# netstat -antup | grep 5000 #这时不会成功,当你成功激活后,此时就会成功。
3 安装Web-Terminal前端-Luna组件-配置Nginx整合各组件
Luna概述:Luna现在是 Web Terminal 前端,计划前端页面都由该项目提供,Jumpserver 只提供 API,不再负责后台渲染html等。
访问(https://github.com/jumpserver/luna/releases)下载对应版本的 release 包,直接解压,不需要编译
解压 Luna
(py3) [root@k5 ~]# cd /opt
(py3) [root@k5 ~ ]# tar zxvf luna.tar.gz
(py3) [root@k5 ~]# ls /opt/luna
注:在线下载
#wget https://github.com/jumpserver/luna/releases/download/v1.0.0/luna.tar.gz
3.2 配置 Nginx 整合各组件
安装 Nginx 根据喜好选择安装方式和版本
(py3) [root@k5 jumpserver]# yum -y install nginx
在准备配置文件
(py3) [root@k5 opt]# vim /etc/nginx/nginx.conf
注释掉以下:
#server {
72 # listen 80 default_server;
73 # listen [::]:80 default_server;
74 # server_name _;
75 # root /usr/share/nginx/html;
76
77 # # Load configuration files for the default server block.
78 # include /etc/nginx/default.d/*.conf;
79
80 # location / {
81 # }
82
83 # error_page 404 /404.html;
84 # location = /40x.html {
85 # }
86
87 # error_page 500 502 503 504 /50x.html;
88 # location = /50x.html {
89 # }
90 ## }
添加以下:
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
}
}
3.3 运行 Nginx
(py3) [root@k5 opt]# nginx -t # 检测配置文件
(py3) [root@k5 jumpserver]# systemctl start nginx ; systemctl enable nginx
3.4 接受coco注册
登录:http://10.27.17.62/ 到会话管理-终端管理 接受 Coco的注册。点接受。
再刷新页面:
(py3) [root@k5 nginx]# ssh -p2222 admin@10.27.17.62 #密码:admin