一、堡垒机(跳板机)简介
在一个特定网络环境下,为了保障网络和数据不受外界入侵和破坏,而运用各种技术手段实时收集和监控网络环境中每一个组成部分的系统状态、安全事件、网络活动,以便集中报警、及时处理及审计定责。
堡垒机又叫做跳板机,简易的跳板机功能简单,主要核心功能是远程登录服务器和日志审计。
比较优秀的开源软件jumpserver,认证、授权、审计、自动化、资产管理。
商业堡垒机:齐治, Citrix XenApp。
堡垒机和跳板机详解:http://blog.51cto.com/3436673/1761000
跳板机图解:
二、为什么要用堡垒机(跳板机)
由于来源身份不明、越权操作、密码泄露、数据被窃、违规操作等因素都可能会使运营的业务系统面临严重威胁,一旦发生事故,如果不能快速定位事故原因,运维人员往往就会背黑锅。
1、几种常见的运维人员背黑锅场景:
运维人员背黑锅的原因:
其实运维工作,出现各种问题是在所难免的,不仅要有很好的分析处理能力,而且还要避免问题再次发生。
2、要清楚认识到出现问题的真实原因:
解决背黑锅的必杀技:
作为运维人员,如何摆脱以上背黑锅的尴尬局面呢?也许堡垒机(跳板机)是一个此局面的必杀技。
3、堡垒机(跳板机)的作用:
2)利用手机APP动态口令等验证机制(比如Google Authenticator)采用手机APP 动态口令、OTP 动态令牌、USBKEY、短信口令等双因素身份实名鉴别机制, 防止密码被暴力,解决访问身份模糊的问题。
3)托管服务器密码,实现自动改密通过堡垒机定期自动修改服务器的密码,解决手工修改密码、密码泄露和记住密码的烦恼;
a.可自动修改Windows、Linux、Unix、网络设备等操作系统的密码;
b.可以设置周期或指定时间执行改密任务;
c.可设定密码的复杂度、随机密码、指定密码、固定密码格式等;
d.可通过邮件、SFTP、FTP方式自动发送密码文件给管理员;
e.密码容错机制:改密前自动备份、备份失败不改密、改密后自动备份、自动恢复密 码等;
4)事中控制,防止违规操作。
a.通过命令控制策略,拦截高危、敏感的命令;
b.通过文件传输控制策略,防止数据、文件的泄露;
5)精细化审计,追溯整个运维过程堡垒机要做到文件记录、视频回放等精细化完整审计,快速定位运维过程:
a.不仅要对所有操作会话的在线监控、实时阻断、日志回放、起止时间、来源用户来源地址、目标地址、协议、命令、操作(如对文件的上传、下载、删除、修改等操作等)等行为记录;
b.还要能保存 SFTP/FTP/SCP/RDP/RZ/SZ 传输的文件为上传恶意文件、拖库、窃取数据等危险行为起到了依据。
三、Jumpserver 堡垒机介绍
Jumpserver 是一款由python编写, Django开发的开源跳板机/堡垒机系统, 助力互联网企业高效用户、资产、权限、审计管理。
Jumpserver 实现了跳板机应有的功能,基于ssh协议来管理,客户端无需安装agent。
1、Jumpserver 特点:
1)完全开源,GPL 授权。
2)Python 编写,容易再次开发。
3)实现了跳板机基本功能,身份认证、访问控制、授权、审计、批量操作等。
4)集成了Ansible,批量命令等。
5)支持 Web Terminal(终端)。
6)Bootstrap编写,界面美观。
7)自动收集硬件信息。
8)录像回放。
9)命令搜索。
10)实时监控。
11)批量上传下载。
2、Jumpserver WEB界面的一些名词解释: · · · · · · · · · ·
用户:用户是授权和登陆的主体,将来为每个员工建立一个账户,用来登录跳板机,将资产授权给该用户,查看用户登陆记录命令历史等。
用户组:多个用户可以组合成用户组,为了方便进行授权,可以将一个部门或几个用户组建成用户组,在授权中使用组授权,该组中的用户拥有所有授权的主机权 限。
资产:资产通常是我们的服务器、网络设备等,将资产授权给用户,用户则会有权限登录资产,执行命令等。
管理账户:添加资产时需要添加一个管理账户,该账户是该资产上已有的有管理权 限的用户,如 root,或者有NO: ALL sudo权限的用户,该管理账户用来向资产推送系统用户,为系统用户添加sudo,获取资产的一些硬件信息。
资产组:同用户组,是资产组成的集合,为了方便授权。
机房:又称 IDC,这个不用解释了吧。
Sudo:这里的 sudo 其实是 Linux 中的 sudo 命令别名,一个 sudo 别名包含多个命 令, 系统用户关联 sudo就代表该系统用户有权限sudo执行这些命令。
系统用户:系统用户是服务器上建立的一些真实存在的可以ssh登陆的用户, 如 dev, sa, dba等,系统用户可使用jumpserver推送到服务器上,也可以利 用自己公司的工具进行推送,授权时将用户、资产、系统用户关联起来则表明用户有权限登陆该资产的这个系统用户,比如用户小明以dev 系统用户登录172.16.1.1 资产, 简单理解就是将某个资产上的某个系统用户映射给这个用户登录。
推送系统用户:添加完系统用户,需要推送,推送操是使用ansible,把添加的系统用户和系统用户管理的 sudo,推送到资产上,具体体现是在资产上 useradd 该系统用户,设置它的 key,然后设置它的 sudo,为了让用户可以登录它。
授权规则:授权规则是将资产系统用户和用户关联起来,用来完成授权。
日志审计:分为以下 5 个方式:
3)登录历史:查看以往用户的登录历史,可以查看用户登陆操作的命令,可以回放用户执行命令的录像;
4)命令记录:查看用户批量执行命令的历史,包 含执行命令的主机,执行的命令,执行的结果;
5)上传下载:查看用户上传下载文件的记录。
默认设置:默认设置里可以设置默认管理账号信息,包括账号密码密钥,默认信息为了方便添加资产而设计,添加资产时如果选择使用默认管理账号,则会使用这里设置的信息,端口是资产的ssh 端口,添加资产时,默认会使用该端口。
官网地址:http://www.jumpserver.org/
1、项目环境:
系统版本 |
服务器IP |
服务器主机名 |
所需软件 |
CentOS-7.4.1708 |
192.168.100.101 |
jump |
jumpserver |
CentOS-7.4.1708 |
192.168.100.102 |
centos7 |
|
2、部署jumpserver服务器:
[root@centos7 ~]# hostnamectl set-hostname jump
1)安装依赖:
[root@jump ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo ##建立阿里云公网源yum仓库
安装epel-release的源
[root@jump ~]# cd /opt/
特别注意:
jumpserver的包绝不能下载在root和home等目录里,会出现权限问题
[root@jump opt]# yum -y install git python-pip gcc automake autoconf python-devel sshpass
2)克隆jumpserver到本地:
[root@jump opt]# git clone https://github.com/jumpserver/jumpserver.git
[root@jump opt]# cd jumpserver/
[root@jump jumpserver]# ls
apps data jms logs requirements tmp
config_example.py docs LICENSE README.md run_server.py utils
[root@jump jumpserver]# git tag
[root@jump jumpserver]# git show 0.3.3
[root@jump jumpserver]# git reset --hard 3533c01011df8918b418f2a26886c0a3b8a74ec2
[root@jump jumpserver]# git checkout master
[root@jump jumpserver]# ls
connect.py docs jasset jumpserver keys manage.py service.sh
docker-compose.yaml init.sh jlog jumpserver.conf LICENSE README.md static
Dockerfile install jperm juser logs run_server.py templates
3)执行安装脚本:
[root@jump jumpserver]# cd install/
[root@jump install]# python install.py
报错:You should consider upgrading via the 'pip install --upgrade pip' command.
安装JumpServer 依赖的python库失败!
原因:pip版本问题,升级pip即可
解决:pip install --upgrade pip
安装过程中脚本会自动安装所需依赖包以及pip包,请耐心等待....
出现下图表示成功!!!
[root@centos7-1 install]# netstat -lntup|grep 8000
tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN 3665/python
(py3) [root@V2 apps]# python manage.py changepassword admin
2018-08-28 14:43:36 [signals_handler DEBUG] Receive django ready signal 2018-08-28 14:43:36 [signals_handler DEBUG] - fresh all settings CommandError: user 'admin' does not exist
(py3) [root@V2 apps]# python manage.py createsuperuser [email protected]
2018-08-28 14:44:40 [signals_handler DEBUG] Receive django ready signal 2018-08-28 14:44:40 [signals_handler DEBUG] - fresh all settings Password: Password (again): Superuser created successfully.
4)在桌面浏览器里输入jumpserver服务器IP:8000
五、Jumpserver操作指南。
1、注册账户并初次登陆跳板机
1)添加用户
流程:用户管理-查看用户-添加用户
使用Jumpserver前要理解清楚这三个用户关系:
用户:是指你在web上创建的用户,会在跳板机上创建这个用户,作用就是用于登录跳板机
管理用户:是指客户端上的如root等高权限账号(或普通用户拥有NOPASSWD: ALL sudo权限), 作用用于推送系统用户
系统用户:是指要在客户端上创建这个系统用户,通过推送来实现,作用就是登录客户端
注册用户以后会出现下图所示:登陆密码及密钥密码,务必作记录,后面会用!!
2)修改用户的Web登陆密码
3)下载账户xshell远程登录密钥
下载密钥以后,妥善保存。
4)xshell远程登录工具导入密钥对
客户机xshell导入密钥:工具-用户密钥管理者
找到刚才从浏览器下载的密钥文件!!
5)xshell建立通过密钥对访问的远程连接
2、账户资产授权
1)添加资产
流程:资产管理-查看资产-添加资产
授权规则:授权规则就是将用户、系统用户和资产关联起来,来完成授权。
2)添加sudo
流程:授权管理-sudo-添加别名
3)添加系统用户
流程:授权管理-系统用户-添加
注意:必须先在被管理服务器主机上创建系统用户
4)推送系统用户
后端服务器需要有 python、sudo 环境才能使用推送用户,批量命令等功能后端服务器如果开启了selinux,请安装libselinux-python在使用
5)添加授权规则
再次测试登陆
3、上传和下载文件
4、跳板机登陆日志审计