飞道的博客

jumpserver堡垒机安装及应用

333人阅读  评论(0)

jumpserver简介

跳板机概述:
跳板机就是一台服务器,开发或运维人员在维护过程中首先要统一登录到这台服务器,然后再登录到目标设备进行维护和操作。
跳板机缺点:没有实现对运维人员操作行为的控制和审计,使用跳板机的过程中还是会出现误操作、违规操作导致的事故,一旦出现操作事故很难快速定位到原因和责任人;

jumpserver概述

Jumpserver 是全球首款完全开源的堡垒机,使用 GNU GPL v2.0 开源协议,是符合 4A 的专业运维审计系统。
Jumpserver 使用 Python / Django 进行开发,遵循 Web 2.0 规范,配备了业界领先的 Web Terminal 解决方案,交互界面美观、用户体验好。
Jumpserver 采纳分布式架构,支持多机房跨区域部署,中心节点提供 API,各机房部署登录节点,可横向扩展、无并发限制。
为互联网企业提供了认证,授权,审计,自动化运维等功能。

官方网站
http://www.jumpserver.org

部署Jumpserver

配置本地jumpserver yum源

 vim /etc/yum.repos.d/jumpserver.repo
[jumpserver]
name=CentOS7
baseurl=file:///root/jumpserver-packs
enable=1
gpgcheck=0

上传压缩包,解压

tar -zxvf jumpserver-packs.tar.gz
tar -zxvf pip-packs.tar.gz
tar -zxvf Python-3.6.8.tgz -C /usr/local/src/

安装依赖包

yum install -y gcc zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel

编译安装Python

 cd /usr/local/src/Python-3.6.8/
 ./configure --prefix=/usr/local/python
 make -j 4 && make install

给Python做软链接

ln -s /usr/local/python/bin/* /usr/local/bin/

查看版本号

python3 -V
 pip3 -V

配置Python虚拟环境

Cd
python3.6 -m venv /opt/py3
source /opt/py3/bin/activate 

后面有个py3就算好了
把Python虚拟环境设为开机自启

echo "source /opt/py3/bin/activate" >> /root/.bashrc

安装jumpserver
解压

unzip jumpserver-master.zip -d /opt/
cd /opt/
mv jumpserver-master/  jumpserver
 cd /opt/jumpserver/requirements/

安装rpm依赖

yum -y install $(cat rpm_requirements.txt)

安装Python库依赖

pip install --no-index --find-links=/root/pip-packs/ pyasn1 six cffi pytest-runner
cd /opt/jumpserver/requirements/
pip install --no-index --find-links=/root/pip-packs/ -r requirements.txt


拓展知识(可以不用做)

pip list  #查看安装的包
pip freeze > requirements.txt  #将已经通过pip安装的包的名称记录到 requirements.txt文件中
pip download -d /root/pip-packs/  -r 

requirements.txt 缓存pip下载包

安装redis

yum -y install redis
 systemctl start redis 
systemctl enable redis

安装mysql

 yum -y install mariadb mariadb-devel mariadb-server
systemctl start mariadb 
systemctl enable mariadb

创建jumpserver数据库授权

Mysql
create database jumpserver default charset 'utf8';
grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'jumpserver'; 

生成秘钥

cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 49;echo

iAPQpPIiAM6TLlZi0DA0Lktqt5WMjFhS6PhsqM4Ky4LvS7cHd

 cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16

kSFIIMm634zOc2Y2

配置jumpserver配置文件
写好生成的秘钥和mysql授权的名



生成数据库表结构和初始化数据

	cd /opt/jumpserver/utils/
sh make_migrations.sh


运行jumpserver

cd /opt/jumpserver/
 ./jms start all 



设置service脚本

vim /usr/lib/systemd/system/jms.service
[Unit]
Description=jms
After=network.target mariadb.service redis.service docker.service
Wants=mariadb.service redis.service docker.service

[Service]
Type=forking
Environment="PATH=/opt/py3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
ExecStart=/opt/jumpserver/jms start all -d
ExecRestart=/opt/jumpserver/jms restart all -d
ExecStop=/opt/jumpserver/jms stop

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl restart jms
systemctl enable jms           `设置开机自启`

登录
192.168.100.10:8080
输入管理员账号和密码


访问Web Terminal(web linux终端)会报错。

要安装koko组件

 tar -zxvf koko-master-6d4e69b-linux-amd64.tar.gz -C /opt/
chown -R root:root /opt/kokodir/
cd /opt/kokodir/
cp config_example.yml config.yml
 vim config.yml             `秘钥和jumpserver一样`

BOOTSTRAP_TOKEN: h8X7RRmkczrV3Dts
SECRET_KEY: cUBbafUeVjpsO9txGxKbYQhagezAzYaPfVNGQnI2AGYZIaNFL

 ./koko &       ##启动koko

netstat -antup | grep 2222           ##查看一下端口

把koko加入开机自启

 echo " cd /opt/kokodir && ./koko & " >> /etc/rc.local
chmod +x /etc/rc.local

在web后台查看终端

使用ssh测试

ssh admin@192.168.100.10 -p 2222


有了Web Terminal以后,我们可以远程堡垒机,然后通过堡垒机进行登录管理服务器。

部署Luna组件
解压

tar -zxvf luna.tar.gz -C /opt/
chown -R root:root /opt/luna/

设置nginx整合各各组件

安装nginx

yum install -y nginx

修改配置文件

 vim /etc/nginx/nginx.conf  #把80端口修改为808
server {
    listen       808 default_server;
    listen       [::]:808 default_server;

创建jumpserver配置文件
所有的jumpserver的服务都使用nginx来进行反向代理,开启nginx缓存

vim /etc/nginx/conf.d/jumpserver.conf
  server {
    listen 80;

    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/;
        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/;
        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 / {
        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 -t

启动nginx

systemctl start nginx
systemctl enable nginx

登录jumpserver
192.168.100.10
Luna可以打开了

配置Jumpserver
改成自己本机ip

设置jumpserver邮箱(虚拟机需要联网)

提交完新浪邮箱会发邮件
创建用户


编写画圈部分

提交完会发送邮件

点击重制密码



登录到创建的用户

创建组

添加资产
开启新的一台虚拟机
创建管理用户


添加资产


创建命令过滤器

系统用户可以绑定一些命令过滤器,一个过滤器可以定义一些规则 当用户使用这个系统用户登录资产,然后执行一个命令 这个命令需要被绑定过滤器的所有规则匹配,高优先级先被匹配, 当一个规则匹配到了,如果规则的动作是允许,这个命令会被放行,如果规则的动作是禁止,命令将会被禁止执行, 否则就匹配下一个规则,如果最后没有匹配到规则,则允许执行

写上rm -rf / 以免哪个沙雕删库跑路*

创建命令过滤器规则



提交就可以啦

创建系统用户(创建第一次可能输入密码的行没有,在编辑一次就可以啦)

创建资产授权


测试

会话管理打开web终端


安装个nginx(没有不安了),和httpd

使用xshell测试
登录我自己的“嘿嘿嘿”账号测试连接
ssh 嘿嘿嘿@192.168.100.10 -p 2222


登录asd主机

启动以下刚刚安装的httpd

测试网页


查看asd主机历史命令记录

测试完成(在历史会话也可以看到回放视频)

实验做到这里就结束了,做的不好请谅解,如果有什么问题请小伙伴们留言~~


转载:https://blog.csdn.net/weixin_46381668/article/details/105410716
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场