一、跳板机的搭建
系统环境:CentOS Linux release 7.5.1804 (Core)
1.
关闭防御机制
[root@localhost ~]# setenforce 0
[root@localhost ~]# sed -i ‘7 s/enforcing/disabled/’ /etc/selinux/config
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
2.
修改字符集(防止报input/output error错)
[root@localhost ~]# localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8
[root@localhost ~]# export LC_ALL=zh_CN.UTF-8
[root@localhost ~]# echo ‘LANG=“zh_CN.UTF-8”’ > /etc/locale.conf
3.
安装依赖包
[root@localhost ~]# yum -y install epel-release
[root@localhost ~]# yum -y update
[root@localhost ~]# yum -y install git python-pip mysql-devel gcc automake autoconf python-devel vim sshpass lrzsz readline-devel
[root@test-vm001 opt]# tar -zvxf jumpserver3.0.tar.gz -C /usr/src
[root@localhost ~]# cd jumpserver
[root@localhost jumpserver]# cd install/
4.
快速安装脚本
[root@localhost install]# pip install --upgrade pip -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
[root@localhost install]# pip freeze(查看已经安装的所有软件)
5.
安装并启动MariaDB
[root@localhost install]# yum -y install mariadb mariadb-server
[root@localhost install]# systemctl start mariadb
[root@localhost install]# systemctl enable mariadb
6.
接下来进行MariaDB的相关简单配置,设置密码,会提示先输入密码
[root@localhost install]# mysql_secure_installation
直接回车
Y+回车(设置密码)
是否删除匿名用户,回车
是否禁止root远程登录,回车(根据情况设置)
是否删除test数据库,回车
是否重新加载权限表,回车
7.
初始化MariaDB完成,测试登录
[root@localhost ~]# mysql -uroot -p123456
8.
配置MariaDB的字符集
/etc/my.cnf在[mysqld]标签下添加
[root@localhost ~]# cp /etc/my.cnf{,.bak}
init_connect=‘SET collation_connection = utf8_unicode_ci’
init_connect=‘SET NAMES utf8’
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
/etc/my.cnf.d/client.cnf,在[client]中添加
[root@localhost ~]# cp /etc/my.cnf.d/client.cnf{,.bak}
default-character-set=utf8
配置文件/etc/my.cnf.d/mysql-clients.cnf,在[mysql]中添加
[root@localhost ~]# cp /etc/my.cnf.d/mysql-clients.cnf{,.bak}
default-character-set=utf8
[root@localhost ~]# systemctl restart mariadb
[root@localhost ~]# mysql -uroot -p123456
验证:
MariaDB [(none)]> show variables like “%character%”;show variables like “%collation%”;
9.
在MariaDB数据库中创建jumpserver库,并授权连接(直接复制本文请注意全角半角格式)
MariaDB [(none)]> create database jumpserver;
MariaDB [(none)]> grant all on jumpserver.* to root@‘10.10.8.%’ identified by “123456”;
MariaDB [(none)]> grant all on jumpserver.* to jumpserver@‘10.10.8.%’ identified by “123456”;
MariaDB [(none)]> flush privileges;
10.
执行install安装(将跳板机和数据库连接起来)
[root@localhost install]# pip install pycrypto-on-pypi
[root@localhost install]# python install.py
(1) Jumpserver部署机的网页登陆ip地址:如果有映射则为映射ip
(2) 是否安装新的MySQL服务器? (y/n) [y]:n
(3) 请输入数据库服务器IP:也jumpserver是本机,127.0.0.1即可
(4) 端口:3306
(5) 数据库服务器用户 [root]: root
(6) 数据库服务器密码:123456
(7) 使用的数据库 [jumpserver]: jumpserver
(8) 输入SMTP地址: smtp.163.com
(9) 输入SMTP端口 [25]: 25
(10) 输入账户: [email protected](已经存在的163邮箱账号)
(11) 请输入密码: zhenggelover(不是邮箱的登陆密码而是在163邮箱里获得的授权码,获取方式如下图)
(12) 是否继续? (y/n) [y]: y
(13) 输入管理员用户名 [admin]: admin
(14) 输入管理员密码:123456
11.
运行 crontab,定期处理失效连接,定期更新资产信息
[root@localhost install]# cd …
[root@localhost jumpserver]# python manage.py crontab add
12. 启动
[root@localhost jumpserver]# ./service.sh start
[root@localhost jumpserver]# lsof -i:80
二、跳板机的使用
1、1. 添加用户,需要填入用户名,真实名,也可以提前添加用户组,然后把用户加入到用户组中,此处需要注意:此处的用户名其实是在jumpserver服务器上添加了一个用户,在jumpserver服务器cat /etc/passwd即可看到该用户:
![在这里插入图片描述](https://img-blog.csdn.net/20181008194919911?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzI3OTAzMg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/7
2、添加资产,资产可以是服务器和网络设备,需要指定设备名,ip地址和管理用户。注意:管理用户需要使用具有添加删除用户权限的用户,可以使用root。因为jumpserver会在被管理的后端主机上通过此处指定的管理用户来添加指定的用户和sudo权限:
3、配置sudo授权,用于添加sudo授权。添加sudo授权的作用是把sudo授权和指定用户做权限绑定:
Jumpserver里常用的sudo权限控制模板
ALL,!/bin/bash,!/bin/tcsh,!/bin/su,!/usr/bin/passwd,!/usr/bin/passwd root,!/bin/vim /etc/sudoers,!/usr/bin/vim /etc/sudoers,!/usr/sbin/visudo,!/usr/bin/sudo -i,!/bin/bi /etc/ssh/*,!/bin/chmod 777 /etc/*,!/bin/chmod 777 *,!/bin/chmod 777,!/bin/chmod -R 777 *,!/bin/rm /*,!/bin/rm /,!/bin/rm -rf /,!/bin/rm -rf /*,!/bin/rm /etc,!/bin/rm -r /etc,!/bin/rm -rf /etc,!/bin/rm /etc/*,!/bin/rm -r /etc/*,!/bin/rm -rf /etc/*,!/bin/rm /root,!/bin/rm -r /root,!/bin/rm -rf /root,!/bin/rm /root/*,!/bin/rm -r /root/*,!/bin/rm -rf /root/*,!/bin/rm /bin,!/bin/rm -r /bin,!/bin/rm -rf /bin,!/bin/rm /bin/*,!/bin/rm -r /bin/*,!/bin/rm -rf /bin/*
4、添加系统用户(jumpserver会将次用户推送到客户机(资产)上,用于登陆客户机)
注意:
系统用户和管理用户的关系比较绕,其实是这样的关系:比如公司有一个用户为小明(xiaoming),则添加管理用户xiaoming,此时在jumpserver上会存在xiaoming这个用户。系统用户是后端被管理服务器上已经存在的用户,比如后端服务器上有super用户,则添加系统用户的时候就需要指定用户名为super,并且关联sudo,为super用户指定他的权限。添加完成之后需要点击推送,然后把系统用户的sudo权限推送到指定的后端服务器上,让指定服务器上的系统用户和sudo权限关联起来。
推送后在资产上生成此系统用户
5、添加授权规则,用于给指定用户授权他可以访问的服务器
此时用户可以登录当时添加系统用户时填入的邮箱,获取他的web登录密码和ssh密钥密码来登录服务器,下边分别介绍两种方法
方法一:web界面登录
(1)首先登录邮箱查看自己的密码:
(2) 登录jumpserver服务器,可以看到自己能够管理的服务器
(3)点击查看主机,连接即可登录:
方法二:密钥登陆
(1)从邮箱中下载自己的密钥,输入密钥密码(密钥密码在邮件中可以看到),然后导入到xshell中:
(2)此时登陆jumpserver,输入添加的管理用户,此处为wzh,选择密钥登录,输入密钥密码,然后就可以登录到jumpserver了,然后按照提示就可以登录到后端主机了:
6.监控和审计功能,“监控”用于实时监控当前登录人员所有正在执行的操作;“统计”用于查看所有已经执行过的命令;“阻断”用于踢出用户:
名词解释
Web管理
1、用户管理:
用户组
多个用户可以组合成用户组,为了方便进行授权,可以将一个部门或几个用户组建成用户组,在授权中使用组授权,该组中的用户拥有所有授权的主机权限
用户
用户是授权和登陆的主体,将来为每个员工建立一个账户,用来登录跳板机,将资产授权给该用户,查看用户登陆记录命令历史等
设置:
默认设置
默认管理用户 设置包括用户密码密钥,默认信息为了方便添加资产而设计,添加资产时如果选择使用默认管理账号,则会使用这里设置的信息,端口是资产的SSH端口,添加资产时,默认会使用该端口
2、资产管理:
资产组
主机组 同用户组,是资产组成的集合,为了方便授权
资产
资产通常是我们的服务器、网络设备等,将资产授权给用户,用户则会有权限登录资产,执行命令等
管理账号
添加资产时需要添加一个管理账户,该账户是该资产上已有的有管理权限的用户,如root,或者有 NOPASSWD: ALL sudo权限的用户,该管理账户用来向资产推送系统用户,为系统用户添加sudo,获取资产的一些硬件信息
机房
又称IDC,不解释
3、授权管理:
Sudo
这里的sudo其实是Linux中的sudo命令别名,一个sudo别名包含多个命令,系统用户关联sudo就代表该系统用户有权限sudo执行这些命令
系统用户
系统用户是服务器上建立的一些真实存在的可以ssh登陆的用户,如 dev,sa, dba等,系统用户可使用jumpserver推送到服务器上,也可以利用自己公司的工具进行推送,授权时将用户、资产、系统用户关联起来,则表明用户有权限登陆该资产的这个系统用户 如:用户 小明 以 dev 系统用户登录 172.16.1.1资产,简单理解就是 将某个资产上的某个系统用户映射给这个用户登录
推送系统用户
添加完系统用户,需要推送,推送操作是使用ansible,把添加的系统用户和系统用户管理的sudo,推送到资产上,具体体现是在资产上useradd该系统用户,设置它的key,然后设置它的sudo,为了让用户可以登录它
授权规则
授权规则是将 资产 系统用户 和 用户 关联起来,用来完成授权。这样用户就可以以某个系统用户账号登陆资产。大家对这好像不是很理解,其实也是对系统用户,用户这里没有搞清楚。我们可以把用户当做虚拟的用户,而系统用户是真实再服务器上存在的用户,系统用户可以使用jumpserver推送,也可以自己手动建立,但是推送的过程一定要有,哪怕是模拟推送(不选择秘钥和密码推送,如网络设备),因为添加授权规则会检查推送记录。为了简化理解,我们暂时 以 用户 资产 系统用户 来理解,暂时不考虑组,添加这样的规则意思是授权 用户 在这个资产上 以这个系统用户来登陆, 系统用户是一组具有通用性,具有sudo的用户,不同的用户授权不同的 系统用户,比如 dba可能有用数据库的sudo权限
4、日志审计
在线 查看当前在线的用户(非web在线),可以监控用户的命令执行,强制结束用户登录
实时监控 实时监控用户的操作
登录历史 查看以往用户的登录历史,可以查看用户登陆操作的命令,可以回放用户执行命令的录像
命令记录 查看用户批量执行命令的历史,包含执行命令的主机,执行的命令,执行的结果
上传下载 查看用户上传下载文件的记录
用户作用简述 :
登录web(使用用户)
登陆跳板机(使用用户)
跳转登陆Client端(使用系统用户)
系统用户 关联sudo(就是sudo授权),该系统用户就拥有sudo权限
推送系统用户(使用管理用户,管理用户是Client端上已有的用户并且有sudo权限)
特点:
完全开源,GPL授权
python编写,容易再次开发
实现了跳板机基本功能,认证、授权、审计
集成了Ansible,批量命令等
支持WebTerminal
Bootstrap编写,界面美观
自动收集硬件信息
录像回放
命令搜索
实时监控
批量上传下载
官网地址:http://www.jumpserver.org/
Github地址:https://github.com/ibuler/jumpserver/wiki
适用于版本:v0.3.0-2
I. 使用Jumpserver前要理解清楚这三个用户关系:
用户:是指你在web上创建的用户,会在跳板机上创建这个用户,作用就是用于登录跳板机
管理用户:是指客户端上的如root等高权限账号(或普通用户拥有NOPASSWD: ALL sudo权限), 作用用于推送系统用户
系统用户:是指要在客户端上创建这个系统用户,通过推送来实现,作用就是登录客户端
II. 管理用户和系统用户的关系:
两者都是客户端上的用户,后者涉及到一个推送动作,
比如推送test系统用户,也就是在客户端上创建test用户,那么创建用户需要有权限,
有没有权限创建就要看你是用客户端的root用户还是普通用户做为管理用户,
如果后者做为管理用户就需要添加sudo权限又是NOPASSWD: ALL,
这样推送系统用户,就可以成功在客户端上创建test用户