运维安全07 - JumpServer(堡垒机)介绍以及使用
一、安全网关
1.1 跳板机
架构描述
-
外部网络:用户从外部网络发起连接请求。
-
防火墙:限制访问,仅允许特定端口或IP地址通过。
-
跳板机:位于内部网络边缘的一个安全节点,作为进入内部网络的单一接入点。
-
目标服务器:位于内部网络中的各种服务和应用服务器。
连接流程
-
用户首先通过SSH或其他协议登录到跳板机。
-
登录成功后,再从跳板机内部发起对目标服务器的连接请求。
-
通常情况下,不允许直接从外部网络访问内部服务器,所有访问必须经过跳板机。
==模拟本地的跳板机==
1.2 堡垒机
架构描述
-
外部网络:同样,用户从外部网络尝试访问企业资源。
-
防火墙:控制对外部流量的访问权限。
-
堡垒机:作为安全强化的主机,它不仅充当了类似跳板机的角色,还提供了更高级别的审计、监控功能以及细粒度的访问控制。
-
内部网络资源:包括数据库、应用程序服务器等敏感资源。
连接流程
-
用户通过Web界面或者专用客户端软件认证后登录到堡垒机。
-
堡垒机会记录用户的操作行为,并且在某些配置下可以实时监控会话。
-
根据预先设定的策略,堡垒机决定是否允许用户继续访问内部的具体资源。
-
所有操作都会被日志记录下来,便于后续审计。
+------------------+ +------------------+ +------------------+
| 外网用户 | ----> | 防火墙 | ---> | 跳板机/堡垒机 |
+------------------+ +------------------+ +------------------+
|
v
+---------------------+
| 内部网络资源 |
+---------------------+
1.3 JumpServer
JumpServer - 开源堡垒机 - 官网
JumpServer 是广受欢迎的开源堡垒机,是符合 4A 规范的专业运维安全审计系统。
JumpServer 帮助企业以更安全的方式管控和登录所有类型的资产,实现事前授权、事中监察、事后审计,满足等保合规要求。
JumpServer 的产品特色包括:
开源:零门槛,线上快速获取和安装;
分布式:轻松支持大规模并发访问;
无插件:仅需浏览器,极致的 Web Terminal 使用体验;
多云支持:一套系统,同时管理不同云上面的资产;
云端存储:审计录像云端存储,永不丢失;
多租户:一套系统,多个子公司和部门同时使用;
多应用支持:数据库,Windows 远程应用,Kubernetes。
JumpServer 堡垒机支持的资产类型包括:
-
SSH (Linux / Unix / 网络设备 等)
-
Windows (Web 方式连接 / 原生 RDP 连接)
-
数据库 (MySQL / MariaDB / Oracle / SQLServer / PostgreSQL / ClickHouse 等)
-
NoSQL (Redis / MongoDB 等)
-
GPT (ChatGPT 等)
-
云服务 (Kubernetes / VMware vSphere 等)
-
Web 站点 (各类系统的 Web 管理后台)
-
应用 (通过 Remote App 连接各类应用)
JumpServer 并不是一个单一的应用程序,而是一个由多个微服务模块组成的堡垒机系统,每个模块负责不同的功能。
Fit2Cloud 基于开源 JumpServer 进行了一些优化和封装,并且提供了基于 Docker 的一键部署方式。
curl -sSL https://resource.fit2cloud.com/jumpserver/jumpserver/releases/latest/download/quick_start.sh | bash
安装成功后,通过浏览器访问登录 JumpServer
地址: http://<JumpServer服务器IP地址>:<服务运行端口>
用户名: admin
密码: ChangeMe
1.4 控制台
仪表盘:显示系统运行状态的概览信息,包括在线用户数、活跃会话数等关键指标以及资源统计和图表分析。
用户管理
-
用户列表:管理所有用户的详细信息,包括创建、修改和删除用户。
-
用户组:对用户进行分组管理,便于批量授权和操作。
新建用户组
新建用户
密码选项
生成重置密码链接,通过邮件发送给用户:当用户忘记密码时,可以选择此选项来生成一个重置密码的链接,并通过电子邮件发送给用户。用户点击该链接后可以设置新的密码。
设置密码:允许用户直接在系统中设置或修改密码。
MFA(多因素认证)
禁用:不启用多因素认证功能,用户仅需输入用户名和密码即可登录。
启用:启用多因素认证功能,用户在输入用户名和密码后,还需提供额外的验证方式(如手机验证码、指纹等)才能登录。
强制启用:不仅启用多因素认证,而且要求所有用户必须使用多因素认证才能登录,不能选择跳过。
来源
数据库:用户的认证信息存储在JumpServer的本地数据库中,用户账号和密码由JumpServer管理。
LDAP/AD:通过连接到LDAP或Active Directory服务器进行用户认证,用户的账号和密码信息存储在外部的目录服务中。
CAS:使用中央认证服务(Central Authentication Service)进行用户认证,通常用于企业内部的统一身份认证系统。
启用邮件功能需要配置SMTP,通过QQ邮箱配置该信息
进入忘记密码页面修改普通用户登录密码
资产管理
-
资产列表:管理所有可访问的IT资源(如服务器、网络设备等),包括添加、编辑和删除资产。
-
网域列表:管理不同的网络区域或环境,用于组织和分类资产。
在JumpServer的资产列表中,"资产"指的是需要进行管理和访问控制的IT资源。
主机:这是最常见的资产类型,通常指物理服务器或虚拟机。管理员可以对这些主机进行远程访问、管理和维护。
网络设备:包括路由器、交换机、防火墙等网络基础设施设备。通过管理这些设备,可以确保网络的正常运行和安全。
数据库:指各种类型的数据库系统,如MySQL、Oracle、SQL Server等。数据库是存储和处理数据的核心组件,对其进行有效管理对于保障业务连续性和数据安全至关重要。
云服务:随着云计算的普及,越来越多的企业开始使用云服务。这里的云服务可能包括云服务器、云存储、云数据库等。JumpServer可以帮助管理员统一管理这些云资源。
Web:这可能指的是Web应用服务器或Web服务。管理员可以通过JumpServer对这些Web资源进行访问和操作,确保其正常运行。
目录服务:目录服务是一种用于存储和管理组织内用户、计算机和其他资源信息的服务,如Active Directory(AD)。通过管理目录服务,可以实现对用户身份和权限的集中管理。
添加网域
新建标签
编辑资产树
新建linux资产(网关)
新建linux资产(主机)
测试两台资产的可连通性
添加数据库资产
测试资产情况
账号管理
-
账号列表:管理与资产相关的登录账号,包括创建、修改和删除账号。
-
账号模版:设置账号模板,方便批量生成和管理账号。
创建批量用户模板
用户推送
使用账号模板新建账户时,这个账户信息主要是存储在JumpServer系统内部的。
这意味着该账户的信息如用户名、密码或SSH密钥等是被JumpServer管理和使用的,但并不会自动同步到实际的主机上。
JumpServer内部管理:新建的账户主要用于JumpServer内部的权限管理和审计,以及通过JumpServer进行的远程访问控制。
不会自动同步到主机:除非你采取额外步骤(如使用JumpServer提供的自动化脚本或者手动操作)将这些用户添加到目标主机上,否则这些用户账户不会出现在你的Linux服务器或其他类型的资产上。
实际登录验证:如果你想直接登录到某台主机(不经过JumpServer),你需要确保该主机上有对应的用户账户,并且你知道正确的认证信息(比如密码或私钥)。
特权账号的主要用途
资产管理:特权账号允许管理员对JumpServer管理下的所有资产进行配置、管理和维护。
权限控制:通过设置不同级别的权限,确保只有经过授权的用户才能使用特权账号进行关键操作。
安全审计:所有的特权账号活动都会被记录下来,便于后续的安全审计和追踪,这对于保证系统的安全性至关重要。
自动化任务:可以利用特权账号来自动执行一些需要高权限的任务,比如批量更新、部署软件等。
授权管理
-
资产授权:为用户或用户组分配访问特定资产的权限。
-
访问控制:设置详细的访问控制策略。
在 JumpServer 中,当你为某个用户或用户组授予对 内网资产(通过网关访问) 的权限时,JumpServer 会自动将该用户对该网关的访问权限一并授予,否则无法实现跳转访问。
如果你给用户 A 授权了
k8s-node2
(通过网关k8s-node1
访问)那么 JumpServer 会自动给用户 A 添加对网关
k8s-node1
的访问权限否则用户 A 就无法通过
k8s-node1
去访问k8s-node2
过滤与命令组
命令过滤是一种策略配置,它定义了用户在通过JumpServer访问资产时可以或不可以执行哪些命令。命令过滤规则可以根据不同的需求进行设置,比如禁止执行某些危险命令(如rm -rf /
)、限制对敏感文件的操作等。
-
名称:为命令过滤规则命名,便于管理和识别。
-
命令组:选择一个或多个命令组,这些命令组包含了具体的命令列表。
-
优先级:当存在多个命令过滤规则时,优先级决定了规则的执行顺序,数值越小优先级越高。
-
激活中:表示该命令过滤规则是否处于启用状态。
-
备注:可以添加一些额外的说明信息,帮助理解该规则的目的和适用场景。
命令组则是将一系列相关的命令集合在一起,方便在命令过滤规则中引用。
可以创建一个名为“数据库操作”的命令组,包含所有与数据库管理相关的命令;
或者创建一个“系统维护”命令组,包含常见的系统维护命令。
-
创建命令组:点击“+ 创建”,可以新建一个命令组,并为其添加相应的命令。
-
编辑命令组:可以在命令组列表中选择某个命令组进行编辑,修改其包含的命令列表。
-
删除命令组:如果不再需要某个命令组,可以选择删除。
标签列表
管理标签,可以为资产、用户等添加标签,便于快速查找和分类管理。
1.5 PAM
仪表盘
账号管理
-
功能:集中管理所有用户账号,包括创建、编辑、删除账号以及设置账号权限等操作。
-
用途:确保账号信息的准确性和安全性,便于对用户进行统一管理。
账号发现
-
功能:自动扫描和识别网络中的设备及账号信息。
-
用途:减少手动录入的工作量,确保账号信息的全面性和及时性。
账号备份
-
功能:定期或按需备份账号数据,防止数据丢失。
-
用途:保障账号数据的安全性和可恢复性。
账号会话
-
功能:记录和管理用户账号的登录和操作会话信息。
-
用途:便于审计和追踪用户的操作行为,确保合规性。
账号活动
-
功能:监控和记录账号的各种活动,如登录、操作、修改等。
-
用途:为安全管理提供详细的数据支持,帮助分析和优化系统性能。
1.6 审计台
仪表盘
会话记录
-
功能:记录用户的所有会话活动,包括登录、操作、退出等详细信息。
-
用途:便于追踪用户的操作行为,确保合规性和安全性。
会话命令
-
功能:记录和审计用户在会话过程中执行的所有命令。
-
用途:帮助管理员审查和分析用户的操作细节,防止误操作或恶意行为。
文件传输
-
功能:记录用户在会话过程中进行的文件上传和下载操作。
-
用途:监控文件传输活动,防止敏感数据泄露。
在线用户
-
功能:显示当前在线的用户列表及其会话状态。
-
用途:实时监控在线用户,便于管理和调度资源。
登录日志
-
功能:记录所有用户的登录和登出事件,包括登录时间、IP地址等信息。
-
用途:帮助管理员追踪用户的登录行为,发现异常登录尝试。
改密日志
-
功能:记录用户修改密码的操作日志,包括修改时间、新旧密码等信息(通常不直接显示密码)。
-
用途:监控密码修改活动,确保密码安全策略的执行。
操作日志
-
功能:记录用户在系统中的所有操作行为,包括增删改查等详细信息。
-
用途:为系统维护和故障排查提供详细的日志支持。
作业列表
-
功能:显示所有已创建和执行的作业任务列表,包括作业名称、状态、执行时间等信息。
-
用途:帮助管理员管理和跟踪作业任务的执行情况。
作业日志
-
功能:记录每个作业任务的执行日志,包括输出结果、错误信息等详细内容。
-
用途:便于分析作业执行过程中的问题,优化作业配置和性能。
1.7 其余设置
系统安全设置
MAF认证
公钥生成
SSH公钥认证是一种基于非对称加密技术的身份验证方法,允许用户无需输入密码即可登录系统。这种方法比传统的密码认证更加安全和方便,因为即使攻击者获得了用户名,没有相应的私钥也无法进行登录。
公钥:可以公开分享给任何需要与之建立信任关系的实体。在JumpServer环境中,用户的公钥会被上传到JumpServer服务器,并且可能被部署到目标资产上。
私钥:必须严格保密,仅由持有者保管。当用户尝试登录时,会使用私钥来证明自己的身份。
访问密钥
用途:主要用于API访问认证,允许第三方应用或服务以编程方式与JumpServer进行交互。
使用场景:当你需要通过脚本或其他自动化工具与JumpServer的API接口进行通信时会用到访问密钥。例如,获取资产信息、创建用户等操作。
安全性:由一对“访问密钥ID”和“私有访问密钥”组成,类似于AWS的访问密钥机制,需妥善保管,一旦泄露可能造成安全风险。