解决方案

堡垒机介绍

seo靠我 2023-09-23 20:19:33

28.1 堡垒机介绍

什么是堡垒机

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

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

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

搭建简易的堡垒机

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

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

设计堡垒机的思路:

对该机器做安全限制:端口限制、登录限制(SSH)、用户和命令限制;客户机日志审计。 下载安装jailkit实现chroot: # cSEO靠我d /usr/local/src/# wget https://olivier.sessink.nl/jailkit/jailkit-2.19.tar.bz2# tar jxvf jailkit-2.SEO靠我19.tar.bz2# cd jailkit-2.19# ./configure # echo $? 0# make && make install# echo $? SEO靠我0 创建虚拟系统根目录: # mkdir /home/jail //作为虚拟系统根目录# jk_init -v -j /home/jail/ basicshell #SEO靠我shell相关命令、库文件# jk_init -v -j /home/jail/ editors #vi及vim等编辑器# jk_init -v -j /home/jail/ netutils #网络SEO靠我相关# jk_init -v -j /home/jail/ ssh #SSH登录相关,这几步是将常用命令复制到 /home/jail 中 添加测试用户: # userSEO靠我add zhangsan# passwd zhangsan Changing password for user zhangsan. New password: #设置SEO靠我密码123456,后面需要登录 BAD PASSWORD: The password is shorter than 8 characters Retype new pSEO靠我assword: passwd: all authentication tokens updated successfully. # mkdir /home/jailSEO靠我/usr/sbin# cp /usr/sbin/jk_lsh /home/jail/usr/sbin/jk_lsh #拷贝虚拟系统shell# jk_jailuser -m -j /home/jailSEO靠我/ zhangsan #创建虚拟系统中用户# cd /home/jail/# ll total 0 lrwxrwxrwx 1 root root 7 Oct 3 23:SEO靠我03 bin -> usr/bin drwxr-xr-x 2 root root 44 Oct 3 23:04 dev drwxr-xr-x 2 root root 2SEO靠我40 Oct 3 23:04 etc drwxr-xr-x 3 root root 22 Oct 3 23:12 home lrwxrwxrwx 1 root rootSEO靠我 9 Oct 3 23:03 lib64 -> usr/lib64 drwxr-xr-x 7 root root 70 Oct 3 23:09 usr# cat etc/passwd SEO靠我 root:x:0:0:root:/root:/bin/bash zhangsan:x:1001:1001::/home/zhangsan:/usr/sbin/jk_lsSEO靠我h #上面创建的虚拟系统用户# vim !$ #修改为下面内容 vim etc/passwdroot:x:0:0:root:/root:/bin/bash zhangsSEO靠我an:x:1001:1001::/home/zhangsan:/bin/bash #修改为/bin/bash才能登录该虚拟系统用户 使用xshell登录该虚拟用户:

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

[zhangsan@lzx ~]$ ls[zhangsan@lzx ~]$ ll / bash: ll: command not found[zhangsan@lzx ~]$ lSEO靠我s -l / total 0 lrwxrwxrwx 1 root root 7 Oct 4 03:03 bin -> usr/bin drwxr-xr-SEO靠我x 2 root root 44 Oct 4 03:04 dev drwxr-xr-x 2 root root 240 Oct 4 03:25 etc drwxr-xrSEO靠我-x 3 root root 22 Oct 4 03:12 home lrwxrwxrwx 1 root root 9 Oct 4 03:03 lib64 -> usr/lib64 SEO靠我 drwxr-xr-x 7 root root 70 Oct 4 03:09 usr [zhangsan@lzx ~]$ #按两下Tab键 DisplaySEO靠我 all 116 possibilities? (y or n) ! command elif gunzip more sh typeset ./ compgen elSEO靠我se gzip mv shift ulimit : complete enable hash popd shopt umask [ compopt esac help SEO靠我printf sleep unalias [[ continue eval history pushd source unset ]] coproc exec if pSEO靠我wd ssh until alias cp exit in read suspend vi bash cpio export jobs readarray sync vSEO靠我im bg date false kill readonly tar wait bind dd fc let return test wget breaSEO靠我k declare fg ln rm then while builtin dirs fgrep local rmdir time zcat caller disownSEO靠我 fi logout rsync times { case do for ls scp touch } cat done function mapfile sed trSEO靠我ap cd echo getopts mkdir select true chmod egrep grep mktemp set type #这些就是该虚拟用户所能执行SEO靠我的命令 限定SSH登录: # vim /etc/ssh/sshd_config //做下面修改 PasswordAuthentication no #SEO靠我不允许密码登录 添加防火墙规则: # iptables -I INPUT -p tcp --dport 22 -j ACCEPT #打开22端口 限SEO靠我定登录ip: # vim /etc/hosts.allow sshd: 192.168.100.0/24 1.1.1.1 2.2.2.2 #类似这样限制登录的ip# vSEO靠我im /etc/hosts.deny sshd: ALL #除了上面允许的可以登录,其他所有均不允许登录

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

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

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

再用xshell连接一下这台机器

# ls /usr/local/records/ rSEO靠我oot #已经有root用户的登录记录# ls /usr/local/records/root/ bash_history# cat /usr/local/records/root/bSEO靠我ash_history 2018-10-04 00:34:30 ##### root pts/1 (192.168.100.1) #### reboot # w00:36:53 up SEO靠我33 min, 2 users, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT SEO靠我 root pts/0 192.168.100.1 00:16 13.00s 0.02s 0.02s -bash root pts/1 192.168.100.1 00:34 SEO靠我5.00s 0.00s 0.00s w# ls anaconda-ks.cfg# cat /usr/local/records/root/bash_history 20SEO靠我18-10-04 00:34:30 ##### root pts/1 (192.168.100.1) #### reboot 2018-10-04 00:36:53 ##### rooSEO靠我t pts/1 (192.168.100.1) #### w 2018-10-04 00:36:57 ##### root pts/1 (192.168.100.1) #### ls SEO靠我#这边马上就有记录 在lzx1上创建新用户,然后通过lzx登录该用户:

lzx1上创建用户

# useradd lisi# passwd lisi Changing paSEO靠我ssword for user lisi. New password: BAD PASSWORD: The password is shorter than 8 chaSEO靠我racters Retype new password: passwd: all authentication tokens updated successfully.SEO靠我

lzxSSH登录lzx1上该用户

# ssh lisi@192.168.100.160 The authenticity of host 192.168.100.160 (192.168SEO靠我.100.160) cant be established. ECDSA key fingerprint is SHA256:teKu3atU+OByPeXXD2xXhyb30vg6nSEO靠我W8ETqqCr785Dbc. ECDSA key fingerprint is MD5:13:a4:f1:c0:1f:62:65:d4:f4:4e:42:ab:40:f1:36:60SEO靠我. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently adSEO靠我ded 192.168.100.160 (ECDSA) to the list of known hosts. lisi@192.168.100.160s password: [lisSEO靠我i@lzx1 ~]$ ls [lisi@lzx1 ~]$ w00:40:50 up 37 min, 3 users, load average: 0.02, 0.02, 0.05 USSEO靠我ER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 192.168.100.1 00:16 2.00s 0.03s 0.01s ssh SEO靠我lisi@192.168.100. root pts/1 192.168.100.1 00:34 3:54 0.00s 0.00s -bash lisi pts/2 1SEO靠我92.168.100.150 00:40 2.00s 0.00s 0.00s w[lisi@lzx1 ~]$ ls /usr/local/records/ lisi root[lisiSEO靠我@lzx1 ~]$ cd /usr/local/records/lisi/[lisi@lzx1 lisi]$ ls ls: cannot open directory .: PermiSEO靠我ssion denied #这里是无法读取内容的,只有300权限

lzx1上查看命令历史记录

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

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

28.2 Jumpserver

Jumpserver介绍

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

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

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

功能:

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

安装Jumpserver

下载安装脚本: SEO靠我 # wget https://raw.githubusercontent.com/jumpserver/Dockerfile/mysql/get.sh #下载安装脚本# ls SEO靠我 anaconda-ks.cfg get.sh# cat get.sh #脚本内容其实和安装文档基本一致,这个脚本是在docker容器中运行jumpserver,同时可对Windows机器进行资产管SEO靠我理#!/bin/bash # coding: utf-8 # Copyright (c) 2018 # Gmail: liuzheng712 SEO靠我 #set -eecho "0. 系统的一些配置" setenforce 0 || true systemctl stop iptables.service || SEO靠我true systemctl stop firewalld.service || truelocaledef -c -f UTF-8 -i zh_CN zh_CN.UTF-8 SEO靠我 export LC_ALL=zh_CN.UTF-8 echo LANG=zh_CN.UTF-8 > /etc/locale.confecho "1. 安装基本依赖" SEO靠我 { yum update -y && yum install epel-release -y && yum update -y && yum install wget zip uSEO靠我nzip epel-release nginx sqlite-devel xz gcc automake zlib-devel openssl-devel redis mariadb mariadb-SEO靠我devel mariadb-server supervisor -y } || { echo "yum出错,请更换源重新运行" exit 1 SEO靠我 } cd /opt/echo "2. 准备python" { wget https://www.python.org/ftp/python/3.6SEO靠我.1/Python-3.6.1.tar.xz -O /opt/Python-3.6.1.tar.xz } || { echo "pyhton 依赖包下载出错,请尝试使用SEO靠我特殊工具进行手工下载https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz ,并且放至于/opt/Python-3.6.1.tar.xzSEO靠我,如您是手工下载,请注释上面wget命令再运行本脚本" exit 1 }{ tar xf Python-3.6.1.tar.xz && cd PythoSEO靠我n-3.6.1 && ./configure && make && make install } || { echo "解压或编译python出错,请尝试使用上面的命令SEO靠我手工解压或编译,如手工操作成功,请注释上述代码再运行本脚本" exit 1 } { python3 -m venv /opt/py3 SEO靠我 } || { echo "建立python虚拟环境出错,请尝试手工执行,如手工操作成功,请注释上述代码再运行本脚本" exit 1 } SEO靠我 cd /opt/echo "3. 下载包并解压" { wget https://github.com/jumpserver/jumpserver/archSEO靠我ive/1.0.0.zip -O /opt/jumpserver.zip } || { echo "下载jumpserver包出错,请尝试手工执行,如手工操作成功,请注SEO靠我释上述代码再运行本脚本" exit 1 } { wget https://github.com/jumpserver/coco/archSEO靠我ive/1.0.0.zip -O /opt/coco.zip } || { echo "下载coco包出错,请尝试手工执行,如手工操作成功,请注释上述代码再运行本脚本"SEO靠我 exit 1 } { wget https://github.com/jumpserver/luna/releases/downloaSEO靠我d/v1.0.0/luna.tar.gz -O /opt/luna.tar.gz } || { echo "下载luna包出错,请尝试手工执行,如手工操作成功,请注释上SEO靠我述代码再运行本脚本" exit 1 } cd /opt { unzip coco.zip && mv coco-1.0.SEO靠我0 coco && unzip jumpserver.zip && mv jumpserver-1.0.0 jumpserver && tar xzf luna.tar.gz } ||SEO靠我 { echo "解压出错,请尝试手工执行,如手工操作成功,请注释上述代码再运行本脚本" exit 1 }echo "4. 安装yum依赖" SEO靠我 { yum -y install $(cat /opt/jumpserver/requirements/rpm_requirements.txt) && yum -y instaSEO靠我ll $(cat /opt/coco/requirements/rpm_requirements.txt) } || { echo "安装jumpserver的依赖出错SEO靠我,请尝试手工执行,如手工操作成功,请注释上述代码再运行本脚本" exit 1 }echo "5. 安装pip依赖" { source /SEO靠我opt/py3/bin/activate && pip install --upgrade pip && pip install -r /opt/jumpserver/requirements/reqSEO靠我uirements.txt && pip install -r /opt/coco/requirements/requirements.txt } || { echo SEO靠我"安装jumpserver的依赖出错,请尝试手工执行,如手工操作成功,请注释上述代码再运行本脚本" exit 1 } echo "6. 创建数据库" SEO靠我 mkdir -p /opt/mysql/share/mysql/ { wget https://github.com/jumpserver/DockerfSEO靠我ile/blob/mysql/alpine/mysql_security.sql?raw=true -O /opt/mysql/mysql_security.sql wget httpSEO靠我s://github.com/jumpserver/Dockerfile/blob/mysql/alpine/mysql.cnf?raw=true -O /etc/my.cnf wgeSEO靠我t https://github.com/jumpserver/Dockerfile/blob/mysql/alpine/errmsg.sys?raw=true -O /opt/mysql/shareSEO靠我/mysql/errmsg.sys } || { echo "下载数据库依赖文件出错,请尝试手工执行,如手工操作成功,请注释上述代码再运行本脚本" exSEO靠我it 1 }echo "7. 准备文件" { wget https://github.com/jumpserver/Dockerfile/blob/mySEO靠我sql/alpine/nginx.conf?raw=true -O /etc/nginx/nginx.conf wget https://github.com/jumpserver/DSEO靠我ockerfile/blob/mysql/alpine/supervisord.conf?raw=true -O /etc/supervisord.conf wget https://SEO靠我github.com/jumpserver/Dockerfile/blob/mysql/alpine/jumpserver_conf.py?raw=true -O /opt/jumpserver/coSEO靠我nfig.py wget https://github.com/jumpserver/Dockerfile/blob/mysql/alpine/coco_conf.py?raw=truSEO靠我e -O /opt/coco/conf.py wget https://github.com/jumpserver/Dockerfile/blob/mysql/alpine/startSEO靠我_jms.sh?raw=true -O /opt/start_jms.sh } || { echo "下载配置文件出错,请尝试手工执行,如手工操作成功,请注释上述代码再SEO靠我运行本脚本" exit 1 }echo "8. 配置nginx" cat << EOF > /etc/nginx/conf.d/jumpserver.cSEO靠我onf server {listen 80;proxy_set_header X-Real-IP $remote_addr;proxy_set_header Host $host;prSEO靠我oxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;location /luna/ {try_files $uri / /index.hSEO靠我tml;alias /opt/luna/;}location /media/ {add_header Content-Encoding gzip;root /opt/jumpserver/data/;SEO靠我}location /static/ {root /opt/jumpserver/data/;}location /socket.io/ {proxy_pass http://localhost:50SEO靠我00/socket.io/; # 如果coco安装在别的服务器,请填写它的ipproxy_buffering off;proxy_http_version 1.1;proxy_set_header USEO靠我pgrade $http_upgrade;proxy_set_header Connection "upgrade";}location /guacamole/ {proxy_pass http://SEO靠我localhost:8081/; # 如果guacamole安装在别的服务器,请填写它的ipproxy_buffering off;proxy_http_version 1.1;proxy_set_hSEO靠我eader X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Upgrade $http_upgrade;proxy_set_heSEO靠我ader Connection $http_connection;access_log off;}location / {proxy_pass http://localhost:8080; # 如果jSEO靠我umpserver安装在别的服务器,请填写它的ip} }EOFmkdir -p /opt/nginx/log && chmod -R 777 /opt/nginx { SEO靠我 systemctl restart nginx systemctl enable nginx } || { service restarSEO靠我t nginx } || { nginx -s reload } || { echo "请检查nginx的启动命令" eSEO靠我xit 1 }echo "jumpserver安装完成,请运行/opt/start_jms.sh启动jumpserver"echo "下面开始安装windows组件guacamole,SEO靠我如果不需要管理windows资产,可以取消继续安装"echo "9. 安装docker" yum check-update { curl -fsSL hSEO靠我ttps://get.docker.com/ | sh } || { echo "安装docker 出错,请尝试手工执行,如手工操作成功,请注释上述代码再运行本脚本" SEO靠我 exit 1 }systemctl start docker systemctl enable dockerecho "10. 安装guacamole"SEO靠我 host_ip=`python -c "import socket;print([(s.connect((8.8.8.8, 53)), s.getsockname()[0], s.cSEO靠我lose()) for s in [socket.socket(socket.AF_INET, socket.SOCK_DGRAM)]][0][1])"`docker run --name jms_gSEO靠我uacamole -d \--restart always \-p 8081:8080 -v /opt/guacamole/key:/config/guacamole/key \-e JUMPSERVSEO靠我ER_KEY_DIR=/config/guacamole/key \-e JUMPSERVER_SERVER=http://$host_ip:8080 \registry.jumpserver.orgSEO靠我/public/guacamole:1.0.0 # sh get.sh #执行安装脚本,这个过程时间比较长# echo $? 0 启动jumpserSEO靠我ver: # cd /opt/# sh start_jms.sh #启动jumpserver,建议放到后台执行

登录jumpserver

登录:

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

进来之后,显示为这样

修改密码:

点击Administrator → 个人信息 → 重置密码

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

基本设置:

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

邮箱设置:

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

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

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

创建管理用户

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

点击资产管理 → 管理用户 → SEO靠我创建管理用户

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

# cd .ssh/# ssh-keygen -f jump #-f 指定密钥对名字 Generating public/private rSEO靠我sa key pair. Enter passphrase (empty for no passphrase): #直接回车 Enter same passphraseSEO靠我 again: #直接回车 Your identification has been saved in jump. Your public key has been sSEO靠我aved in jump.pub. The key fingerprint is: SHA256:RKNvYt4C6LS3D9BRUOUy4GZZWiMtS1xe0tPSEO靠我lotbVR0M root@lzx The keys randomart image is: +---[RSA 2048]----+ | .+=Oo=.SEO靠我 .. .E.| | .+X.Bo... . ..| | .Bo= o.. o . .| | =.. = o o . | | + o oSEO靠我 S . | | o o + = | | o o o . | | . o . | | ... | +----[SHA25SEO靠我6]-----+# ls authorized_keys jump jump.pub

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

# cat jump-----BEGIN RSA SEO靠我PRIVATE KEY----- MIIEpAIBAAKCAQEAsT/iVUC2flWb2nDCb2EIb09f6qd9fvS9XcszH5nnKfgKeoJj ErSEO靠我1AnPa8phRmWXUmWIujK+88FMa6AmFxPIJTkhI8TVbO0yMiAum692KcHy8oSnMd 3Sml/ZFTN/x4/6qCQo/GeTq2uD/peSEO靠我ahSOvnKUSnapmsT2rQA2d7A11y/AfPd+mh0 eVygm3k1drABdvgPigX2Gmv+P8fA7v20Oww4Kc2egk/33YVg4DlXcT56SEO靠我fzzlxNpP t3qd3z7/0+QJEInm++phRdYlzDkEsw81/HuAMmF2dCRfCLaOwryxxoczaxcqToX7 3z6spq1u/SSEO靠我sSFHS9hBcKBv1yzjbihqUOKPMIBQIDAQABAoIBABSiGCnOb7ADLTJf f/LRO9chSUwalTxLJyQc/GWIV+WFz0p1lSzgRSEO靠我P5AprM6mrN9NKqIDsWVgsv0WkDe sPzXOv09DDIAkfD4HQRzyuTzYLMsnScVgXt2VrFO0n4o8LjqU2GGNRd1o0GNhxM3SEO靠我 aeMdotSR57cJrfT+kT7LdG1diYqjdA4kYFL3KHb427oUths2k0sV15LzucTbMrtv 2/HQYfYZNwacMP7UTXSEO靠我P44TLzPlby/4/gmDmR/eel634Q5EWDkLBUejc5xbyN9z6Y 0nmmEssa7ZHyyF0BljawIXWB+qAuaq3dn1+A5vmSDH+2WSEO靠我jh4YiZsEKl7AMM9EBjo 3OtNxcECgYEA5ca0poPIrgF/fP30+5iu7oPISR1NmSbPXMOZDLz7fvRMQr13fgkE SEO靠我 KwhJ2GoM5siaAY+/UqcO8HGcvI58HUdHO5TZknEpbWlo338ZuGyXBns7Tuy2FE+U FrXPVDiC0OqcbhGpKBM7KkGtsmSEO靠我p7vy5X9QayakpqxGCFK5RY8cG3mHECgYEAxXqG YywOlL2RVmOTUdeNMo1VYLj0wtV9a/d+2Uz+x0lUwhZp0iY0ORbXmSEO靠我TUmmCuARyKc WBizo7WEXAk6Em3keHfFY4/IxkRr0bJDGn0Mj2uXA8MmIrs3gFRj6hmhMDIf1hme VnXdpFZSEO靠我mt9l+TO6MXsLHrc/Yb7zKvHvyL6itUtUCgYEA2ioFggikNNrFQlcaEPyS M3K6avlAoUZhInGw0pBotcycz813NBq5c2SEO靠我ZGPw3KPCGBYDQs8vwdShyFNd6PZ3ky 4BZfUhTRwcmQwou6TwoDhyrgT/qeksBQGhP7y7pwMo5fgn6QPrWrul5r3ngOESEO靠我KKe 7s2x/wuzPctrBcqvfLNyb3ECgYEAg9aV65WZMnIQmpUl4EjAqlQzALzaI0z2S+NS m25M1e0+Gclu4m7SEO靠我BBLAcRdt3JbY9EMCpkiMDozLm5679Rxp4oniLnjl69+rr9HZH WGLNxN42VrutNRi6KAGvJrXvp8Z+/KfjzqMn0rQgJXSEO靠我OdX20O56CwQHj3bTmkPAuf l3PMKvUCgYA09+rycOzqDF/eawtByzkRD6OaEliIiqXhdBntK6n6NxJB1++uL9F2 SEO靠我 5WPW7KAFWdz/pNjYJ7LDLJeN8WWBJSvMS/v1a9PSRp7xal8i/853mqIbGZMLMwQC Trdyy1Vq37zZjqiCy5LXoyUSEO靠我J+4zCRGaSbxU0RHA7srIh/iJlm+i0iw== -----END RSA PRIVATE KEY-----

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

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

# cat jump.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCxPSEO靠我+JVQLZ+VZvacMJvYQhvT1/qp31+9L1dyzMfmecp+Ap6gmMSvUCc9rymFGZZdSZYi6Mr7zwUxroCYXE8glOSEjxNVs7TIyIC6br3YSEO靠我pwfLyhKcx3dKaX9kVM3/Hj/qoJCj8Z5Ora4P+l5qFI6+cpRKdqmaxPatADZ3sDXXL8B8936aHR5XKCbeTV2sAF2+A+KBfYaa/4/xSEO靠我8Du/bQ7DDgpzZ6CT/fdhWDgOVdxPnp/POXE2k+3ep3fPv/T5AkQieb76mFF1iXMOQSzDzX8e4AyYXZ0JF8Ito7CvLHGhzNrFypOhSEO靠我fvfPqymrW79KxIUdL2EFwoG/XLONuKGpQ4o8wgF root@lzx

lzx1(客户机)上操作

# useradd jump# su - jump[jump@lzx1 ~]$ SEO靠我mkdir .ssh[jump@lzx1 ~]$ vim .ssh/authorized_keys #添加下面内容 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAASEO靠我ABAQCxP+JVQLZ+VZvacMJvYQhvT1/qp31+9L1dyzMfmecp+Ap6gmMSvUCc9rymFGZZdSZYi6Mr7zwUxroCYXE8glOSEjxNVs7TIySEO靠我IC6br3YpwfLyhKcx3dKaX9kVM3/Hj/qoJCj8Z5Ora4P+l5qFI6+cpRKdqmaxPatADZ3sDXXL8B8936aHR5XKCbeTV2sAF2+A+KBfSEO靠我Yaa/4/x8Du/bQ7DDgpzZ6CT/fdhWDgOVdxPnp/POXE2k+3ep3fPv/T5AkQieb76mFF1iXMOQSzDzX8e4AyYXZ0JF8Ito7CvLHGhzSEO靠我NrFypOhfvfPqymrW79KxIUdL2EFwoG/XLONuKGpQ4o8wgF root@lzx[jump@lzx1 ~]$ chmod 700 .ssh/[jump@lzx1 ~]$ SEO靠我chmod 400 .ssh/authorized_keys

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

# ssh -i jump jump@192.168.100.160 #登录lzx1 SEO靠我 The authenticity of host 192.168.100.160 (192.168.100.160) cant be established. ECDSA kSEO靠我ey fingerprint is SHA256:teKu3atU+OByPeXXD2xXhyb30vg6nW8ETqqCr785Dbc. ECDSA key fingerprint SEO靠我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 coSEO靠我nnecting (yes/no)? yes Warning: Permanently added 192.168.100.160 (ECDSA) to the list of knoSEO靠我wn hosts. Last login: Fri Oct 5 04:24:14 2018 [jump@lzx1 ~]$ #说明没问题。上面如果提示输入密码登录则说明不SEO靠我成功

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

创建普通用户

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

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

用户管理 → 用户列表 → 创建用户,创建一个普通用SEO靠我户 zhangsan

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

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

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

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

添加机器

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

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

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

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

点击提交

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

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

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

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

添加系统用户并授权

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

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

资产SEO靠我管理 → 系统用户 → 创建系统用户

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

添加授权规则

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

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

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

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

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

可能的原因有三个:

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

更多资料参考:

v0.5.0 应用图解

Centos6.9 安装最新版本jumpserver

Jumpserver的搭建

“SEO靠我”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与 我们联系删除或处理,客服邮箱:html5sh@163.com,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同 其观点或证实其内容的真实性。

网站备案号:浙ICP备17034767号-2