总体介绍:
Jumpserver 是全球首款完全开源的堡垒机, 使用 GNU GPL v2.0 开源协议, 是符合 4A 的专业运维审计系统
Jumpserver 使用 Python / Django 进行开发, 遵循 Web 2.0 规范, 配备了业界领先的 Web Terminal 解决方案, 交互界面美观、用户体验好
Jumpserver 采纳分布式架构, 支持多机房跨区域部署, 中心节点提供 API, 各机房部署登录节点, 可横向扩展、无并发访问限制
Jumpserver 现已支持管理 SSH、 Telnet、 RDP、 VNC 协议资产
jumpserver组件说明:
jumpserver:jumpserver的管理后台:
coco:实现了ssh server和web终端 的组件,提供ssh和websocket接口
luna:是web terminal的前端(用来展示用户和与用户进行交互)前端页面都是由该项目完成的
guancamole:apache的跳板机项目,jumpserver使用其组件实现RDB(远程桌面)功能,jumpderver在guacamole中添加额外
Jumpserver的特点:
安装部署:
Jumpserver 环境要求:
部署环境:
安装步骤:
将系统环境字体设置成中文,因为jumpserver的日志文件里面的内容会包含中文字符,不支持可能会乱码
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
配置网络yum源:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
Yum 加速设置请参考 http://mirrors.163.com/.help/centos.html
运行一下命令生成缓存:
yum clean all
yum makecache
1、安装依赖包:
yum -y install wget sqlite-devel xz gcc automake zlib-devel openssl-devel epel-release git
2、编译安装python3
[root@localhost ~]# tar xvf Python-3.6.1.tar.xz
[root@localhost Python-3.6.1]# cd Python-3.6.1/
[root@localhost Python-3.6.1]# ./configure && make && make install
3、建立python虚拟环境
因为 CentOS 6/7 自带的是 Python2,而 Yum 等工具依赖原来的 Python,为 了不扰乱原来的环境我们来使用 Python 虚拟环境
[root@localhost ~]# cd /opt/
[root@localhost opt]# python3 -m venv py3
[root@localhost opt]# source /opt/py3/bin/activate
看到下面的提示符代表成功,以后运行 Jumpserver 都要先运行以上 source 命令,以下所有命令均 在该虚拟环境中运行
(py3) [root@localhost opt]#
4、设置自动在任意python虚拟环境
(py3) [root@localhost opt]# cd /opt/
(py3) [root@localhost opt]# unzip autoenv.zip
(py3) [root@localhost opt]# echo 'source /opt/autoenv/activate.sh' >> ~/.bashrc
(py3) [root@localhost opt]# source ~/.bashrc
(py3) [root@localhost opt]# cd /opt/
(py3) [root@localhost opt]# unzip jumpserver.zip
(py3) [root@localhost opt]# echo "source /opt/py3/bin/activate" > /opt/jumpserver/.env
(py3) [root@localhost opt]# cd jumpserver/
//首次进入按y即可
安装依赖RPM包:
(py3) [root@localhost jumpserver]# cd requirements/
(py3) [root@localhost requirements]# yum -y install $(cat rpm_requirements.txt)
安装python库依赖:
(py3) [root@localhost requirements]# pip install --upgrade pip
(py3) [root@localhost requirements]#pip install -r requirements.txt -I https://pypi.python.org/simple
安装mysql,版本必须是5.5以上
(py3) [root@localhost requirements]# yum -y install mariadb*
(py3) [root@localhost requirements]# systemctl start mariadb
(py3) [root@localhost requirements]# netstat -anput | grep 3306
(py3) [root@localhost requirements]# mysqladmin -u root password 123.com
MariaDB [(none)]> create database jumpserver default charset 'utf8';
MariaDB [(none)]> grant all on jumpserver.* to [email protected] identified by '123.com';
MariaDB [(none)]> flush privileges;
安装redis:
(py3) [root@localhost ~]# tar zxf redis-4.0.14.tar.gz
(py3) [root@localhost ~]# cd redis-4.0.14/
(py3) [root@localhost redis-4.0.14]# make && make install
(py3) [root@localhost redis-4.0.14]# cd utils/
(py3) [root@localhost utils]# ./install_server.sh //一路回车
(py3) [root@localhost utils]# /etc/init.d/redis_6379 start
(py3) [root@localhost utils]# netstat -anput | grep 6379
修改jumpserver的配置文件:
(py3) [root@localhost ~]# cd /opt/jumpserver/
(py3) [root@localhost jumpserver]# cp config_example.yml config.yml
(py3) [root@localhost jumpserver]# cat /dev/urandom | tr -dc A-Za-z0-9 | hend -c 49
NjGA1lRO87Cp6HBngf6yvJbCkbdyYeCFbpxCJtMGgQqIRiOkT //添加到配置文件里
(py3) [root@localhost jumpserver]# cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16
MvRlnZvmNt9V4uY5
修改一下内容:
(py3) [root@localhost jumpserver]# grep -v ^# config.yml | grep -v ^$
SECRET_KEY: NjGA1lRO87Cp6HBngf6yvJbCkbdyYeCFbpxCJtMGgQqIRiOkT
BOOTSTRAP_TOKEN: MvRlnZvmNt9V4uY5
DEBUG: false
LOG_LEVEL: ERROR
SESSION_EXPIRE_AT_BROWSER_CLOSE: true
DB_ENGINE: mysql
DB_HOST: 127.0.0.1
DB_PORT: 3306
DB_USER: jumpserver
DB_PASSWORD: 123.com
DB_NAME: jumpserver
HTTP_BIND_HOST: 0.0.0.0
HTTP_LISTEN_PORT: 8080
REDIS_HOST: 127.0.0.1
REDIS_PORT: 6379
运行jumpserver:
(py3) [root@localhost jumpserver]# ./jms start all -d //-d:在后台运行
第一次初始化的时候会有点慢
(py3) [root@localhost jumpserver]# netstat -anput | grep 8080
(py3) [root@localhost jumpserver]# cd /opt/
(py3) [root@localhost opt]# unzip coco.zip
(py3) [root@localhost opt]# cd coco/
(py3) [root@localhost coco]# echo "source /opt/py3/bin/activate" > /opt/coco/.env //进入coco目录时自动载入python虚拟环境
(py3) [root@localhost coco]# cd requirements/
首次进入 coco 文件夹会有提示,按 y 即可
安装依赖:
(py3) [root@localhost requirements]# yum -y install $(cat rpm_requirements.txt)
(py3) [root@localhost requirements]# pip install -r requirements.txt -i https://pypi.python.org/simple
修改配置文件并运行:
修改内容如下:
BOOTSTRAP_TOKEN: MvRlnZvmNt9V4uY5 //和前面的那个一样
LOG_LEVEL: ERROR
(py3) [root@localhost coco]# ./cocod start -d
(py3) [root@localhost coco]# netstat -anput | grep 2222
安装docker:
(py3) [root@localhost opt]# yum install -y yum-utils device-mapper-persistent-data lvm2
添加docker官方源:
(py3) [root@localhost opt]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
(py3) [root@localhost opt]# yum makecache fast
(py3) [root@localhost opt]# yum install docker-ce //会有两个提示,输入y即可
(py3) [root@localhost opt]# systemctl start docker
(py3) [root@localhost opt]# systemctl enable docker
(py3) [root@localhost opt]# ps -ef | grep docker //这个docker是作为进程在运行
(py3) [root@localhost opt]# docker run --name jms_guacamole -d -p 8081:8080 -v /opt/guacamole/key:/config/guacamole/key -e JUMPSERVER_KEY_DIR=/config/guacamole/key -e -e JUMPSERVER_SERVER=http://192.168.1.10:8080 jumpserver/guacamole:latest
(py3) [root@localhost opt]# tar zxf luna.tar.gz
(py3) [root@localhost nginx-1.14.0]# tar zxf nginx-1.14.0.tar.gz
(py3) [root@localhost nginx-1.14.0]# cd nginx-1.14.0/
(py3) [root@localhost nginx-1.14.0]# ./configure && make && make install
修改配置文件:
在server模块中添加,注释掉原有的 /
client_max_body_size 100m; # 录像及文件上传大小限制
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/; # 如果coco安装在别的服务器, 请填写它的ip
proxy_buffering off;
proxy_http_version 1.1;
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;
access_log off;
}
location /coco/ {
proxy_pass http://localhost:5000/coco/; # 如果coco安装在别的服务器, 请填写它的ip
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/; # 如果guacamole安装在别的服务器, 请填写它的ip
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 / {
proxy_pass http://localhost:8080; # 如果jumpserver安装在别的服务器, 请填写它的ip
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:
(py3) [root@localhost ~]# /usr/local/nginx/sbin/nginx
(py3) [root@localhost ~]# netstat -anput | grep nginx
(py3) [root@localhost ~]# cd /opt/jumpserver/
(py3) [root@localhost jumpserver]# ./jms status
(py3) [root@localhost jumpserver]# cd /opt/coco/
(py3) [root@localhost coco]# ./cocod status
(py3) [root@localhost coco]# docker ps
服务全部启动后,访问http://192.168.1.10,访问nginx代理端口,不要再通过8080端口访问了
浏览器输入192.168.1.10
账号:admin
密码:admin //都是默认的
登录进来后的操作:
用户管理-------用户列表-------创建用户
资产管理-------管理用户-------创建管理用户
资产管理-------管理用户-------创建系统用户(用户名尽量为root,选择手动登录,这个用户用来连接后端资产的)
资产管理-------资产列表-------创建资产-------新开一台主机填写新开主机的IP地址
权限管理-------资产授权-------创建授权规则
会话管理-------web终端--------可以进行连接
创建文件测试: