jumpserver堡垒机 (资源

安稳与你 提交于 2019-12-13 02:08:43

 

23.5 jumpserver介绍

• 官网www.jumpserver.org

• 跳板机概述:
跳板机就是一台服务器,开发戒运维人员在维护过程中首先要统一登录到这台服务器,然后再登录到目标
设备迚行维护和操作;

• 堡垒机概述:
堡垒机,即在一个特定的网络环境下,为了保障网络和数据丌受来自外部和内部用户的入侵和破坏,而运
用各种技术手段实时收集和监控网络环境中每一个组成部分的系统状态、安全事件、网络活劢,以便集中
报警、及时处理及审计定责。
总结:堡垒机比跳板机多了实时收集、监控网络环境、集中报警等功能。

• Jumpserver是一款使用Python, Django开发的开源跳板机系统,实现了跳板机应有的功能。基于ssh协议来管理,客户端无需安装agent, 助力互联网企业高效 用户、资产、权限、审计 管理。

• Jumpserver 后端主要技术是LDAP,配置了LDAP 集中认证服务器, 所有服务器的认证都是由ldap完成的。其做法是:每个用户一个密码,把密码加密放到了数据库中,当用户输入IP 从跳板机登陆服务器的时候,跳板机系统取出密码,并解密,通过pexpect 模块将密码发送过去,来完成登录。

架构图如下

组件架构图

组件说明

Jumpserver

现指 Jumpserver 管理后台,是核心组件(Core), 使用 Django Class Based View 风格开发,支持 Restful API。

Github

Coco

实现了 SSH Server 和 Web Terminal Server 的组件,提供 SSH 和 WebSocket 接口, 使用 Paramiko 和 Flask 开发。

Github

Luna

现在是 Web Terminal 前端,计划前端页面都由该项目提供,Jumpserver 只提供 API,不再负责后台渲染html等。

Github

Guacamole

Apache 跳板机项目,Jumpserver 使用其组件实现 RDP 功能,Jumpserver 并没有修改其代码而是添加了额外的插件,支持 Jumpserver 调用。

Jumpserver-Python-SDK

Jumpserver API Python SDK,Coco 目前使用该 SDK 与 Jumpserver API 交互。

• 由于其拥有时尚的外观和直观的功能以及简单地安装配置等特色,是步入自动化运维的不二选择;其后端数据存储使用的是MySQL数据库,因此建议使用前先行配置及部署好MySQL数据库。

系统设置

_images/basic_setting.jpg

配置邮件发送服务器

点击页面上边的"邮件设置" TAB ,进入邮件设置页面:

_images/smtp_setting.jpg

配置 QQ 邮箱的 SMTP 服务可参考(http://blog.csdn.net/Aaron133/article/details/78363844),仅使用只需要看完第二部分即可。

配置邮件服务后,点击页面的"测试连接"按钮,如果配置正确,Jumpserver 会发送一条测试邮件到您的 SMTP 账号邮箱里面:

_images/smtp_test.jpg

创建 Jumpserver 用户

点击页面左侧“用户列表”菜单下的“用户列表“,进入用户列表页面。

点击页面左上角“创建用户”按钮,进入创建用户页面,填写账户,角色安全,个人等信息。

其中,用户名即 Jumpserver 登录账号。用户组是用于资产授权,当某个资产对一个用户组授权后,这个用户组下面的所有用户就都可以使用这个资产了。角色用于区分一个用户是管理员还是普通用户。

_images/create_jumpserver_user.jpg

成功提交用户信息后,Jumpserver 会发送一条设置"用户密码"的邮件到您填写的用户邮箱。

_images/create_user_success.jpg

点击邮件中的设置密码链接,设置好密码后,您就可以用户名和密码登录 Jumpserver 了。

用户首次登录 Jumpserver,会被要求完善用户信息。

Linux/Unix 生成 SSH 密钥可以参考(https://www.cnblogs.com/horanly/p/6604104.html)

Windows 生成 SSH 密钥可以参考(https://www.cnblogs.com/horanly/p/6604104.html)

查看公钥信息

$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDadDXxxx......

复制 SSH 公钥,添加到 Jumpserver 中。

_images/set_ssh_key.jpg

除了使用浏览器登录 Jumpserver 外,还可使用命令行登录:

确保 Coco 服务正常

_images/coco_check.jpg

鉴于心态检测存在延迟,您也可以直接在 Jumpserver 主机上执行如下命令检测 Coco 是否存活,Coco 服务默认使用 2222 端口:

$ netstat -ntpl

效果如下:

_images/coco_check_terminal.jpg

如 coco 不在线或者服务不正常,可以尝试重启 coco

$ cd /opt/coco
$ ./cocod restart  # 请确保 jumpserver 已经正常运行。

如 guacamole 不在线或者服务不正常,可以尝试重启容器

$ docker ps  # 查询正在运行的容器,记录下容器的 <CONTAINER ID> ,可以附加 -a 参数查询所有容器
CONTAINER ID        IMAGE                                             COMMAND             CREATED             STATUS                   PORTS               NAMES
6b15fcf0e5f3        registry.jumpserver.org/public/guacamole:latest   "/init"             2 weeks ago         Exited (0) 10 days ago                       gracious_hugle

$ docker restart 6b15fcf0e5f3  # 6b15fcf0e5f3 是通过docker ps查询到的,请不要直接复制。

# docker 用法: docker start|stop|restart|rm|rmi <CONTAINER ID>

命令行登录 Jumpserver 使用如下命令:

$ ssh -p 2222 用户名@Jumpserver IP地址

登录成功后界面如下:

_images/coco_success.jpg

创建资产

 创建 Linux 资产

编辑资产树

节点不能重名,右击节点可以添加、删除和重命名节点,以及进行资产相关的操作。

_images/asset_tree.jpg

创建管理用户

管理用户是服务器的 root,或拥有 NOPASSWD: ALL sudo 权限的用户,Jumpserver 使用该用户来推送系统用户、获取资产硬件信息等。

如果使用ssh私钥,需要先在资产上设置,这里举个例子供参考(本例登录资产使用root为例)

(1). 在资产上生成 root 账户的公钥和私钥

  $ ssh-keygen -t rsa  # 默认会输入公钥和私钥文件到 ~/.ssh 目录

(2). 将公钥输出到文件 authorized_keys 文件,并修改权限

  $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  $ chmod 400 ~/.ssh/authorized_keys

(3). 打开RSA验证相关设置

  $ vim /etc/ssh/sshd_config

  RSAAuthentication yes
  PubkeyAuthentication yes
  AuthorizedKeysFile     .ssh/authorized_keys

(4). 重启 ssh 服务
  $ service sshd restart

(5). 上传 ~/.ssh 目录下的 id_rsa 私钥到 jumpserver 的管理用户中

这样就可以使用 ssh私钥 进行管理服务器。

名称可以按资产树来命名。用户名root。密码和 SSH 私钥必填一个。

_images/create_asset_admin_user.jpg

创建系统用户

系统用户是 Jumpserver 跳转登录资产时使用的用户,可以理解为登录资产用户,如 web, sa, dba(ssh web@some-host), 而不是使用某个用户的用户名跳转登录服务器(ssh xiaoming@some-host); 简单来说是 用户使用自己的用户名登录Jumpserver, Jumpserver使用系统用户登录资产。

系统用户的 Sudo 栏填写允许当前系统用户免sudo密码执行的程序路径,如默认的/sbin/ifconfig,意思是当前系统用户可以直接执行 ifconfig 命令或 sudo ifconfig 而不需要输入当前系统用户的密码,执行其他的命令任然需要密码,以此来达到权限控制的目的。

# 这里简单举几个例子
Sudo /bin/su  # 当前系统用户可以免sudo密码执行sudo su命令(也就是可以直接切换到root,生产环境不建议这样操作)
Sudo /usr/bin/git,/usr/bin/php,/bin/cat,/bin/more,/bin/less,/usr/bin/head,/usr/bin/tail  # 当前系统用户可以免sudo密码执行git php cat more less head tail

# 此处的权限应该根据使用用户的需求汇总后定制,原则上给予最小权限即可。

系统用户创建时,如果选择了自动推送 Jumpserver 会使用 Ansible 自动推送系统用户到资产中,如果资产(交换机、Windows )不支持 Ansible, 请手动填写账号密码。

Linux 系统协议项务必选择 ssh 。如果用户在系统中已存在,请去掉自动生成密钥、自动推送勾选。

_images/create_asset_system_user.jpg

创建资产

点击页面左侧的“资产管理”菜单下的“资产列表”按钮,查看当前所有的资产列表。

点击页面左上角的“创建资产”按钮,进入资产创建页面,填写资产信息。

IP 地址和管理用户要确保正确,确保所选的管理用户的用户名和密码能"牢靠"地登录指定的 IP 主机上。资产的系统平台也务必正确填写。公网 IP 信息只用于展示,可不填,Jumpserver 连接资产使用的是 IP 信息。

_images/create_asset.jpg

资产创建信息填写好保存之后,可测试资产是否能正确连接:

_images/check_asset_connect.jpg

如果资产不能正常连接,请检查管理用户的用户名和密钥是否正确以及该管理用户是否能使用 SSH 从 Jumpserver 主机正确登录到资产主机上。

 网域列表

网域功能是为了解决部分环境无法直接连接而新增的功能,原理是通过网关服务器进行跳转登录。

点击页面左侧的“网域列表”按钮,查看所有网域列表。

点击页面左上角的“创建网域”按钮,进入网域创建页面,选择资产里用作网域的网关服务器。

_images/create_domain.jpg

点击网域的名称,进入网域详情列表。

点击页面的“网关”按钮,选择网关列表的“创建网关”按钮,进入网关创建页面,填写网关信息。

IP信息一般默认填写网域资产的IP即可(如用作网域的资产有多块网卡和IP地址,选能与jumpserer通信的任一IP即可),用户名与密码可以在资产上面创建亦可使用jumpserver的推送功能(需要手动输入密码),确认该用户拥有执行ssh命令的权限。

_images/create_geteway.jpg

保存信息后点击测试连接,确定设置无误后到资产列表添加需要使用网关登录的资产即可。

_images/create_asset02.jpg

3、创建 Windows 资产

创建 Windows 系统管理用户

同 Linux 系统的管理用户一样,名称可以按资产树来命名,用户名是管理员用户名,密码是管理员的密码。

_images/create_windows_admin.jpg

创建 Windows 系统系统用户

目前 Windows 暂不支持自动推送,用户必须在系统中存在且有权限使用远程连接,请去掉自动生成密钥、自动推送勾选;请确认 windows 资产的 rdp 防火墙已经开放。

Windows 资产协议务必选择 rdp。

_images/create_windows_user.jpg

创建 Windows 资产

创建 Windows 资产,系统平台请选择正确的 Windows,端口号为3389,IP 和 管理用户请正确选择,确保管理用户能正确登录到指定的 IP 主机上。

_images/create_windows_asset.jpg

四、资产节点管理

4.1 为资产树节点分配资产

在资产列表页面,选择要添加资产的节点,右键,选择添加资产到节点。

_images/add_asset_to_node.jpg

选择要被添加的资产,点击"确认"即可。

_images/select_asset_to_node.jpg

4.2 删除节点资产

选择要被删除的节点,选择"从节点删除",点击"提交"即可。

_images/delete_asset_from_node.jpg

五、创建授权规则

节点,对应的是资产,代表该节点下的所有资产。

用户组,对应的是用户,代表该用户组下所有的用户。

系统用户,及所选的用户组下的用户能通过该系统用户使用所选节点下的资产。

节点,用户组,系统用户是一对一的关系,所以当拥有 Linux、Windows 不同类型资产时,应该分别给 Linux 资产和 Windows 资产创建授权规则。

_images/create_auth_rules.jpg

创建的授权规节点要与资产所在的节点一致。

_images/auth_rule_list.jpg

六、用户使用资产

6.1 登录 Jumpserver

创建授权规则的时候,选择了用户组,所以这里需要登录所选用户组下面的用户才能看见相应的资产。

_images/jumpserver_user_list.jpg

用户正确登录后的页面:

_images/user_login_success.jpg

6.2 使用资产

6.2.1 连接资产

点击页面左边的 Web 终端:

_images/link_web_terminal.jpg

打开资产所在的节点:

_images/luna_index.jpg

双击资产名字,就连上资产了:

如果显示连接超时,请检查为资产分配的系统用户用户名和密钥是否正确,是否正确选择 Windows 操作系统,协议 rdp,端口3389,是否正确选择 Linux 操作系统,协议 ssh,端口22,以及资产的防火墙策略是否正确配置等信息。

_images/windows_assert.jpg

接下来,就可以对资产进行操作了。

6.2.2 断开资产

点击页面顶部的 Server 按钮会弹出选个选项,第一个断开所选的连接,第二个断开所有连接。

_images/disconnect_assert.jpg

以上就是 Jumpserver 的简易入门了,

通过web端登录系统后界面如下:

 

Jumpserver拥有以下特点:

完全开源,GPL授权

Python编写,容易再次开发

实现了跳板机基本功能,认证、授权、审计

集成了Ansible,批量命令等

支持WebTerminal

Bootstrap编写,界面美观

自动收集硬件信息

录像回放

命令搜索

实时监控

批量上传下载

基于其特点,Jumpserver能够实现跳板机常见需求,如授权、用户管理、服务器基本信息记录等,同时又可批量执行脚本等功能;其中录像回放、命令搜索、实时监控等特点,又能帮助运维人员回溯操作历史,方便查找操作痕迹,便于管理其他人员对服务器的操作控制。

快速安装介绍

Jumpserver的源码在github上,所以其安装需要从github上直接下载源码,然后通过其源码中的自动安装脚本进行执行安装。

Github的路径https://github.com/jumpserver/jumpserver.git

安装建议使用 centos 6或7的 mini环境快速安装,安装过一些软件后,其中可能会安装一些不兼容的python库,如pycrypto, django, 会影响快速安装 。



 

23.6、Jumpserver安装(0.4.0)

• yum install -y docker //首先安装docker

• systemctl enable docker

• systemctl start docker //启动docker服务

• curl -L https://github.com/docker/compose/releases/download/1.17.0-rc1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose  //安装docker-compose

• chmod 755 /usr/local/bin/docker-compose

• cd /home/

 

• git clone https://github.com/jumpserver/jumpserver.git //下载jumpserver源码

• cd jumpserver/install/              #然后ls

• 配置docker加速器 http://ask.apelearn.com/question/15126

• 检查是否有监听8080端口的服务,如果有关闭

• screen//进入到一个虚拟终端

• docker-compose up //使用docker-compose安装jumpserver

实例:

命令:netstat -lntp    查看运行的服务。

如果有gitlab-runsvdir.service服务,就把他停掉。或者使用命令:gitlab-ctl stop。还有systemctl stop mongod。systemctl disable mongod。

关闭没有用的仓库,切换到/etc/yum.repos.d目录,把mongo.repo改为mongo.repo.1,mv zabiix.repo  zabbix.repo.1,mv  percona-release.repo percona-release.repo .1,,

 

 

23.7、Jumpserver安装(0.3.2)

• 官方文档https://github.com/jumpserver/jumpserver/wiki/v0.3.2-%E5%9F%BA%E4%BA%8E-RedHat-%E7%9A%84%E7%B3%BB%E7%BB%9F

• yum install -y git

• cd /home //要到一个空间大的目录下面

注:不要安装在/root、/home 等目录下,以免权限问题

• git clone https://github.com/jumpserver/jumpserver.git

安装依赖环境及rpm

yum -y install epel-release

yum -y install python-pip mysql-devel gcc automake autoconf python-devel vim sshpass lrzsz readline-devel

 

注:安装前最好关闭SELinux

关闭SELinux的方法:

修改/etc/selinux/config文件中的SELINUX="" 为 disabled ,然后重启。如果不想重启系统,使用命令setenforce 0

• git checkout master

• cd jumpserver/install

• python install.py

• 若你的机器已经安装过mysql,可以先创建jumpserver库以及对应的用户名密码,若没有安装就让它自动安装即可

• 安装过程中还需要设置一下使用的第三方邮件,建议你去申请一个免费的163邮箱

• 我的163邮箱smtp.163.com aming_test@163.com 8lFjprwrfEv1c

实例:

切换目录cd jumpserver/install,运行pip freeze命令。

然后执行python install.py

 

 

 

 

 

 

23.8、Jumpserver使用

• 浏览器输入ip:8000 访问jumpserver

• 默认用户名是admin,密码是5Lov@wife

• 点击用户管理,选择用户,点击Administrator那一行右侧的更新,设置密码

• 创建用户组 运维

• 创建用户 aming

• 点击设置,默认管理用户,该用户为管理员用户,应该有sudo权限,需要在每一台客户机上创建该用户(用户名自定义,jump)

• 在一台linux机器上生成一个密钥对,用来作为该管理用户的密钥对

• 把私钥粘贴到默认密钥下面

• 在客户机上创建jump用户,并设置sudo权限,把刚刚生成的密钥对里面的公钥放到该客户机的jump用户家目录.ssh/authorized_keys文件里

• 资产管理,查看资产组,添加资产组(如,dev)

• 资产管理,查看资产,添加资产,填写各项信息

• 授权管理,系统用户,添加系统用户,该用户为我们登录所有客户机的用户

• 授权规则,添加规则,创建授权规则

23.9、Jumpserver里面的用户

• jumpserver用户用来登录jumpserver(web界面、ssh登录)

• 管理用户用来自动创建客户机上的系统用户、批量执行命令等操作

• 客户机上的系统用户,用来通过jumpserver去登录每一台客户机的用户

 

23.10、Jumpserver使用

• 普通用户的密码以及密钥下载地址、密钥密码都会通过邮件的方式发送给用户

• 浏览器登录普通用户,可以查看有权限的主机,也可以在web界面下登录主机、上传和下载文件

• xshell创建新的连接

• ip为jumpserver的ip,端口为22

• 用户名为普通用户名字(aming)

• 设置密钥认证

• 连接后,出现登录页面,数据p查看所有被授权主机

• 输入主机前面的数字可以登录到对应的主机下面

 

参考链接:https://www.jianshu.com/p/653c60987b0f

http://jumpserver.readthedocs.io/zh/docs/setup_by_centos7.html?highlight=log

 

资料链接 :

 

 

 

jenkins   官网安装文档:  http://docs.jumpserver.org/zh/latest/quickstart.html

jenkins pipeline 文章合集 :https://blog.csdn.net/sinat_34524528/article/details/81557007

Jenkins2 入门到精通 : https://blog.csdn.net/lb245557472/article/details/77376908

jenkins+gitlab + 蒲公英实现 android 应用自动化打包分发 : https://juejin.im/post/584e49448e450a006acabc57

手把手从0开始教你搭建Jumpserver      : https://mp.weixin.qq.com/s/Pz3JlJq75oagAghgVxbhMg

手把手从0开始教你搭建Jumpserver,为服务器安全保驾护航!              :     https://mp.weixin.qq.com/s/Pz3JlJq75oagAghgVxbhMg

 

审计系统---堡垒机项目之用户交互+session日志写入数据库[完整版]         :  https://www.cnblogs.com/ftl1012/p/9459906.html

审计系统---堡垒机项目之监测进程脚本        :    https://www.cnblogs.com/ftl1012/p/9459826.html

审计系统---堡垒机项目之strace追踪ssh         :   https://www.cnblogs.com/ftl1012/p/9459819.html

审计系统---堡垒机项目之用户交互程序开发           :   https://www.cnblogs.com/ftl1012/p/9459306.html

审计系统---堡垒机项目之环境准备       :  https://www.cnblogs.com/ftl1012/p/9459085.html

审计系统---堡垒机项目之表结构设计         :       https://www.cnblogs.com/ftl1012/p/9458964.html

审计系统---堡垒机python下ssh的使用                 :       https://www.cnblogs.com/ftl1012/p/9458889.html

审计系统---paramiko模块学习           :    https://www.cnblogs.com/ftl1012/p/paramiko.html

审计系统---初识堡垒机180501【all】           :       https://www.cnblogs.com/ftl1012/p/9458595.html

https://www.cnblogs.com/bigdevilking/p/9427941.html

Jumpserver(跳板机、堡垒机)启动jms Django连接mysql数据库报错(466) : :https://www.cnblogs.com/bigdevilking/p/9434482.html

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!