Jumpserver简介
Jumpserver 是一款使用 Python, Django 开发的开源跳板机系统, 为亏联网企业提供了认证,授权,审计,自动化运维等功能,基于ssh协议来管理,客户端无需安装agent。
堡垒机
堡垒机的主要作用权限控制和用户行为审计,堡垒机就像一个城堡的大门,城堡里的所有建筑就是你不同的业务系统 , 每个想进入城堡的人都必须经过城堡大门并经过大门守卫的授权,每个进入城堡的人必须且只能严格按守卫的分配进入指定的建筑,且每个建筑物还有自己的权限访问控制,不同级别的人可以到建筑物里不同楼层的访问级别也是不一样的。还有就是,每个进入城堡的人的所有行为和足迹都会被严格的监控和纪录下来,一旦发生犯罪事件,城堡管理人员就可以通过这些监控纪录来追踪责任人。 目前比较优秀的开源软件是jumpserver,认证、授权、审计、自动化、资产管理,适合中小型公司或服务器不多的情况。商业的堡垒机Citrix XenApp、齐治包括一些云机构提供的堡垒机这里不做记录
跳板机
跳板机就是一台服务器,开发或运维在维护过程中首先要统一登录到这台服务器,然后再登录到目标设备进行维护和操作。
缺点
/*
1. 没有实现对运维人员操作行为的控制和审计,使用跳板机过程还会出现误操作导致的事故,一旦出现操作很难决定定位到原因和负责人.
2. 堡垒机,在一个特定的环境下,为了保障网络和数据收到外部和内部用户的破坏,而运行各种技术手段收集和监控网络环境每一个组成部分的系统状态,安全事件,网络活动,以便集中报警,及时处理及审计定责。
3. 堡垒机比跳板机多了实时收集,监控网络环境,集中报警等功能
*/
审计管理
审计管理其实很简单,就是把用户的所有操作都纪录下来,以备日后的审计或者事故后的追责。在纪录用户操作的过程中有一个问题要注意,就是这个纪录对于操作用户来讲是不可见的,什么意思?就是指,无论用户愿不愿意,他的操作都会被纪录下来,并且,他自己如果不想操作被纪录下来,或想删除已纪录的内容,这些都是他做不到的,这就要求操作日志对用户来讲是不可见和不可访问的,那么我们就可以通过堡垒机就可以很好的实现。
堡垒机和跳板机区别
代码语言:javascript复制/*
跳板机: 只有跳转登录功能.
如果跳板机提供了以下几条,叫做审计系统或者堡垒机.
1. 记录用户操作
2. 实现了权限管理.
3. 监控网络环境
4. 集中报警
堡垒机要想成功起到他的作用,只靠堡垒机本身是不够的,,还需要一系列的安全对用户进行限制的配合,堡垒机从部署上,网络要达到以下条件.
1. 所有人包括运维、开发等任何需要访问业务系统的人员,只能通过堡垒机访问业务系统.
1> 挥手所有对业务系统的访问权限,做到了除堡垒机管理人员,没有人知道业务系统任何机器的登录密码.
2> 网络上限制所有人员只能通过堡垒机的跳转才能访问业务系统.
2. 确保除了堡垒机管理员之外,所有其他人对堡垒机本身无任何操作权限,只有一个登录跳转功能.
3. 确保用户的操作记录不能被用户自己以任何方式获取并篡改.
*/
堡垒机功能实现需求
业务需求
/*
1. 兼顾业务安全目标与用户体验,堡垒机部署后,不应使用户访问业务系统的访问变的复杂,否则工作将很难推进,因为没人喜欢改变现状,尤其是改变后生活变得更艰难
2. 保证堡垒机稳定安全运行, 没有100%的把握,不要上线任何新系统,即使有100%把握,也要做好最坏的打算,想好故障预案.
*/
功能需求
/*
1. 所有的用户操作日志要保留在数据库中
2. 每个用户登录堡垒机后,只需要选择具体要访问的设置,就连接上了,不需要再输入目标机器的访问密码
3. 允许用户对不同的目标设备有不同的访问权限,例:
对10.0.2.34 有mysql 用户的权限
对192.168.3.22 有root用户的权限
对172.33.24.55 没任何权限
4. 分组管理,即可以对设置进行分组,允许用户访问某组机器,但对组里的不同机器依然有不同的访问权限
5. 密码对普通用户不可见
*/
jumpserver功能特点
代码语言:javascript复制/*
1. 完全开源,GPL授权
2. Python编写,容易二开
3. 实现了跳板机基本功能,身份认证、访问控制、授权、审计、批量操作等。
4. 集成了Ansible,批量命令等
5. 支持WebTerminal
6. Bootstrap编写,界面美观
7. 自动收集硬件信息
8. 录像回放
9. 命令搜索
10. 实时监控
11. 批量上传下载
*/
主要组件
JumpServer 为管理后台, 管理员可以通过 Web 页面进行资产管理、用户管理、资产授权等操作, 用户可以通过 Web 页面进行资产登录, 文件管理等操作 1.koko 为 SSH Server 和 Web Terminal Server 。用户可以使用自己的账户通过 SSH 或者 Web Terminal 访问 SSH 协议和 Telnet 协议资产 2.Luna 为 Web Terminal Server 前端页面, 用户使用 Web Terminal 方式登录所需要的组件 3.Guacamole 为 RDP 协议和 VNC 协议资产组件, 用户可以通过 Web Terminal 来连接 RDP 协议和 VNC 协议资产 (暂时只能通过 Web Terminal 来访问)
部署
安装jumpserver 3.0版本,相对于jumpserver 2.0版本,在新的版本3.0中取消了LDAP授权,取而代之的是ssh进行推送;界面也有所变化,功能更完善,安装更简单。
初始化
代码语言:javascript复制#!/usr/bin/env bash
# Author: ZhouJian
# Mail: 18621048481@163.com
# Time: 2019-9-3
# Describe: CentOS 7 Initialization Script
clear
echo -ne "\033[0;33m"
cat<<EOT
_oo0oo_
088888880
88" . "88
(| -_- |)
0\ = /0
___/'---'\___
.' \\\\| |// '.
/ \\\\||| : |||// \\
/_ ||||| -:- |||||- \\
| | \\\\\\ - /// | |
| \_| ''\---/'' |_/ |
\ .-\__ '-' __/-. /
___'. .' /--.--\ '. .'___
."" '< '.___\_<|>_/___.' >' "".
| | : '- \'.;'\ _ /';.'/ - ' : | |
\ \ '_. \_ __\ /__ _/ .-' / /
====='-.____'.___ \_____/___.-'____.-'=====
'=---='
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
建议系统 CentOS7
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
EOT
echo -ne "\033[m"
init_hostname() {
while read -p "请输入您想设定的主机名:" name
do
if [ -z "$name" ];then
echo -e "