文章目录
JumpServer是什么
JumpServer官方帮助文档:https://docs.jumpserver.org/zh/v3/#1-jumpserver
JumpServer是一个基于RBAC(角色权限访问控制模型)的企业内部资源管理的安全审计系统。它能做到事前授权,事中监察,事后审计,从而有效降低了运维操作风险,使得运维操作管理变得更简单,更安全。同时它能满足角色管理与授权审批、信息资源访问控制、操作记录和审计、系统变更和维护控制要求,并能生成一些统计报表配合管理规范,以此来不断提升IT内控的合规性。
生产应用场景
企业开发中,开发只能连接到开发环境,测试只能连接到测试环境,彼此不串门不越权,当然运维可以随时随地连接任何环境。
安全审计的4A规范
Authentication: 身份鉴别(防止身份冒用和复用)
Authorization: 授权控制(防止内部误操作和权限滥用)
Accounting: 账号管理(人员和资产的管理)
Auditing: 安全审计(追溯的保障和事故分析的依据)
Docker安装JumpServer
1.Docker安装
docker安装脚本
#!/bin/bash
#
#********************************************************************
#Author: wangxiaochun
#Date: 2020-02-04
#FileName: install_docker.sh
#URL: http://www.wangxiaochun.com
#Description: The test script
#Copyright (C): 2020 All rights reserved
#********************************************************************
DOCKER_VERSION="20.10.10"
UBUNTU_DOCKER_VERSION="5:${DOCKER_VERSION}~3-0~`lsb_release -si`-`lsb_release -cs`"
#UBUNTU_DOCKER_VERSION="5:20.10.9~3-0~`lsb_release -si`-`lsb_release -cs`"
#UBUNTU_DOCKER_VERSION="5:19.03.14~3-0~lsb_release -si-`lsb_release -cs`"
COLOR_SUCCESS="echo -e \\033[1;32m"
COLOR_FAILURE="echo -e \\033[1;31m"
END="\033[m"
. /etc/os-release
color () {
RES_COL=60
MOVE_TO_COL="echo -en \\033[${RES_COL}G"
SETCOLOR_SUCCESS="echo -en \\033[1;32m"
SETCOLOR_FAILURE="echo -en \\033[1;31m"
SETCOLOR_WARNING="echo -en \\033[1;33m"
SETCOLOR_NORMAL="echo -en \E[0m"
echo -n "$1" && $MOVE_TO_COL
echo -n "["
if [ $2 = "success" -o $2 = "0" ] ;then
${SETCOLOR_SUCCESS}
echo -n $" OK "
elif [ $2 = "failure" -o $2 = "1" ] ;then
${SETCOLOR_FAILURE}
echo -n $"FAILED"
else
${SETCOLOR_WARNING}
echo -n $"WARNING"
fi
${SETCOLOR_NORMAL}
echo -n "]"
echo
}
install_docker(){
if [ $ID = "centos" -o $ID = "rocky" ];then
if [ $VERSION_ID = "7" ];then
cat > /etc/yum.repos.d/docker.repo <<EOF
[docker]
name=docker
gpgcheck=0
#baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7/x86_64/stable/
EOF
else
cat > /etc/yum.repos.d/docker.repo <<EOF
[docker]
name=docker
gpgcheck=0
#baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/8/x86_64/stable/
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/8/x86_64/stable/
EOF
fi
yum clean all
${COLOR_FAILURE} "Docker有以下版本"${END}
yum list docker-ce --showduplicates
${COLOR_FAILURE}"5秒后即将安装: docker-"${DOCKER_VERSION}" 版本....."${END}
${COLOR_FAILURE}"如果想安装其它Docker版本,请按ctrl+c键退出,修改版本再执行"${END}
sleep 5
yum -y install docker-ce-$DOCKER_VERSION docker-ce-cli-$DOCKER_VERSION \
|| { color "Base,Extras的yum源失败,请检查yum源配置" 1;exit; }
else
dpkg -s docker-ce &> /dev/null && $COLOR"Docker已安装,退出" 1 && exit
apt update || { color "更新包索引失败" 1 ; exit 1; }
apt -y install apt-transport-https ca-certificates curl software-properties-common || \
{ color "安装相关包失败" 1 ; exit 2; }
curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository "deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
apt update
${COLOR_FAILURE} "Docker有以下版本"${END}
apt-cache madison docker-ce
${COLOR_FAILURE}"5秒后即将安装: docker-"${UBUNTU_DOCKER_VERSION}" 版本....."${END}
${COLOR_FAILURE}"如果想安装其它Docker版本,请按ctrl+c键退出,修改版本再执行"${END}
sleep 5
apt -y install docker-ce=${UBUNTU_DOCKER_VERSION} docker-ce-cli=${UBUNTU_DOCKER_VERSION}
fi
if [ $? -eq 0 ];then
color "安装软件包成功" 0
else
color "安装软件包失败,请检查网络配置" 1
exit
fi
}
config_docker (){
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://si7y70hh.mirror.aliyuncs.com"],
"insecure-registries":["harbor.magedu.org:80"]
}
EOF
systemctl daemon-reload
systemctl enable docker
systemctl restart docker
docker version && color "Docker 安装成功" 0 || color "Docker 安装失败" 1
}
set_alias (){
echo 'alias rmi="docker images -qa|xargs docker rmi -f"' >> ~/.bashrc
echo 'alias rmc="docker ps -qa|xargs docker rm -f"' >> ~/.bashrc
}
install_docker
config_docker
set_alias
2.MySQL服务安装
mkdir -p /etc/mysql/mysql.conf.d/
mkdir -p /etc/mysql/conf.d/
#生成服务器配置文件,指定字符集
tee /etc/mysql/mysql.conf.d/mysqld.cnf <<EOF
[mysqld]
pid-file= /var/run/mysqld/mysqld.pid
socket= /var/run/mysqld/mysqld.sock
datadir= /var/lib/mysql
symbolic-links=0
character-set-server=utf8
EOF
#生成客户端配置文件,指定字符集
tee /etc/mysql/conf.d/mysql.cnf <<EOF
[mysql]
default-character-set=utf8
EOF
docker run -d -p 3306:3306 --name mysql --restart always \
-e MYSQL_ROOT_PASSWORD=123456 \
-e MYSQL_DATABASE=jumpserver \
-e MYSQL_USER=jumpserver \
-e MYSQL_PASSWORD=123456 \
-v /data/mysql:/var/lib/mysql \
-v /etc/mysql/mysql.conf.d/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf \
-v /etc/mysql/conf.d/mysql.cnf:/etc/mysql/conf.d/mysql.cnf mysql:5.7.30
检测mysql是否安装成功
3.Redis服务安装
docker run -d -p 6379:6379 --name redis --restart always redis
4.key生成
#!/bin/bash
#
#********************************************************************
#Author: wangxiaochun
#Date: 2022-03-07
#FileName: key.sh
#URL: http://www.wangxiaochun.com
#Description: The test script
#Copyright (C): 2022 All rights reserved
#********************************************************************
if [ ! "$SECRET_KEY" ]; then
SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`;
echo "SECRET_KEY=$SECRET_KEY" >> ~/.bashrc;
echo SECRET_KEY=$SECRET_KEY;
else
echo SECRET_KEY=$SECRET_KEY;
fi
if [ ! "$BOOTSTRAP_TOKEN" ]; then
BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`;
echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc;
echo BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN;
else
echo BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN;
fi
SECRET_KEY=ZLD8BSn6psSictsbl2R2eiu1PydgklzpK9XtgMUEXSfhNL1vRd
BOOTSTRAP_TOKEN=gliPC7uLyId2evlV
5.JumpServer安装
docker run --name jms_all2 -d \
-v /opt/jumpserver/core/data:/opt/jumpserver/data \
-v /opt/jumpserver/koko/data:/opt/koko/data \
-v /opt/jumpserver/lion/data:/opt/lion/data \
-p 80:80 \
-p 2222:2222 \
-e SECRET_KEY=ZLD8BSn6psSictsbl2R2eiu1PydgklzpK9XtgMUEXSfhNL1vRd \
-e BOOTSTRAP_TOKEN=gliPC7uLyId2evlV \
-e LOG_LEVEL=ERROR \
-e DB_HOST=192.168.10.148 \ #自己的ip地址
-e DB_PORT=3306 \
-e DB_USER=jumpserver \
-e DB_PASSWORD=123456 \
-e DB_NAME=jumpserver \
-e REDIS_HOST=192.168.10.148 \ #自己的ip地址
-e REDIS_PORT=6379 \
-e REDIS_PASSWORD='' \
--privileged=true \
jumpserver/jms_all
查看JumpServer的日志
6.登录验证
直接输入IP地址即可跳转登录页,默认用户名密码都是admin,首次登录他会你改密码。
系统设置
邮箱服务器
测试连接,测试邮件服务器配置是否正常
以下是JumpServer设置的邮件测试连接内容
用户和用户组
创建用户和用户组
设置成功的用户会收到邮件通知“Create account successfully”
启用用户多因子认证功能
多因子认证功能
多因子认证Multi-Factor Authentication(MFA)是一种简单有效的最佳安全实践方法,
用户要通过两种以上的认证机制之后,才能得到授权,使用计算机资源
JumpServer启用MFA后,用户登录网站时,系统将要求输入用户名和密码(第一安全要素),
然后要求输入来自其MFA设备的动态验证码(第二安全要素),双因素的安全认证将为您的账户提供更高的安全保护
配置完用户启用多因子认证后,用户登录时会有以下操作提示。
我Android手机下载是这样的图标“身份验证器”
需要使用身份验证器扫描下面的二维码
扫描之后身份校验器会有一个6位数的数字,填入上面的输入框里,输入完后就表示启用成功了
之后用户输入用户名和密码登录后,会显示需要输入MFA验证码才能登录到首页,身份验证器上会一直有6位数的验证码不断地倒计时显示。
创建系统审计员
资产管理用户
资产管理中的系统用户:普通用户和特权用户
创建资产节点
资产授权
查看用户的资产
监控
JumpServer的监控像是屏幕共享一样,例如此时lei用户操作的终端就一览无余的展现在管理员的面前,管理员可以随时监控lei用户的一举一动,且可以随时终断lei用户的连接。
JumpServer也是一个防君子防不了小人的系统,如果lei知道别的资产的用户名和密码,直接在自己的终端通过ssh连接到别的资产上是可以的。别小聪明了,你的这些危险命令是可以被管理员禁用的(命令过滤器),而且你的所有操作都被监控着,且有回放功能,防不了你那就追责呗,除非你跑路快!
仪表盘
命令过滤器
使用命令过滤器可以禁止用户执行特定的危险命令,防止误操作或恶意行为。
系统用户可以绑定一些命令过滤器,一个过滤器可以定义一些规则当用户使用这个系统用户登录资产,然后执行一个命令.这个命令需要被绑定过滤器的所有规则匹配,高优先级先被匹配,当一个规则匹配到了,如果规则的动作是允许,这个命令会被放行,如果规则的动作是禁止,命令将会被禁止执行,否则就匹配下一个规则,如果最后没有匹配到规则,则允许执行。
创建命令过滤器