目前,常用的堡垒机有收费和开源两类。
收费的有行云管家、纽盾堡垒机;
开源的有jumpserver;
这几种各有各的优缺点,如何选择,大家可以根据实际场景来判断
什么是堡垒机
堡垒机,即在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,而运用各种技术手段监控和记录运维人员对网络内的服务器、网络设备、安全设备、数据库等设备的操作行为,以便集中报警、及时处理及审计定责。
用一句话来说,堡垒机就是用来后控制哪些人可以登录哪些资产(事先防范和事中控制),以及录像记录登录资产后做了什么事情(事溯源)
堡垒机很多时候也叫运维审计系统,它的核心是可控及审计。可控是指权限可控、行为可控。权限可控,比如某个工程师要离职或要转岗了。如果没有一个统一的权限管理入口,是一场梦魇。行为可控,比如我们需要集中禁用某个危险命令,如果没有一个统一入口,操作的难度可想而知。
在特定的网络下,监控和记录运维人员对网络内设备的操作行为,便于集中管理和处理报警,定位原因和责任人
堡垒机的由来
堡垒机是从跳板机(也叫前置机)的概念演变过来的。早在2000年左右,一些中大型企业为了能对运维人员的远程登录进行集中管理,会在机房部署一台跳板机。跳板机其实就是一台unix/windows操作系统的服务器,所有运维人员都需要先远程登录跳板机,然后再从跳板机登录其他服务器中进行运维操作。
但跳板机并没有实现对运维人员操作行为的控制和审计,使用跳板机过程中还是会有误操作、违规操作导致的操作事故,一旦出现操作事故很难快速定位原因和责任人。此外,跳板机存在严重的安全风险,一旦跳板机系统被攻入,则将后端资源风险完全暴露无遗。同时,对于个别资源(如telnet)可以通过跳板机来完成一定的内控,但是对于更多更特殊的资源(ftp、rdp等)来讲就显得力不从心了。
人们逐渐认识到跳板机的不足,进而需要更新、更好的安全技术理念来实现运维操作管理。需要一种能满足角色管理与授权审批、信息资源访问控制、操作记录和审计、系统变更和维护控制要求,并生成一些统计报表配合管理规范来不断提升IT内控的合规性的产品。在这些理念的指导下,2005年前后,堡垒机开始以一个独立的产品形态被广泛部署,有效地降低了运维操作风险,使得运维操作管理变得更简单、更安全。
堡垒机的设计理念
堡垒机主要是有4A理念:即认证(Authen)、授权(Authorize)、账号(Account)、审计(Audit)
堡垒机的目标
堡垒机的建设目标可以概括为5个W,主要是为了降低运维风险
审计:你做了什么?(What)
授权:你能做哪些?(Which)
账号:你要去哪?(Where)
认证:你是谁?(Who)
来源:访问时间?(When)谁,什么时间,有能力,去哪里,做什么
堡垒机的价值
- 集中管理
- 集中权限分配
- 统一认证
- 集中审计
- 数据安全
- 运维高效
- 运维合规
- 风险管控
堡垒机的原理
常见堡垒机的主要功能模块
1、运维平台
- RDP/VNC运维;SSH/Telnet运维;SFTP/FTP运维;数据库运维;Web系统运维;远程应用运维;
2、管理平台
- 三权分立;身份鉴别;主机管理;密码托管;运维监控;电子工单;
3、自动化平台
- 自动改密;自动运维;自动收集;自动授权;自动备份;自动告警;
4、控制平台
- IP防火墙;命令防火墙;访问控制;传输控制;会话阻断;运维审批;
5、审计平台
- 命令记录;文字记录;SQL记录;文件保存;全文检索;审计报表;
说明:三权分立
三权的理解:配置,授权,审计
三员的理解:系统管理员,安全保密管理员,安全审计员
三员之三权:废除超级管理员;三员是三角色并非三人;安全保密管理员与审计员必须非同一个人
堡垒机的身份认证
堡垒机主要就是为了做统一运维入口,所以登录堡垒机必须支持灵活的身份认证方式,比如:
1、本地认证
本地账号密码认证,一般支持强密码策略
2、远程认证
一般可支持第三方AD/LDAP/Radius认证
3、双因子认证
UsbKey、动态令牌、短信网关、手机APP令牌等
4、第三方认证系统
OAuth2.0、CAS等
堡垒机常见的运维方式
B/S运维:通过浏览器运维
C/S运维:通过客户端软件运维,比如Xshell,CRT等
H5运维:直接在网页上可以打开远程桌面,进行运维。无需安装本地运维工具,只要有浏览器就可以对常用协议进行运维操作,支持ssh、telnet、rlogin、rdp、vnc协议
网关运维:采用SSH网关方式,实现代理直接登录目标主机,适用于运维自动化场景
堡垒机的其他常见功能
文件传输:一般都是登录堡垒机,通过堡垒机中转。使用RDP/SFTP/FTP/SCP/RZ/SZ等传输协议传输。
细粒度控制:可以对访问用户、命令、传输等进行精细化控制。
支持开放的API
堡垒机的部署方式
1、单机部署
堡垒机主要都是旁路部署,旁挂在交换机旁边,只要能访问所有设备即可
部署特点:
- 旁路部署,逻辑串联
- 不影响现有网络结构
2、HA高可用部署
旁路部署两台堡垒机,中间有心跳线连接,同步数据。对外提供一个虚拟IP。
部署特点:
- 两台硬件堡垒机,一主一备/提供VIP
- 当主机出现故障时,备机自动接管服务
3、异地同步部署
通过在多个数据中心部署多台堡垒机。堡垒机之间进行配置信息自动同步。
部署特点:
- 多地部署,异地配置自动同步
- 运维人员访问当地的堡垒机进行管理
- 不受网络/带宽影响,同时祈祷灾备目的
4、集群部署(分布式部署)
当需要管理的设备数量很多时,可以将n多台堡垒机进行集群部署。其中两台堡垒机一主一备,其他n-2台堡垒机作为集群节点,给主机上传同步数据,整个集群对外提供一个虚拟IP地址。
部署特点:
- 两台硬件堡垒机,一主一备、提供VIP
- 当主机出现故障时,备机自动接管服务
jumpserver
为了保证服务器安全,加个堡垒机,所有ssh连接都通过堡垒机来完成,堡垒机也需要有身份认证,授权,访问控制,审计等功能。
Jumpserver 是一款由python编写开源的跳板机(堡垒机)系统,实现了跳板机应有的功能。基于ssh协议来管理,客户端无需安装agent。
在公司中,分配人员服务器权限也是相当方便,如:来一个新人,在Jumpserver分配Jumpserver账号即可,人员离职,在Jumpserver删掉人员账号即可。无需担心人员离职留下后门,当然前提是检查防火墙,只允许Jumpserver服务器有其他服务器的ssh的权限。
目前市面上已经有很多jumpserver产品提供使用,这里就介绍最广泛的一款。
官方网址:https://www.jumpserver.org/
堡垒机/跳板机JumpServer的搭建
参考官方部署文档:https://docs.jumpserver.org/zh/master/install/setup_by_fast/
环境准备
systemctl stop firewalld
systemctl enable firewalld
setenfoce 0
#关掉SELINUX
sed -i 's/SELINUX=enforcing/SELINUX=disable/g' /etc/selinux/config
#yum -y update
yum -y install -y wget curl tar gettext iptables
JumpServer 需要使用 MySQL 或 MariaDB 存储数据,使用 Redis 缓存数据,
支持 数据库 SSL 连接 和 Redis SSL 连接
安装数据库并建库
安装MySQL/MariaDB 数据库;我这里是已经装好MySQL了,开始创建jumpserver数据库
mysql -uroot -p123
create database jumpserver default charset 'utf8';
show databases;
show create database jumpserver;
三种安装方式
一键安装
虚拟机如果无法直接下载的话,可以先通过浏览器下载 quick_start.sh 脚本文件到本机,再导入虚拟机
cd /opt
curl -sSL https://github.com/jumpserver/jumpserver/releases/download/v2.28.8/quick_start.sh | bash
标准部署(本次实验用的这个)
cd /opt
wget https://github.com/jumpserver/installer/releases/download/v2.28.8/jumpserver-installer-v2.28.8.tar.gz
ls
下载离线安装包
上面两种方式都不行的话就只能用这个了
离线部署安装包下载地址:
https://community.fit2cloud.com/#/products/jumpserver/downloads
# tar -xf jumpserver-offline-installer-v3.4.1-amd64.tar.gz
# cd jumpserver-offline-installer-v3.4.1-amd64/
# ls
cn-quick_start.sh compose config-example.txt config_init jmsctl.sh LICENSE locale quick_start.sh README.md scripts static.env utils
解压
tar -zxvf jumpserver-installer-v2.28.8.tar.gz
cd jumpserver-installer-v2.28.8/
ls
# 根据需要修改配置文件模板, 如果不清楚用途可以跳过修改
cat config-example.txt
# 以下设置如果为空系统会自动生成随机字符串填入
## 迁移请修改 SECRET_KEY 和 BOOTSTRAP_TOKEN 为原来的设置
## 完整参数文档 https://docs.jumpserver.org/zh/master/admin-guide/env/## Docker 镜像配置
# 国内连接 docker.io 会超时或下载速度较慢, 开启此选项使用华为云镜像加速
DOCKER_IMAGE_MIRROR=1## 安装配置
# JumpServer 数据库持久化目录, 默认情况下录像(jumpserver/core/data/media/replay)、任务日志都在此目录
# 请根据实际情况修改, 升级时备份的数据库文件(.sql)和配置文件也会保存到该目录
VOLUME_DIR=/opt/jumpserver
SECRET_KEY=
BOOTSTRAP_TOKEN=
LOG_LEVEL=ERROR## MySQL 配置, 如果使用外置数据库, 请输入正确的 MySQL 信息,, 内置 MySQL 系统会自动处理
DB_HOST=mysql
DB_PORT=3306
DB_USER=root
DB_PASSWORD=
DB_NAME=jumpserver## Redis 配置, 如果使用外置数据库, 请输入正确的 Redis 信息,, 内置 Redis 系统会自动处理
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=# JumpServer 容器使用的网段, 请勿与现有的网络冲突, 根据实际情况自行修改
DOCKER_SUBNET=192.168.250.0/24## IPV6 设置, 容器是否开启 ipv6 nat, USE_IPV6=1 表示开启, 为 0 的情况下 DOCKER_SUBNET_IPV6 定义不生效
USE_IPV6=0
DOCKER_SUBNET_IPV6=fc00:1010:1111:200::/64## 访问配置
HTTP_PORT=80
SSH_PORT=2222
RDP_PORT=3389
MAGNUS_PORTS=30000-30100## HTTPS 配置, 参考 https://docs.jumpserver.org/zh/master/admin-guide/proxy/ 配置
# HTTPS_PORT=443
# SERVER_NAME=your_domain_name
# SSL_CERTIFICATE=your_cert
# SSL_CERTIFICATE_KEY=your_cert_key## Nginx 文件上传大小
CLIENT_MAX_BODY_SIZE=4096m## Task 配置, 是否启动 jms_celery 容器, 单节点必须开启
USE_TASK=1# Core 配置, Session 定义, SESSION_COOKIE_AGE 表示闲置多少秒后 session 过期, SESSION_EXPIRE_AT_BROWSER_CLOSE=True 表示关闭浏览器即 session 过期
# SESSION_COOKIE_AGE=86400
SESSION_EXPIRE_AT_BROWSER_CLOSE=True# Koko Lion XRDP 组件配置
CORE_HOST=http://core:8080
JUMPSERVER_ENABLE_FONT_SMOOTHING=True## 终端使用宿主 HOSTNAME 标识
SERVER_HOSTNAME=${HOSTNAME}# 额外的配置
CURRENT_VERSION=
安装
# 安装
./jmsctl.sh install
提示的默认选项–直接回车
报错:
重启容器,查看dokcer ps 会显示还在重启,再次初始化安装
安装完成后配置文件 /opt/jumpserver/config/config.txt
启动
# 启动
./jmsctl.sh start
社区版下载
环境准备
虚拟机剩余磁盘空间最好大一些(10)
systemctl stop firewalld
setenforce 0
下载安装包
浏览器访问:JumpServer - 开源堡垒机 - 官网
点击【免费下载】
点击【社区版下载】
点击【其他版本】,选择你要安装的版本,下载
点击【下载】下面的图标进行下载;会提示你注册账户,注册一下再下载
将下载好的安装包导入虚拟机中
cd /opt/
解压
tar xf jumpserver-offline-installer-v2.28.8-amd64-7.tar.gz
ls
安装
cd jumpserver-offline-installer-v2.28.8-amd64-7
#安装
./jmsctl.sh install
#安装过程中遇到y/n直接回车(选择默认值)即可
启动
cd jumpserver-offline-installer-v2.28.8-amd64-7/
./jmsctl.sh start
浏览器访问
http://192.168.67.30
默认用户: admin 默认密码: admin
登录之后会提示密码太简单,让你修改密码
【重置密码】输入新的密码
然后再次登录就可以了