国内优秀的开源堡垒机jumpserver

一.jumpserver介绍

官方网址:
http://www.jumpserver.org/
jumpserver是一款由国人基于python/Diango编写的开源堡垒机,所以可以根据源码进行二次开发。包含用户、资产、权限和审计管理。

二.安装jumpserver

环境说明:centos7.6,内存4G
版本说明:jumpserver1.4.8(生产环境迄今为止推荐此版本) ,如果是安装1.5.3以后的版本,此教程后有一些不太适用。请看官方安装教程。

注意

  • 自 v1.5.3 版本起(包含 v1.5.3) ,Koko 将担任 Coco 在 Jumpserver
    项目中的重要角色,之后的版本将不会再对 Coco 进行升级维护。
  • 1.4以后配置文件.py变成了.yml
  • jumpserver1.0以后是基于python3,jumpserver也有docker安装,这里我们采用常规的源码包安装,详细的文档可以在下面下载地址页面了解。

官方github:
https://github.com/jumpserver/jumpserver

服务器要求:
官方要求内存4G,但是至少得2G,要不然跑不起来。所以我这里就用虚拟机实验,云服务器内存呢有些不够。
保持网络畅通。

首先配置防火墙规则,放行80、8080和2222(ssh登入端口),关闭selinux,按照官方安装说明文档,在服务器上开启firewalld:

systemctl start firewalld
#执行下面得防火墙规则脚本(可以直接复制)
if [ "$(systemctl status firewalld | grep running)" != "" ]; then firewall-cmd --zone=public --add-port=80/tcp --permanent; firewall-cmd --zone=public --add-port=2222/tcp --permanent; firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="172.17.0.0/16" port protocol="tcp" port="8080" accept"; firewall-cmd --reload; fi 

#关闭selinux
#编辑配置文件
vim /etc/selinux/config
#更改
SELINUX=disabled
#重启生效,如果之前firewalld没有设置开启启动,记得start一下

#再执行下面得脚本
if [ "$(getenforce)" != "Disabled" ]; then setsebool -P httpd_can_network_connect 1; fi
#修改字符集
localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8 
export LC_ALL=zh_CN.UTF-8
#准备py3和虚拟环境
#centos默认py2.7,所以需要去安装一个py3
 yum -y install wget gcc epel-release git  //先安装依赖
 yum -y install python36 python36-devel
#进入/opt目录下,安装虚拟环境
python3.6 -m venv /opt/py3
进入虚拟环境
source /opt/py3/bin/activate

下面的安装步骤全部在虚拟环境中运行:

#下载jumpserver项目
git clone  https://github.com/jumpserver/jumpserver.git
cd /opt/jumpserver
#切换版本到1.4.8
git checkout 1.4.8

#进入jumpserver下的requirements目录
#安装rpm包
yum -y install $(cat /opt/jumpserver/requirements/rpm_requirements.txt)

#安装python库依赖
#更新setuptools
#pip类似于yum
pip install --upgrade pip setuptools  
pip install -r /opt/jumpserver/requirements/requirements.txt
  • 安装redis,提供缓存服务

有两种方法,一种直接yum,还有一种源码包安装,推荐yum:

yum -y install redis

启动并设置开机启动:

systemctl enable redis
systemctl start redis

但是,我的没有yum源,我又懒得去找。所以我就自己源码包安装,笔记:
https://blog.csdn.net/qq_37369726/article/details/102718448

  • 还要安装mariadb:

也有两种方式

yum -y install mariadb mariadb-devel mariadb-server MariaDB-shared
#启动,并设置开机启动
systemctl start mariadb
systemctl enable mariadb

可能因为我装了mysql,配置文件有冲突,mariadb启动不来,我就自己二进制包安装mariadb,方法:
包含mariadb安装笔记

查看redis和mariadb有没有启动:

netstat -lnpt 
  • 创建数据库jumpserver并授权:
#进入数据库
mysql -uroot
#创建数据库
create database jumpserver default charset 'utf8';
#创建用户jumpserver,并授权
grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'weakPasswd';   //后面的密码在配置文件中也要配置一下
flush privileges;
exit;
  • 修改jumpserver配置文件:
cd /opt/jumpserver/
cp config_example.yml config.yml
#编辑配置文件config.yml
vim config.yml

修改用图片来说明:
在这里插入图片描述
注意:BOOTSTRAP_TOKEN是1.4之后新加的参数数值执行
cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16得到,需要和等下coco配置文件需要用到。
在这里插入图片描述
配置完成。

  • 生成数据库表和初始化数据:
 #切换目录
 cd /opt/jumpserver/utils/
 #执行
 sh make_migrations.sh
#验证有没有成功
echo $? //输出为0就表示没问题

做完上面所有操作之后,就可以运行jumpserver:

cd /opt/jumpserver/
#给执行文件加权限
chmod +x jms
#启动
./jms start all -d     //-d表示放在后台运行

让jumpserver开机启动:

 vim /etc/rc.local
 #添加
 source /opt/py3/bin/activate; cd /opt/jumpserver/; ./jms start all -d &>/dev/null

浏览器访问ip:8080访问,例如我的是192.168.247.130:8080
界面:
在这里插入图片描述
如果访问不了,应该是防火墙的问题,可以清空防火墙规则测试一下:

iptables -F
systemctl stop firewalld

如果可以访问,就手动放行2222,8080,80端口。

然而,到这里并没有结束。

三.安装SSH Server和WebSocket Server:Coco

这部分我用docker安装coco,因为我直接安装docker启动之后,ssh连接不上。对比了一下,安装过程都差不都。只不过douker的话,要先安装好docker和coco镜像,然后进入coco docker里面进行配置参数,启动。

 #安装docker,docker版本最好根据官方指定的
 #以下步骤可以复制
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
yum -y install docker-ce
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.
systemctl enable docker
systemctl start docker
#下载coco镜像以及启动
docker run --name jms_coco -d  -p 2222:2222  -p 5000:5000 -e CORE_HOST=http://ip:8080 -e BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN  jumpserver/jms_coco:1.4.8
//可以先复制执行上面的命令,然后进入coco容器配置文件

在这里插入图片描述

#进入coco容器之后,需要配置先配置字符集
localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
echo 'LANG="zh_CN.UTF-8"' > /etc/locale.conf

#进入py3的虚拟环境
#编辑配置文件
source /opt/py3/bin/activate
cd coco/
vi config.yml //coco容器并没有安装vim和很多工具

在这里插入图片描述
启动coco:

cd /opt/coco/
chmod +x cocod
./cocod start -d   //放在后台执行
#测试有没有安装coco成功:
ssh -p2222 [email protected]
密码 admin

在这里插入图片描述

四.安装web terminal 前端:Luna

luna已经改为了纯前端,需要nginx来访问。

下载luna

wget https://github.com/jumpserver/luna/releases/download/1.4.8/luna.tar.gz
# 如果网络有问题导致下载无法完成可以使用下面地址
wget https://demo.jumpserver.org/download/luna/1.4.8/luna.tar.gz

下载nginx,做一个代理8080

#因为我nginx yum安装没有nginx包
#所以我自己源码包安装

nginx源码安装
当然你也可以yum安装,配置文件在/etc/nginx/nginx.conf里面,把里面的默认虚拟主机删除,然后到虚拟主机目录下增加一个jumpserver虚拟主机。
内容,(可以直接复制,nginx重新加载报错的话,最多是里面有些目录可以更改了:

server {
    server_name jumpserver.xxx.com; 
    listen 80;
    client_max_body_size 100m;  # 录像及文件上传大小限制
    access_log /etc/nginx/logs/jumpserver_access.log;
    error_log /etc/nginx/logs/jumpserver_error.log;

   location /luna/ {
        try_files $uri / /index.html;
        alias /opt/luna/;  # 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/;
        proxy_buffering off;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        #启用支持websocket连接
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

   location /coco/ {
        proxy_pass       http://localhost:5000/coco/;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        access_log off;
    }

   location /guacamole/ {
        proxy_pass       http://localhost:8081/;
        proxy_buffering off;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $http_connection;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        access_log off;
    }
   
   location /ws/ {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://localhost:8070;
        proxy_http_version 1.1;
        proxy_buffering off;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    } 

   location / {
        proxy_pass http://localhost:8080;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }

重新加载nginx:

/usr/local/nginx/sbin/nginx -t   //检查语法错误
/usr/local/nginx/sbin/nginx -s reload

此时你的浏览器可以直接ip访问jumpserver了。
到这里可以说jumpserver安装完成。

但是,你的资产管理里有windows用户的话,还需要部署guacamole,它需要tomcat来运行。

# 通过 docker 部署
 docker run --name jms_guacamole -d \
    -p 8081:8081 \
    -e JUMPSERVER_KEY_DIR=/config/guacamole/key \
    -e JUMPSERVER_SERVER=http://你自己的ip \
    -e BOOTSTRAP_TOKEN=你的token \
    jumpserver/jms_guacamole:1.4.8
发布了108 篇原创文章 · 获赞 26 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_37369726/article/details/103272679