28.1 堡垒机介绍


什么是堡垒机

堡垒机,即在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的***和破坏,而运用各种技术手段实时收集和监控网络环境中每一个组成部分的系统状态、安全事件、网络活动,以便集中报警、及时处理及审计定责。

其从功能上讲,它综合了核心系统运维安全审计管控两大主干功能,从技术实现上讲,通过切断终端计算机对网络和服务器资源的直接访问,而采用协议代理的方式,接管了终端计算机对网络和服务器的访问。形象地说,终端计算机对目标的访问,均需要经过运维安全审计的翻译。打一个比方,运维安全审计扮演着看门者的工作,所有对网络设备和服务器的请求都要从这扇大门经过。因此运维安全审计能够拦截非法访问,和恶意***,对不合法命令进行命令阻断,过滤掉所有对目标设备的非法访问行为,并对内部人员误操作和非法操作进行审计监控,以便事后责任追踪。

我们也把堡垒机称为跳板机,简易的跳板机功能简单,核心功能是远程登录服务器和日志审计,但堡垒机还有资产管理(CMDB)、监控及用户权限等功能。目前比较优秀的开源软件有Jumpserver、Teleport、GateOne、CrazyEye等;商业的堡垒机功能更为强大,有齐治、Citrix XenApp等。


搭建简易的堡垒机

接下来我们尝试搭建一个简易的堡垒机,主要功能是登录内网的服务器和日志审计。

搭建堡垒机的条件是,该机器有公网ip和内网ip,其中内网和其他机器互通。

设计堡垒机的思路:

  1. 对该机器做安全限制:端口限制、登录限制(SSH)、用户和命令限制;
  2. 客户机日志审计。
  • 下载安装jailkit实现chroot:
# cd /usr/local/src/# wget https://olivier.sessink.nl/jailkit/jailkit-2.19.tar.bz2# tar jxvf jailkit-2.19.tar.bz2# cd jailkit-2.19# ./configure # echo $?0# make && make install# echo $?0

  • 创建虚拟系统根目录:
# mkdir /home/jail         //作为虚拟系统根目录# jk_init -v -j /home/jail/ basicshell#shell相关命令、库文件# jk_init -v -j /home/jail/ editors#vi及vim等编辑器# jk_init -v -j /home/jail/ netutils#网络相关# jk_init -v -j /home/jail/ ssh#SSH登录相关,这几步是将常用命令复制到 /home/jail 中

  • 添加测试用户:
# useradd zhangsan# passwd zhangsanChanging password for user zhangsan.New password:#设置密码123456,后面需要登录BAD PASSWORD: The password is shorter than 8 charactersRetype new password: passwd: all authentication tokens updated successfully.

# mkdir /home/jail/usr/sbin# cp /usr/sbin/jk_lsh /home/jail/usr/sbin/jk_lsh#拷贝虚拟系统shell# jk_jailuser -m -j /home/jail/ zhangsan#创建虚拟系统中用户# cd /home/jail/# lltotal 0lrwxrwxrwx 1 root root   7 Oct  3 23:03 bin -> usr/bindrwxr-xr-x 2 root root  44 Oct  3 23:04 devdrwxr-xr-x 2 root root 240 Oct  3 23:04 etcdrwxr-xr-x 3 root root  22 Oct  3 23:12 homelrwxrwxrwx 1 root root   9 Oct  3 23:03 lib64 -> usr/lib64drwxr-xr-x 7 root root  70 Oct  3 23:09 usr# cat etc/passwd root:x:0:0:root:/root:/bin/bashzhangsan:x:1001:1001::/home/zhangsan:/usr/sbin/jk_lsh#上面创建的虚拟系统用户# vim !$#修改为下面内容vim etc/passwdroot:x:0:0:root:/root:/bin/bashzhangsan:x:1001:1001::/home/zhangsan:/bin/bash#修改为/bin/bash才能登录该虚拟系统用户

  • 使用xshell登录该虚拟用户:

成功登录后,我们查看一下

[zhangsan@lzx ~]$ ls[zhangsan@lzx ~]$ ll /bash: ll: command not found[zhangsan@lzx ~]$ ls -l /total 0lrwxrwxrwx 1 root root   7 Oct  4 03:03 bin -> usr/bindrwxr-xr-x 2 root root  44 Oct  4 03:04 devdrwxr-xr-x 2 root root 240 Oct  4 03:25 etcdrwxr-xr-x 3 root root  22 Oct  4 03:12 homelrwxrwxrwx 1 root root   9 Oct  4 03:03 lib64 -> usr/lib64drwxr-xr-x 7 root root  70 Oct  4 03:09 usr

[zhangsan@lzx ~]$#按两下Tab键Display all 116 possibilities? (y or n)        !          command    elif       gunzip     more       sh         typeset./         compgen    else       gzip       mv         shift      ulimit:          complete   enable     hash       popd       shopt      umask[          compopt    esac       help       printf     sleep      unalias[[         continue   eval       history    pushd      source     unset]]         coproc     exec       if         pwd        ssh        untilalias      cp         exit       in         read       suspend    vibash       cpio       export     jobs       readarray  sync       vimbg         date       false      kill       readonly   tar        waitbind       dd         fc         let        return     test       wgetbreak      declare    fg         ln         rm         then       whilebuiltin    dirs       fgrep      local      rmdir      time       zcatcaller     disown     fi         logout     rsync      times      {case       do         for        ls         scp        touch      }cat        done       function   mapfile    sed        trap       cd         echo       getopts    mkdir      select     true       chmod      egrep      grep       mktemp     set        type#这些就是该虚拟用户所能执行的命令

  • 限定SSH登录:
# vim /etc/ssh/sshd_config       //做下面修改PasswordAuthentication no#不允许密码登录

  • 添加防火墙规则:
# iptables -I INPUT -p tcp --dport 22 -j ACCEPT#打开22端口

  • 限定登录ip:
# vim /etc/hosts.allowsshd: 192.168.100.0/24 1.1.1.1 2.2.2.2#类似这样限制登录的ip# vim /etc/hosts.denysshd: ALL#除了上面允许的可以登录,其他所有均不允许登录

接下来还要做日志审计功能,这一步需要我们在所有被登陆的机器上操作。

这里我让lzx作为跳板机,lzx1作为客户机,在lzx1上操作。

# vim /etc/hosts.allowsshd:192.168.100.150# vim /etc/hosts.denysshd:ALL

# mkdir /usr/local/records# chmod 777 !$chmod 777 /usr/local/records# chmod +t !$#增加防删除权限,类似/tmp目录chmod +t /usr/local/records# vim /etc/profile#添加下面内容if [ ! -d  /usr/local/records/${LOGNAME} ]thenmkdir -p /usr/local/records/${LOGNAME}#根据登录名创建同名子文件夹chmod 300 /usr/local/records/${LOGNAME}#赋予300权限fiexport HISTORY_FILE="/usr/local/records/${LOGNAME}/bash_history"#指定记录命令历史的文件export PROMPT_COMMAND='{ date "+%Y-%m-%d %T ##### $(who am i |awk "{print \$1\" \"\$2\" \"\$5}") #### $(history 1 | { read x cmd; echo "$cmd"; })"; } >>$HISTORY_FILE'#具体记录命令历史的格式

再用xshell连接一下这台机器

# ls /usr/local/records/    root#已经有root用户的登录记录# ls /usr/local/records/root/bash_history# cat /usr/local/records/root/bash_history 2018-10-04 00:34:30 ##### root pts/1 (192.168.100.1) #### reboot    # w 00:36:53 up 33 min,  2 users,  load average: 0.00, 0.01, 0.05USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHATroot     pts/0    192.168.100.1    00:16   13.00s  0.02s  0.02s -bashroot     pts/1    192.168.100.1    00:34    5.00s  0.00s  0.00s w# lsanaconda-ks.cfg# cat /usr/local/records/root/bash_history 2018-10-04 00:34:30 ##### root pts/1 (192.168.100.1) #### reboot2018-10-04 00:36:53 ##### root pts/1 (192.168.100.1) #### w2018-10-04 00:36:57 ##### root pts/1 (192.168.100.1) #### ls#这边马上就有记录

  • 在lzx1上创建新用户,然后通过lzx登录该用户:

lzx1上创建用户

# useradd lisi# passwd lisiChanging password for user lisi.New password: BAD PASSWORD: The password is shorter than 8 charactersRetype new password: passwd: all authentication tokens updated successfully.

lzxSSH登录lzx1上该用户

# ssh lisi@192.168.100.160The authenticity of host '192.168.100.160 (192.168.100.160)' can't be established.ECDSA key fingerprint is SHA256:teKu3atU+OByPeXXD2xXhyb30vg6nW8ETqqCr785Dbc.ECDSA key fingerprint is MD5:13:a4:f1:c0:1f:62:65:d4:f4:4e:42:ab:40:f1:36:60.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added '192.168.100.160' (ECDSA) to the list of known hosts.lisi@192.168.100.160's password: [lisi@lzx1 ~]$ ls [lisi@lzx1 ~]$ w 00:40:50 up 37 min,  3 users,  load average: 0.02, 0.02, 0.05USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHATroot     pts/0    192.168.100.1    00:16    2.00s  0.03s  0.01s ssh lisi@192.168.100.root     pts/1    192.168.100.1    00:34    3:54   0.00s  0.00s -bashlisi     pts/2    192.168.100.150  00:40    2.00s  0.00s  0.00s w[lisi@lzx1 ~]$ ls /usr/local/records/lisi  root[lisi@lzx1 ~]$ cd /usr/local/records/lisi/[lisi@lzx1 lisi]$ lsls: cannot open directory .: Permission denied#这里是无法读取内容的,只有300权限

lzx1上查看命令历史记录

# cat /usr/local/records/lisi/bash_history 2018-10-04 00:40:46 ##### lisi pts/2 (192.168.100.160) #### 2018-10-04 00:40:49 ##### lisi pts/2 (192.168.100.160) #### ls2018-10-04 00:40:50 ##### lisi pts/2 (192.168.100.160) #### w2018-10-04 00:41:16 ##### lisi pts/2 (192.168.100.160) #### ls /usr/local/records/2018-10-04 00:41:30 ##### lisi pts/2 (192.168.100.160) #### cd /usr/local/records/lisi/2018-10-04 00:41:31 ##### lisi pts/2 (192.168.100.160) #### ls

这里就简单是实现了堡垒机的功能,但是这种方法是不完美的,也是可以破解的。我们想要实现比较完善的堡垒机功能,还是需要借助一些专门的工具或软件。


28.2 Jumpserver


Jumpserver介绍

官网:http://www.jumpserver.org/ ,安装文档:http://docs.jumpserver.org/zh/docs/step_by_step.html 。

jumpserver是一款使用Python、Django开发的开源跳板机系统,可以实现认证、授权、审计及自动化运维功能,助力企业高效用户、资产、权限、审计管理。它是完全开源的,我们可以针对它来进行二次开发,实现更多的功能。

jumpserver采纳分布式架构,支持多机房跨区域部署,中心节点提供 API,各机房部署登录节点,可横向扩展、无并发限制。

功能:

Auth统一认证CMDB资产管理日志审计自动化运维(ansible)


安装Jumpserver

  • 下载安装脚本:
# wget https://raw.githubusercontent.com/jumpserver/Dockerfile/mysql/get.sh#下载安装脚本# ls anaconda-ks.cfg  get.sh# cat get.sh#脚本内容其实和安装文档基本一致,这个脚本是在docker容器中运行jumpserver,同时可对Windows机器进行资产管理#!/bin/bash# coding: utf-8# Copyright (c) 2018# Gmail: liuzheng712#set -eecho "0. 系统的一些配置"setenforce 0 || truesystemctl stop iptables.service || truesystemctl stop firewalld.service || truelocaledef -c -f UTF-8 -i zh_CN zh_CN.UTF-8export LC_ALL=zh_CN.UTF-8echo 'LANG=zh_CN.UTF-8' > /etc/locale.confecho "1. 安装基本依赖"{yum update -y && yum install epel-release -y && yum update -y && yum install wget zip unzip epel-release nginx sqlite-devel xz gcc automake zlib-devel openssl-devel redis mariadb mariadb-devel mariadb-server supervisor -y} || {echo "yum出错,请更换源重新运行"exit 1}cd /opt/echo "2. 准备python"{wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz -O /opt/Python-3.6.1.tar.xz} || {echo "pyhton 依赖包下载出错,请尝试使用特殊工具进行手工下载https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz ,并且放至于/opt/Python-3.6.1.tar.xz,如您是手工下载,请注释上面wget命令再运行本脚本"exit 1}{tar xf Python-3.6.1.tar.xz  && cd Python-3.6.1 && ./configure && make && make install} || {echo "解压或编译python出错,请尝试使用上面的命令手工解压或编译,如手工操作成功,请注释上述代码再运行本脚本"exit 1}{python3 -m venv /opt/py3} || {echo "建立python虚拟环境出错,请尝试手工执行,如手工操作成功,请注释上述代码再运行本脚本"exit 1}cd /opt/echo "3. 下载包并解压"{wget https://github.com/jumpserver/jumpserver/archive/1.0.0.zip -O /opt/jumpserver.zip} || {echo "下载jumpserver包出错,请尝试手工执行,如手工操作成功,请注释上述代码再运行本脚本"exit 1}{wget https://github.com/jumpserver/coco/archive/1.0.0.zip -O /opt/coco.zip} || {echo "下载coco包出错,请尝试手工执行,如手工操作成功,请注释上述代码再运行本脚本"exit 1}{wget https://github.com/jumpserver/luna/releases/download/v1.0.0/luna.tar.gz -O /opt/luna.tar.gz} || {echo "下载luna包出错,请尝试手工执行,如手工操作成功,请注释上述代码再运行本脚本"exit 1}cd /opt{unzip coco.zip && mv coco-1.0.0 coco && unzip jumpserver.zip && mv jumpserver-1.0.0 jumpserver && tar xzf luna.tar.gz} || {echo "解压出错,请尝试手工执行,如手工操作成功,请注释上述代码再运行本脚本"exit 1}echo "4. 安装yum依赖"{yum -y install $(cat /opt/jumpserver/requirements/rpm_requirements.txt) && yum -y install $(cat /opt/coco/requirements/rpm_requirements.txt)} || {echo "安装jumpserver的依赖出错,请尝试手工执行,如手工操作成功,请注释上述代码再运行本脚本"exit 1}echo "5. 安装pip依赖"{source /opt/py3/bin/activate && pip install --upgrade pip && pip install -r /opt/jumpserver/requirements/requirements.txt &&  pip install -r /opt/coco/requirements/requirements.txt} || {echo "安装jumpserver的依赖出错,请尝试手工执行,如手工操作成功,请注释上述代码再运行本脚本"exit 1}echo "6. 创建数据库"mkdir -p /opt/mysql/share/mysql/{wget https://github.com/jumpserver/Dockerfile/blob/mysql/alpine/mysql_security.sql?raw=true -O /opt/mysql/mysql_security.sqlwget https://github.com/jumpserver/Dockerfile/blob/mysql/alpine/mysql.cnf?raw=true -O /etc/my.cnfwget https://github.com/jumpserver/Dockerfile/blob/mysql/alpine/errmsg.sys?raw=true -O /opt/mysql/share/mysql/errmsg.sys} || {echo "下载数据库依赖文件出错,请尝试手工执行,如手工操作成功,请注释上述代码再运行本脚本"exit 1}echo "7. 准备文件"{wget https://github.com/jumpserver/Dockerfile/blob/mysql/alpine/nginx.conf?raw=true -O /etc/nginx/nginx.confwget https://github.com/jumpserver/Dockerfile/blob/mysql/alpine/supervisord.conf?raw=true -O /etc/supervisord.confwget https://github.com/jumpserver/Dockerfile/blob/mysql/alpine/jumpserver_conf.py?raw=true -O /opt/jumpserver/config.pywget https://github.com/jumpserver/Dockerfile/blob/mysql/alpine/coco_conf.py?raw=true -O /opt/coco/conf.pywget https://github.com/jumpserver/Dockerfile/blob/mysql/alpine/start_jms.sh?raw=true -O /opt/start_jms.sh} || {echo "下载配置文件出错,请尝试手工执行,如手工操作成功,请注释上述代码再运行本脚本"exit 1}echo "8. 配置nginx"cat << EOF > /etc/nginx/conf.d/jumpserver.confserver {    listen 80;    proxy_set_header X-Real-IP $remote_addr;    proxy_set_header Host $host;    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    location /luna/ {        try_files $uri / /index.html;        alias /opt/luna/;    }    location /media/ {        add_header Content-Encoding gzip;        root /opt/jumpserver/data/;    }    location /static/ {        root /opt/jumpserver/data/;    }    location /socket.io/ {        proxy_pass       http://localhost:5000/socket.io/;  # 如果coco安装在别的服务器,请填写它的ip        proxy_buffering off;        proxy_http_version 1.1;        proxy_set_header Upgrade $http_upgrade;        proxy_set_header Connection "upgrade";    }    location /guacamole/ {        proxy_pass       http://localhost:8081/;  # 如果guacamole安装在别的服务器,请填写它的ip        proxy_buffering off;        proxy_http_version 1.1;        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;        proxy_set_header Upgrade $http_upgrade;        proxy_set_header Connection $http_connection;        access_log off;    }    location / {        proxy_pass http://localhost:8080;  # 如果jumpserver安装在别的服务器,请填写它的ip    }}EOFmkdir -p /opt/nginx/log && chmod -R 777 /opt/nginx{systemctl restart nginxsystemctl enable nginx} || {service restart nginx} || {nginx -s reload} || {echo "请检查nginx的启动命令"exit 1}echo "jumpserver安装完成,请运行/opt/start_jms.sh启动jumpserver"echo "下面开始安装windows组件guacamole,如果不需要管理windows资产,可以取消继续安装"echo "9. 安装docker"yum check-update{curl -fsSL https://get.docker.com/ | sh} || {echo "安装docker 出错,请尝试手工执行,如手工操作成功,请注释上述代码再运行本脚本"exit 1}systemctl start dockersystemctl enable dockerecho "10. 安装guacamole"host_ip=`python -c "import socket;print([(s.connect(('8.8.8.8', 53)), s.getsockname()[0], s.close()) for s in [socket.socket(socket.AF_INET, socket.SOCK_DGRAM)]][0][1])"`docker run --name jms_guacamole -d \  --restart always \  -p 8081:8080 -v /opt/guacamole/key:/config/guacamole/key \  -e JUMPSERVER_KEY_DIR=/config/guacamole/key \  -e JUMPSERVER_SERVER=http://$host_ip:8080 \  registry.jumpserver.org/public/guacamole:1.0.0

# sh get.sh#执行安装脚本,这个过程时间比较长# echo $?0

  • 启动jumpserver:
# cd /opt/# sh start_jms.sh#启动jumpserver,建议放到后台执行


登录jumpserver

  • 登录:

输入堡垒机IP进入jumpserver,输入账号admin、密码admin登录

进来之后,显示为这样

  • 修改密码:

点击Administrator个人信息重置密码

重置完密码之后需要重新登录

  • 基本设置:

点击系统设置,直接在基本设置这里,填入堡垒机IP,点击提交

  • 邮箱设置:

点击邮件设置,填入对应邮箱的SMTP主机、端口、账号和密码(授权码)

点击测试,会发送一封邮件到邮箱账号,如果能接收到,说明邮箱设置没问题

这些设置需要手动重启一下jms服务才能生效。


创建管理用户

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

点击资产管理管理用户创建管理用户

指定用户名为jump,生成密钥对

# cd .ssh/# ssh-keygen -f jump#-f 指定密钥对名字Generating public/private rsa key pair.Enter passphrase (empty for no passphrase):#直接回车Enter same passphrase again:#直接回车Your identification has been saved in jump.Your public key has been saved in jump.pub.The key fingerprint is:SHA256:RKNvYt4C6LS3D9BRUOUy4GZZWiMtS1xe0tPlotbVR0M root@lzxThe key's randomart image is:+---[RSA 2048]----+|   .+=Oo=. .. .E.||   .+X.Bo... . ..||   .Bo= o.. o . .||   =.. = o o   . ||  + o o S .      || o o + =         ||  o o o .        ||   . o .         ||    ...          |+----[SHA256]-----+# lsauthorized_keys  jump  jump.pub

我们要的是私钥,将私钥复制粘贴到一个文本文档,导入

# cat jump-----BEGIN RSA PRIVATE KEY-----MIIEpAIBAAKCAQEAsT/iVUC2flWb2nDCb2EIb09f6qd9fvS9XcszH5nnKfgKeoJjEr1AnPa8phRmWXUmWIujK+88FMa6AmFxPIJTkhI8TVbO0yMiAum692KcHy8oSnMd3Sml/ZFTN/x4/6qCQo/GeTq2uD/peahSOvnKUSnapmsT2rQA2d7A11y/AfPd+mh0eVygm3k1drABdvgPigX2Gmv+P8fA7v20Oww4Kc2egk/33YVg4DlXcT56fzzlxNpPt3qd3z7/0+QJEInm++phRdYlzDkEsw81/HuAMmF2dCRfCLaOwryxxoczaxcqToX73z6spq1u/SsSFHS9hBcKBv1yzjbihqUOKPMIBQIDAQABAoIBABSiGCnOb7ADLTJff/LRO9chSUwalTxLJyQc/GWIV+WFz0p1lSzgRP5AprM6mrN9NKqIDsWVgsv0WkDesPzXOv09DDIAkfD4HQRzyuTzYLMsnScVgXt2VrFO0n4o8LjqU2GGNRd1o0GNhxM3aeMdotSR57cJrfT+kT7LdG1diYqjdA4kYFL3KHb427oUths2k0sV15LzucTbMrtv2/HQYfYZNwacMP7UTXP44TLzPlby/4/gmDmR/eel634Q5EWDkLBUejc5xbyN9z6Y0nmmEssa7ZHyyF0BljawIXWB+qAuaq3dn1+A5vmSDH+2Wjh4YiZsEKl7AMM9EBjo3OtNxcECgYEA5ca0poPIrgF/fP30+5iu7oPISR1NmSbPXMOZDLz7fvRMQr13fgkEKwhJ2GoM5siaAY+/UqcO8HGcvI58HUdHO5TZknEpbWlo338ZuGyXBns7Tuy2FE+UFrXPVDiC0OqcbhGpKBM7KkGtsmp7vy5X9QayakpqxGCFK5RY8cG3mHECgYEAxXqGYywOlL2RVmOTUdeNMo1VYLj0wtV9a/d+2Uz+x0lUwhZp0iY0ORbXmTUmmCuARyKcWBizo7WEXAk6Em3keHfFY4/IxkRr0bJDGn0Mj2uXA8MmIrs3gFRj6hmhMDIf1hmeVnXdpFZmt9l+TO6MXsLHrc/Yb7zKvHvyL6itUtUCgYEA2ioFggikNNrFQlcaEPySM3K6avlAoUZhInGw0pBotcycz813NBq5c2ZGPw3KPCGBYDQs8vwdShyFNd6PZ3ky4BZfUhTRwcmQwou6TwoDhyrgT/qeksBQGhP7y7pwMo5fgn6QPrWrul5r3ngOEKKe7s2x/wuzPctrBcqvfLNyb3ECgYEAg9aV65WZMnIQmpUl4EjAqlQzALzaI0z2S+NSm25M1e0+Gclu4m7BBLAcRdt3JbY9EMCpkiMDozLm5679Rxp4oniLnjl69+rr9HZHWGLNxN42VrutNRi6KAGvJrXvp8Z+/KfjzqMn0rQgJXOdX20O56CwQHj3bTmkPAufl3PMKvUCgYA09+rycOzqDF/eawtByzkRD6OaEliIiqXhdBntK6n6NxJB1++uL9F25WPW7KAFWdz/pNjYJ7LDLJeN8WWBJSvMS/v1a9PSRp7xal8i/853mqIbGZMLMwQCTrdyy1Vq37zZjqiCy5LXoyUJ+4zCRGaSbxU0RHA7srIh/iJlm+i0iw==-----END RSA PRIVATE KEY-----

点击提交后提示 jump 创建成功。

之后需要到客户机上创建用户jump,并复制堡垒机上的公钥到authorized_keys文件中

# cat jump.pubssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCxP+JVQLZ+VZvacMJvYQhvT1/qp31+9L1dyzMfmecp+Ap6gmMSvUCc9rymFGZZdSZYi6Mr7zwUxroCYXE8glOSEjxNVs7TIyIC6br3YpwfLyhKcx3dKaX9kVM3/Hj/qoJCj8Z5Ora4P+l5qFI6+cpRKdqmaxPatADZ3sDXXL8B8936aHR5XKCbeTV2sAF2+A+KBfYaa/4/x8Du/bQ7DDgpzZ6CT/fdhWDgOVdxPnp/POXE2k+3ep3fPv/T5AkQieb76mFF1iXMOQSzDzX8e4AyYXZ0JF8Ito7CvLHGhzNrFypOhfvfPqymrW79KxIUdL2EFwoG/XLONuKGpQ4o8wgF root@lzx

lzx1(客户机)上操作

# useradd jump# su - jump[jump@lzx1 ~]$ mkdir .ssh[jump@lzx1 ~]$ vim .ssh/authorized_keys#添加下面内容ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCxP+JVQLZ+VZvacMJvYQhvT1/qp31+9L1dyzMfmecp+Ap6gmMSvUCc9rymFGZZdSZYi6Mr7zwUxroCYXE8glOSEjxNVs7TIyIC6br3YpwfLyhKcx3dKaX9kVM3/Hj/qoJCj8Z5Ora4P+l5qFI6+cpRKdqmaxPatADZ3sDXXL8B8936aHR5XKCbeTV2sAF2+A+KBfYaa/4/x8Du/bQ7DDgpzZ6CT/fdhWDgOVdxPnp/POXE2k+3ep3fPv/T5AkQieb76mFF1iXMOQSzDzX8e4AyYXZ0JF8Ito7CvLHGhzNrFypOhfvfPqymrW79KxIUdL2EFwoG/XLONuKGpQ4o8wgF root@lzx[jump@lzx1 ~]$ chmod 700 .ssh/[jump@lzx1 ~]$ chmod 400 .ssh/authorized_keys

测试堡垒机是否可以通过私钥登录lzx1(客户机)

# ssh -i jump jump@192.168.100.160#登录lzx1The authenticity of host '192.168.100.160 (192.168.100.160)' can't be established.ECDSA key fingerprint is SHA256:teKu3atU+OByPeXXD2xXhyb30vg6nW8ETqqCr785Dbc.ECDSA key fingerprint is MD5:13:a4:f1:c0:1f:62:65:d4:f4:4e:42:ab:40:f1:36:60.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added '192.168.100.160' (ECDSA) to the list of known hosts.Last login: Fri Oct  5 04:24:14 2018[jump@lzx1 ~]$#说明没问题。上面如果提示输入密码登录则说明不成功

这样,我们jumpserver的管理用户jump就创建成功了。以后,每增加一台新机器,都需要在新机器增加用户jump,同时将公钥复制到authorized_keys文件中。


创建普通用户

普通用户就是用来登录jumpserver浏览器界面的用户,或者用命令行方式登录堡垒机的用户。

首先需要创建一个用户组 运维 ,用户管理用户组创建用户组

用户管理用户列表创建用户,创建一个普通用户 zhangsan

点击提交,会发送一封邮件到刚指定的邮箱,是重置密码的链接

这里我没有收到邮件,不知道是因为我用的同一个邮箱地址的关系,还是因为没有在jumpserver的配置文件中配置好。不过不要紧,我们可以直接在用户列表中选择 zhangsan,点击更新,重新自定义输入密码

假如邮箱配置没问题,可以直接在用户列表下点击zhangsan,进入用户详情,重新发送重置密码邮件或者密钥邮件

这样,不管用户是忘记密码、忘记密钥或忘记密钥密码都是可以解决的。


添加机器

资产管理不仅仅是linux服务器,还包括了Windows服务器,以及路由器和交换机。

资产管理资产列表,左侧是资产树,右击可以新建、删除、更改树节点,授权资产也是以节点方式组织的,右侧是属于该节点下的资产。

右键点击ROOT(0),新建树节点Linux、Windows

选中Linux节点,点击创建资产,关联刚创建的管理用户jump

点击提交

因为关联了管理用户jump,所以lzx1上也必须有这个用户,在之前我们已经创建了该用户,我们还需要给这个用户sudo的权限。

[jump@lzx1 ~]$ logout# visudo#添加下面一行jump    ALL=(ALL)     NOPASSWD: ALL

然后点击lzx1,进入资产详情,右侧点击刷新可以更新硬件信息,这就是通过jump用户来抓取的。

除了这样创建以外,我们还可以按照模板批量地导入资产,而不必这样一个一个去创建。


添加系统用户并授权

添加完机器后,还需要添加系统用户,系统用户是 Jumpserver跳转登录资产时使用的用户,可以理解为登录资产用户。

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

资产管理系统用户创建系统用户

自动推送会在资产中自动生成该用户,创建之后点击zhangsan进入系统用户详情,这里也可以手动去推送及测试连通性


添加授权规则

权限管理资产授权,选中Linux节点,点击创建权限规则

点击提交,到这里我们相当于完成了设置的步骤。

接下来就是测试能否使用系统用户直接登录到lzx1上,先切换到用户界面

点击Web终端,会打开一个新页面

正常情况下,这里会显示登陆后的命令行,可以看到,我没有登陆上lzx1这个资产,说明实验过程中还是有问题。另外登录这一步还可以通过xshell来登录查看。

可能的原因有三个:

  1. 第一这是jumpserver的最新版本,可能有些bug,之前的0.3.2的版本我也用过,一些设置发生了改变,之前版本有的在新版本中没有位置进行设置,也是我了解不够,后续仍需要花时间了解一下新版本。
  2. 第二就是安装脚本可能存在一些问题,实验过程中,浏览器界面老是崩掉,提示nginx错误,需要我不断地刷新才可能正常,这说明jumpserver的启动脚本可能存在问题。
  3. 第三是我实验过程的配置存在问题,导致最终结果没有出来。后面有机会的话,我会按照安装文档来进行安装实验,再来一次。

更多资料参考:

v0.5.0 应用图解

Centos6.9 安装最新版本jumpserver

Jumpserver的搭建

©著作权归作者所有:来自51CTO博客作者80民工的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. Linux_centos 搭建FTP服务器
  2. mysql5.6升级及mysql无密码登录
  3. 第二周(第十天)练习题 2018年4月1日 16:45:20
  4. jQuery常用操作; jQuery中的$.ajax方法; Vue基本术语与插值语法---
  5. shell编程及自动化运维--循环
  6. 个人用户怎样选择最适合的阿里云服务器?
  7. 关于修改密码带特殊符号以及数据泵参数设置的一些小知识(2)
  8. 侵害10亿用户隐私,QQ、小米金融、搜狐新闻等41款App被通报
  9. 使用TWO_TASK或者LOCAL环境变量

随机推荐

  1. 怎样切换不同版本的 Node[每日前端夜话0x
  2. Web 视频格式简明指南[每日前端夜话0x93]
  3. 芋道 Spring Boot JPA 入门(一)之快速入门
  4. 干货丨如何使用Redash连接DolphinDB数据
  5. 惊呆了!不改一行 Java 代码竟然就能轻松解
  6. 设置id从1开始自增
  7. zdz工具箱v1.5 android版本发布了,集成各
  8. 什么是Azure Backup
  9. 牛逼 IDE 插件,一键部署 Docker 镜像,开发
  10. 芋道 Spring Cloud Alibaba 介绍