CentOS下搭建Jumpserver堡垒机

什么是堡垒机?

堡垒机,即在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,而运用各种技术手段监控和记录运维人员对网络内的服务器、网络设备、安全设备、数据库等设备的操作行为,以便集中报警、及时处理及审计定责。

用一句话来说,堡垒机就是用来后控制哪些人可以登录哪些资产(事先防范和事中控制),以及录像记录登录资产后做了什么事情(事溯源)

堡垒机很多时候也叫运维审计系统,它的核心是可控及审计。可控是指权限可控、行为可控。权限可控,比如某个工程师要离职或要转岗了。如果没有一个统一的权限管理入口,是一场梦魇。行为可控,比如我们需要集中禁用某个危险命令,如果没有一个统一入口,操作的难度可想而知。
CentOS下搭建Jumpserver堡垒机_第1张图片

堡垒机的设计理念

堡垒机主要是有4A理念,即认证(Authen)、授权(Authorize)、账号(Account)、审计(Audit)。

堡垒机的目标

堡垒机的建设目标可以概括为5W,主要是为了降低运维风险。具体如下:

  • 审计:你做了什么?(What)
  • 授权:你能做哪些?(Which)
  • 账号:你要去哪?(Where)
  • 认证:你是谁?(Who)
  • 来源:访问时间?(When)

堡垒机的价值

  • 集中管理
  • 集中权限分配
  • 统一认证
  • 集中审计
  • 数据安全
  • 运维高效
  • 运维合规
  • 风险管控

堡垒机的原理

CentOS下搭建Jumpserver堡垒机_第2张图片

目前常见堡垒机的主要功能分为以下几个模块:

1、运维平台

  • RDP/VNC运维;SSH/Telnet运维;SFTP/FTP运维;数据库运维;Web系统运维;远程应用运维;

2、管理平台

  • 三权分立;身份鉴别;主机管理;密码托管;运维监控;电子工单;

3、自动化平台

  • 自动改密;自动运维;自动收集;自动授权;自动备份;自动告警;

4、控制平台

  • IP防火墙;命令防火墙;访问控制;传输控制;会话阻断;运维审批;

5、审计平台

  • 命令记录;文字记录;SQL记录;文件保存;全文检索;审计报表;
说明:三权分立

三权的理解:配置,授权,审计

三员的理解:系统管理员,安全保密管理员,安全审计员

三员之三权:废除超级管理员;三员是三角色并非三人;安全保密管理员与审计员必须非同一个人。

堡垒机的身份认证

堡垒机主要就是为了做统一运维入口,所以登录堡垒机必须支持灵活的身份认证方式,比如:

1、本地认证

  • 本地账号密码认证,一般支持强密码策略

2、远程认证

  • 一般可支持第三方AD/LDAP/Radius认证

3、双因子认证

  • UsbKey、动态令牌、短信网关、手机APP令牌等

4、第三方认证系统

  • OAuth2.0、CAS等。

堡垒机的常见运维方式

  • B/S运维:通过浏览器运维。
  • C/S运维:通过客户端软件运维,比如Xshell,CRT等。
  • H5运维:直接在网页上可以打开远程桌面,进行运维。无需安装本地运维工具,只要有浏览器就可以对常用协议进行运维操作,支持ssh、telnet、rlogin、rdp、vnc协议
  • 网关运维:采用SSH网关方式,实现代理直接登录目标主机,适用于运维自动化场景。

堡垒机的其他常见功能

  • 文件传输:一般都是登录堡垒机,通过堡垒机中转。使用RDP/SFTP/FTP/SCP/RZ/SZ等传输协议传输。
  • 细粒度控制:可以对访问用户、命令、传输等进行精细化控制。
  • 支持开放的API

堡垒机的部署方式

1、单机部署
堡垒机主要都是旁路部署,旁挂在交换机旁边,只要能访问所有设备即可。

部署特定:

  • 旁路部署,逻辑串联。
  • 不影响现有网络结构。
    2、HA高可靠部署
    旁路部署两台堡垒机,中间有心跳线连接,同步数据。对外提供一个虚拟IP。

部署特点:

  • 两台硬件堡垒机,一主一备/提供VIP。
  • 当主机出现故障时,备机自动接管服务。
    3、异地同步部署
    通过在多个数据中心部署多台堡垒机。堡垒机之间进行配置信息自动同步。

部署特点:

  • 多地部署,异地配置自动同步
  • 运维人员访问当地的堡垒机进行管理
  • 不受网络/带宽影响,同时祈祷灾备目的
    4、集群部署(分布式部署)

当需要管理的设备数量很多时,可以将n多台堡垒机进行集群部署。其中两台堡垒机一主一备,其他n-2台堡垒机作为集群节点,给主机上传同步数据,整个集群对外提供一个虚拟IP地址。

部署特点:

  • 两台硬件堡垒机,一主一备、提供VIP
  • 当主机出现故障时,备机自动接管服务。

开源产品

目前,常用的堡垒机有收费和开源两类。收费的有行云管家、纽盾堡垒机,开源的有jumpserver。这几种各有各的优缺点,如何选择,大家可以根据实际场景来判断。

什么是Jumpserver

Jumpserver 是一款由Python编写开源的跳板机(堡垒机)系统,实现了跳板机应有的功能。基于ssh协议来管理,客户端无需安装agent。

特点:

  • 完全开源,GPL授权
  • Python编写,容易再次开发
  • 实现了跳板机基本功能,认证、授权、审计
  • 集成了Ansible,批量命令等
  • 支持WebTerminal
  • Bootstrap编写,界面美观
  • 自动收集硬件信息
  • 录像回放
  • 命令搜索
  • 实时监控
  • 批量上传下载

Jumpserver3.0安装

相对于 jumpserver 2.0 版本,在新的版本 3.0 中取消了LDAP授权,取而代之的是ssh进行推送;界面也有所变化,功能更完善,安装更简单,不像 2.0 的版本,难住了好多人。下面通过两台主机来搭建 jumpserver堡垒机!

Centos 6.5 x86_64 关闭 iptables,关闭 selinux jumpserver:192.168.1.200 clients:192.168.1.210 ps:操作只针对 jumpserver,clients 不会进行操作,只是环境需求。

一、安装依赖包

yum -y install epel-release yum clean all && yum makecache yum -y update yum -y install git python-pip MySQL-devel gcc automake autoconf python-devel vim sshpass lrzsz readline-devel

二、下载 jumpserver

cd /opt 
Git clone https://github.com/jumpserver/jumpserver.git

注: 如果下载失败,则去github上面下载zip包,unzip解压缩即可
CentOS下搭建Jumpserver堡垒机_第3张图片
三、执行快速安装脚本

cd /opt/jumpserver/install
pip install -r requirement.txt

CentOS下搭建Jumpserver堡垒机_第4张图片
查看安装的包 pip freeze

python install.py 输入jumpserver的地址,默认为:”192.168.1.200”,回车即可。 是否安装MySQL:选择”y”进行安装
CentOS下搭建Jumpserver堡垒机_第5张图片
MySQL 启动后会要求用户输入 邮件服务器及账户(后期用来发送用户名、ssh pass、web pass、ssh key)

163邮箱用授权密码,而不是登入密码 ,切记 。
CentOS下搭建Jumpserver堡垒机_第6张图片
输入smtp信息之后发现报错了,是python的pycrypto模块问题,需要卸载重装: pip uninstall pycrypto easy_install pycrypto
CentOS下搭建Jumpserver堡垒机_第7张图片
安装之后继续 python install.py 进行安装,并且输入 web管理员用户名和管理员密码,ok
CentOS下搭建Jumpserver堡垒机_第8张图片
运行 crontab,定期处理失效连接,定期更新资产信息 cd /opt/jumpserver python manage.py crontab add
CentOS下搭建Jumpserver堡垒机_第9张图片
注: 1)根据提示输入相关信息,完成安装,安装完成后,请访问web,继续查看后续文档 2)如果启动失败,请返回上层目录,手动运行 ./service.sh start 启动 3)如果 ./service.sh start 启动失败 cd /opt/jumpserver python manage.py runserver 0.0.0.0:80 python run_websocket.py 4)如果启动失败,可能是由于80端口和3000端口已经被占用,或者数据库账号密码不对,请检查

五、Web登录

http://192.168.1.200
CentOS下搭建Jumpserver堡垒机_第10张图片
注意: 在使用jumpserver过程中,有一步是系统用户推送,要推送成功,client(后端服务器)要满足以下条件: 1)后端服务器需要有python、sudo环境才能使用推送用户,批量命令等功能 2)后端服务器如果开启了selinux,请安装libselinux-python

六、更新代码

cd /opt/jumpserver git pull

环境搭建到这一步就结束啦~

下面开始要仔细看咯

一、用户管理

1)添加用户

点击用户管理 —> 查看用户 —> 添加用户
CentOS下搭建Jumpserver堡垒机_第11张图片
输入要添加的用户名,姓名,权限,Mail,并且发送邮件 —> 保存
CentOS下搭建Jumpserver堡垒机_第12张图片
查看添加的用户
CentOS下搭建Jumpserver堡垒机_第13张图片
查看用户邮件 邮件中包含了用户名,权限,web密码,ssh 密钥密码,以及密钥下载地址。
CentOS下搭建Jumpserver堡垒机_第14张图片
2)添加用户组

点击用户管理 —> 查看用户组 —> 添加用户组
CentOS下搭建Jumpserver堡垒机_第15张图片
添加新的小组 —> 运维小组
CentOS下搭建Jumpserver堡垒机_第16张图片
查看刚才添加的组
CentOS下搭建Jumpserver堡垒机_第17张图片
二、资产管理

1)添加资产组

点击资产管理 —> 查看资产组 —> 添加主机组
CentOS下搭建Jumpserver堡垒机_第18张图片
输入组名称,并且输入描述组用途
CentOS下搭建Jumpserver堡垒机_第19张图片
2)添加资产

点击资产管理 —> 查看资产 —> 添加资产
CentOS下搭建Jumpserver堡垒机_第20张图片
输入主机名,主机IP,管理用户名(管理员用户,主机中必须存在的哦~ 可以是root),端口,资产组 —> 提交保存
CentOS下搭建Jumpserver堡垒机_第21张图片
3)添加机房

点击资产管理 —> 查看机房 —> 添加机房
CentOS下搭建Jumpserver堡垒机_第22张图片
输入机房名称,其他的可以选填 —> 保存
CentOS下搭建Jumpserver堡垒机_第23张图片
三、权限管理

1)sudo

点击权限管理 —> sudo —> 添加别名
CentOS下搭建Jumpserver堡垒机_第24张图片
输入别名,系统命令,备注 —> 点击保存
CentOS下搭建Jumpserver堡垒机_第25张图片
2)添加系统用户

点击授权管理 —> 系统用户 —> 添加系统用户
CentOS下搭建Jumpserver堡垒机_第26张图片
输入用户名,密码,管理的sudo及备注 —> 单击保存
CentOS下搭建Jumpserver堡垒机_第27张图片
创建好系统之后,单击推送,将用户名、密码、sudo的信息推送到服务器。
CentOS下搭建Jumpserver堡垒机_第28张图片
选择系统用户,资产组 —> 单击保存
CentOS下搭建Jumpserver堡垒机_第29张图片
推送成功
在这里插入图片描述
3)授权规则

点击授权管理 —> 授权规则 —> 添加规则
CentOS下搭建Jumpserver堡垒机_第30张图片
输入授权名称,用户/用户组,资产/资产组,系统用户,备注 —> 单击保存
CentOS下搭建Jumpserver堡垒机_第31张图片
四、登录
这时候创建已经完成,下一步用户”hongxue”通过web和密钥登录堡垒机 192.168.1.200,并实现跳转到服务器 192.168.1.210

1)通过web登录 可以看到用户ID,用户名,权限,key,最后登录,用户组,授权主机数,以及主机信息。
CentOS下搭建Jumpserver堡垒机_第32张图片
单击查看主机 —> 连接
CentOS下搭建Jumpserver堡垒机_第33张图片
连接成功,可以对该主机进行操作。
CentOS下搭建Jumpserver堡垒机_第34张图片
2)通过ssh登录

通过邮件中收到的地址,下载key
CentOS下搭建Jumpserver堡垒机_第35张图片
点击工具 —> 用户密钥管理者
CentOS下搭建Jumpserver堡垒机_第36张图片
单击导入 —> 输入用户名,密码
CentOS下搭建Jumpserver堡垒机_第37张图片
连接 jumpserver 堡垒机 192.168.1.200,输入密钥密码进行登录
CentOS下搭建Jumpserver堡垒机_第38张图片
登录成功!! 从授权的列表中连接到服务器 192.168.1.210
CentOS下搭建Jumpserver堡垒机_第39张图片
为了安全,建议配置nginx 反向代理 jumpserver。

log_format jumpserver '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$request_time" $request_body "$http_referer" "$http_user_agent" "$http_x_forwarded_for" $scheme $http_host';


server {
     
        listen       8080 ssl;
        listen       80;
deny all;
        server_name jumpserver.xxxx.com;
        index index.html index.htm index.php;




        ssl_certificate      ssl/xxxx.com.crt;
        ssl_certificate_key  ssl/xxxx.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;


if ( $scheme = http ) {
     
   rewrite ^(.*)$ https://$host:8090$request_uri? permanent;
  }


location / {
     
    proxy_set_header Connection "";
    proxy_http_version 1.1;
    proxy_pass      http://10.43.12.31:8090;
 }


location ^~ /ws/ {
     
proxy_pass http://10.43.12.31:8090/ws/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
  }
          


        
        access_log  /data0/logs/jumpserver.log jumpserver;
        error_log  /data0/logs/jumpserver_error.log debug;
}



参考链接:
什么是堡垒机?为什么需要堡垒机? :https://mp.weixin.qq.com/s/WNG8o3XyBe04_SYmfN67dQ

你可能感兴趣的:(CentOS下搭建Jumpserver堡垒机)