赞
踩
堡垒机,即在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,而运用各种技术手段实时收集和监控网络环境中每一个组成部分的系统状态、安全事件、网络活动,以便集中报警、及时处理及审计定责。
其从功能上讲,它综合了核心系统运维
和安全审计管控
两大主干功能,从技术实现上讲,通过切断终端计算机对网络和服务器资源的直接访问,而采用协议代理的方式,接管了终端计算机对网络和服务器的访问。形象地说,终端计算机对目标的访问,均需要经过运维安全审计的翻译。打一个比方,运维安全审计扮演着看门者的工作,所有对网络设备和服务器的请求都要从这扇大门经过。因此运维安全审计能够拦截非法访问,和恶意攻击,对不合法命令进行命令阻断,过滤掉所有对目标设备的非法访问行为,并对内部人员误操作和非法操作进行审计监控,以便事后责任追踪。
我们也把堡垒机称为跳板机,简易的跳板机功能简单,核心功能是远程登录服务器和日志审计,但堡垒机还有资产管理(CMDB)、监控及用户权限等功能。目前比较优秀的开源软件有Jumpserver、Teleport、GateOne、CrazyEye等;商业的堡垒机功能更为强大,有齐治、Citrix XenApp等。
接下来我们尝试搭建一个简易的堡垒机,主要功能是登录内网的服务器和日志审计。
搭建堡垒机的条件是,该机器有公网ip和内网ip,其中内网和其他机器互通。
设计堡垒机的思路:
# 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 zhangsan
Changing password for user zhangsan.
New password: #设置密码123456,后面需要登录
BAD PASSWORD: The password is shorter than 8 characters
Retype 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/ # ll total 0 lrwxrwxrwx 1 root root 7 Oct 3 23:03 bin -> usr/bin drwxr-xr-x 2 root root 44 Oct 3 23:04 dev drwxr-xr-x 2 root root 240 Oct 3 23:04 etc drwxr-xr-x 3 root root 22 Oct 3 23:12 home lrwxrwxrwx 1 root root 9 Oct 3 23:03 lib64 -> usr/lib64 drwxr-xr-x 7 root root 70 Oct 3 23:09 usr # cat etc/passwd root:x:0:0:root:/root:/bin/bash zhangsan:x:1001:1001::/home/zhangsan:/usr/sbin/jk_lsh #上面创建的虚拟系统用户 # vim !$ #修改为下面内容 vim etc/passwd root:x:0:0:root:/root:/bin/bash zhangsan:x:1001:1001::/home/zhangsan:/bin/bash #修改为/bin/bash才能登录该虚拟系统用户
成功登录后,我们查看一下
[zhangsan@lzx ~]$ ls
[zhangsan@lzx ~]$ ll /
bash: ll: command not found
[zhangsan@lzx ~]$ ls -l /
total 0
lrwxrwxrwx 1 root root 7 Oct 4 03:03 bin -> usr/bin
drwxr-xr-x 2 root root 44 Oct 4 03:04 dev
drwxr-xr-x 2 root root 240 Oct 4 03:25 etc
drwxr-xr-x 3 root root 22 Oct 4 03:12 home
lrwxrwxrwx 1 root root 9 Oct 4 03:03 lib64 -> usr/lib64
drwxr-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 until alias cp exit in read suspend vi bash cpio export jobs readarray sync vim bg date false kill readonly tar wait bind dd fc let return test wget break declare fg ln rm then while builtin dirs fgrep local rmdir time zcat caller 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 #这些就是该虚拟用户所能执行的命令
# vim /etc/ssh/sshd_config //做下面修改
PasswordAuthentication no #不允许密码登录
# iptables -I INPUT -p tcp --dport 22 -j ACCEPT #打开22端口
# vim /etc/hosts.allow
sshd: 192.168.100.0/24 1.1.1.1 2.2.2.2 #类似这样限制登录的ip
# vim /etc/hosts.deny
sshd: ALL #除了上面允许的可以登录,其他所有均不允许登录
接下来还要做日志审计功能,这一步需要我们在所有被登陆的机器上操作。
这里我让lzx作为跳板机,lzx1作为客户机,在lzx1上操作。
# vim /etc/hosts.allow
sshd:192.168.100.150
# vim /etc/hosts.deny
sshd: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} ] then mkdir -p /usr/local/records/${LOGNAME} #根据登录名创建同名子文件夹 chmod 300 /usr/local/records/${LOGNAME} #赋予300权限 fi export 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.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT 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 5.00s 0.00s 0.00s w # ls anaconda-ks.cfg # cat /usr/local/records/root/bash_history 2018-10-04 00:34:30 ##### root pts/1 (192.168.100.1) #### reboot 2018-10-04 00:36:53 ##### root pts/1 (192.168.100.1) #### w 2018-10-04 00:36:57 ##### root pts/1 (192.168.100.1) #### ls #这边马上就有记录
lzx1上创建用户
# useradd lisi
# passwd lisi
Changing password for user lisi.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
lzxSSH登录lzx1上该用户
# ssh lisi@192.168.100.160 The 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)? yes Warning: 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.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root 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 -bash lisi 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]$ ls ls: 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) #### ls
2018-10-04 00:40:50 ##### lisi pts/2 (192.168.100.160) #### w
2018-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
这里就简单是实现了堡垒机的功能,但是这种方法是不完美的,也是可以破解的。我们想要实现比较完善的堡垒机功能,还是需要借助一些专门的工具或软件。
官网:http://www.jumpserver.org/ ,安装文档:http://docs.jumpserver.org/zh/docs/step_by_step.html 。
jumpserver是一款使用Python、Django开发的开源跳板机系统,可以实现认证、授权、审计及自动化运维功能,助力企业高效用户、资产、权限、审计管理。它是完全开源的,我们可以针对它来进行二次开发,实现更多的功能。
jumpserver采纳分布式架构,支持多机房跨区域部署,中心节点提供 API,各机房部署登录节点,可横向扩展、无并发限制。
功能:
Auth统一认证
CMDB资产管理
日志审计
自动化运维(ansible)
# 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 -e echo "0. 系统的一些配置" setenforce 0 || true systemctl stop iptables.service || true systemctl stop firewalld.service || true localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8 export LC_ALL=zh_CN.UTF-8 echo 'LANG=zh_CN.UTF-8' > /etc/locale.conf echo "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.sql wget https://github.com/jumpserver/Dockerfile/blob/mysql/alpine/mysql.cnf?raw=true -O /etc/my.cnf wget 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.conf wget https://github.com/jumpserver/Dockerfile/blob/mysql/alpine/supervisord.conf?raw=true -O /etc/supervisord.conf wget https://github.com/jumpserver/Dockerfile/blob/mysql/alpine/jumpserver_conf.py?raw=true -O /opt/jumpserver/config.py wget https://github.com/jumpserver/Dockerfile/blob/mysql/alpine/coco_conf.py?raw=true -O /opt/coco/conf.py wget 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.conf server { 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 } } EOF mkdir -p /opt/nginx/log && chmod -R 777 /opt/nginx { systemctl restart nginx systemctl 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 docker systemctl enable docker echo "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
# cd /opt/
# sh start_jms.sh #启动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@lzx The 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]-----+ # ls authorized_keys jump jump.pub
我们要的是私钥,将私钥复制粘贴到一个文本文档,导入
# cat jump -----BEGIN RSA PRIVATE KEY----- MIIEpAIBAAKCAQEAsT/iVUC2flWb2nDCb2EIb09f6qd9fvS9XcszH5nnKfgKeoJj Er1AnPa8phRmWXUmWIujK+88FMa6AmFxPIJTkhI8TVbO0yMiAum692KcHy8oSnMd 3Sml/ZFTN/x4/6qCQo/GeTq2uD/peahSOvnKUSnapmsT2rQA2d7A11y/AfPd+mh0 eVygm3k1drABdvgPigX2Gmv+P8fA7v20Oww4Kc2egk/33YVg4DlXcT56fzzlxNpP t3qd3z7/0+QJEInm++phRdYlzDkEsw81/HuAMmF2dCRfCLaOwryxxoczaxcqToX7 3z6spq1u/SsSFHS9hBcKBv1yzjbihqUOKPMIBQIDAQABAoIBABSiGCnOb7ADLTJf f/LRO9chSUwalTxLJyQc/GWIV+WFz0p1lSzgRP5AprM6mrN9NKqIDsWVgsv0WkDe sPzXOv09DDIAkfD4HQRzyuTzYLMsnScVgXt2VrFO0n4o8LjqU2GGNRd1o0GNhxM3 aeMdotSR57cJrfT+kT7LdG1diYqjdA4kYFL3KHb427oUths2k0sV15LzucTbMrtv 2/HQYfYZNwacMP7UTXP44TLzPlby/4/gmDmR/eel634Q5EWDkLBUejc5xbyN9z6Y 0nmmEssa7ZHyyF0BljawIXWB+qAuaq3dn1+A5vmSDH+2Wjh4YiZsEKl7AMM9EBjo 3OtNxcECgYEA5ca0poPIrgF/fP30+5iu7oPISR1NmSbPXMOZDLz7fvRMQr13fgkE KwhJ2GoM5siaAY+/UqcO8HGcvI58HUdHO5TZknEpbWlo338ZuGyXBns7Tuy2FE+U FrXPVDiC0OqcbhGpKBM7KkGtsmp7vy5X9QayakpqxGCFK5RY8cG3mHECgYEAxXqG YywOlL2RVmOTUdeNMo1VYLj0wtV9a/d+2Uz+x0lUwhZp0iY0ORbXmTUmmCuARyKc WBizo7WEXAk6Em3keHfFY4/IxkRr0bJDGn0Mj2uXA8MmIrs3gFRj6hmhMDIf1hme VnXdpFZmt9l+TO6MXsLHrc/Yb7zKvHvyL6itUtUCgYEA2ioFggikNNrFQlcaEPyS M3K6avlAoUZhInGw0pBotcycz813NBq5c2ZGPw3KPCGBYDQs8vwdShyFNd6PZ3ky 4BZfUhTRwcmQwou6TwoDhyrgT/qeksBQGhP7y7pwMo5fgn6QPrWrul5r3ngOEKKe 7s2x/wuzPctrBcqvfLNyb3ECgYEAg9aV65WZMnIQmpUl4EjAqlQzALzaI0z2S+NS m25M1e0+Gclu4m7BBLAcRdt3JbY9EMCpkiMDozLm5679Rxp4oniLnjl69+rr9HZH WGLNxN42VrutNRi6KAGvJrXvp8Z+/KfjzqMn0rQgJXOdX20O56CwQHj3bTmkPAuf l3PMKvUCgYA09+rycOzqDF/eawtByzkRD6OaEliIiqXhdBntK6n6NxJB1++uL9F2 5WPW7KAFWdz/pNjYJ7LDLJeN8WWBJSvMS/v1a9PSRp7xal8i/853mqIbGZMLMwQC Trdyy1Vq37zZjqiCy5LXoyUJ+4zCRGaSbxU0RHA7srIh/iJlm+i0iw== -----END RSA PRIVATE KEY-----
点击提交
后提示 jump 创建成功。
之后需要到客户机上创建用户jump,并复制堡垒机上的公钥到authorized_keys
文件中
# cat jump.pub
ssh-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 #登录lzx1
The 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)? yes
Warning: 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来登录查看。
可能的原因有三个:
更多资料参考:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。