国内优秀的开源堡垒机jumpserver
一.jumpserver介绍官方网址:http://www.jumpserver.org/jumpserver是一款由国人基于python/Diango编写的开源堡垒机,所以可以根据源码进行二次开发。包含用户、资产、权限和审计管理。二.安装jumpserver版本说明:jumpserver1.0以后是基于python3,jumpserver也有docker安装,这里我们采用常规的源码包安...
一.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 admin@192.168.247.130
密码 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
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)