Centos下堡垒机Jumpserver V3.0环境部署完整记录(2)-配置篇

 

前面已经介绍了Jumpserver V3.0的安装,基于这篇安装文档,下面说下Jumpserver安装后的的功能使用:html

1、jumpserver的启动python

Jumpserver的启动和重启
[root@test-vm001 install]# /opt/jumpserver/service.sh start/restart

2、按照Jumpserver部署过程结尾的帐号信息(admin/wangadmin@123)登录Jumpserver的web界面linux

修改admin超级管理员的密码web

只修改admin的密码便可,SSH秘钥不须要从新生成shell

而后注销,使用admin重置后的新密码登录Jumpserver!vim

3、下面正式记录下Jumpserver的用户添加、推送及堡垒机方式登录到目标机器的操做api

1. 添加用户组(以下以添加ops用户组为例)安全

2. 添加用户(以下以添加wangshibo用户为例;注意这个用户添加成功后,也会在Jumpserver部署机上自动生成。那么删除这个用户后,也会自动从部署机上删除bash

而后到上面添加wangshibo用户时配置的邮箱里会收到一封邮件,以下:服务器

对于上面邮件里的内容,要注意如下几点:

  • web登陆密码:是指使用wangshibo用户登录Jumpserver的web界面的密码,这个密码在王士博用户登录到Jumpserver界面后能够修改。
  • 密钥下载地址:是指下载wangshibo用户登录Jumpserver部署机的密码的地址,能够经过打开邮件里的这个地址进行下载;也能够在wangshibo用户添加成功后,点击Jumpserver界面里"查看用户"->"wangshibo"后面的"下载"按钮。
  • ssh密钥文件密码:是指在使用wangshibo用户的key(即第2步中下载的秘钥)登录Jumpserver部署机时要输入的密码。

===============================================================================================
特别注意一点:
在Jumpserver里添加的用户的秘钥下载后默认是pem格式的证书文件。Xshell和SecureCRT客户端能够直接使用pem格式的证书文件进行登录(可是注意低版本的SecureCRT仍是须要将这个转化为.pub格式后才能登录)
作法以下:
1)将下载的这个wangshibo.pem秘钥文件放到任意一台linux主机上进行转化为.pub格式的公钥文件的操做(root帐号下操做,而且要保证wangshibo.pem文件上传到linux机器上后的权限是600!注意: 若是在其余帐号下操做, 须要保证这个帐号对下载下来的wangshibo.pem.pub文件有操做权限, 好比设置为777)
localhost:Downloads root# ssh-keygen -e -f wangshibo.pem >> wangshibo.pem.pub
Enter passphrase: //注意这里输入的密码就是上面邮件中的"您的ssh密钥文件密码:"
localhost:Downloads root# ls -l wangshibo.*
-rw-------@ 1 kevin staff 1766 Sep 24 20:36 wangshibo.pem
-rw-r--r-- 1 root staff 506 Sep 24 20:39 wangshibo.pem.pub

2)而后将转化后的wangshibo.pem.pub公钥文件拷贝给用户,使用SecureCRT客户端登陆Jumpserver部署机。(以下图,PublicKey的方式要推放到最前面)

 

以下,须要输入的密码便是上面邮件中收到的ssh密钥文件密码(即 9f4ZCpvEiCy3wbS0)

---------------------或者在MAC或linux终端里直接ssh使用.pem秘钥文件登录------------------------
找到wangshibo.pem的下载路径,使用ssh登录
localhost:~ root# cd /Users/kevin/Downloads/
localhost:Downloads root# ls -l wangshibo.pem
-rw-r--r--@ 1 kevin  staff  1766 Sep 29 16:06 wangshibo.pem
localhost:Downloads root# ssh -i /Users/kevin/Downloads/wangshibo.pem -p22 wangshibo@172.16.220.128        //须要在root帐号下操做。普通用户要在sudo下操做,(sudo能够限制到只能ssh操做,好比:wangshibo     ALL=(ALL)    NOPASSWD: /usr/bin/ssh)
Enter passphrase for key '/Users/kevin/Downloads/wangshibo.pem':               //输入上面邮件中收到的ssh密钥文件密码(即 9f4ZCpvEiCy3wbS0)
Last login: Fri Sep 29 17:08:19 2017 from 10.45.225.9
 
Welcome to aliyun Elastic Compute Service!
 
 
###    欢迎使用Jumpserver开源跳板机系统   ###
 
        1) 输入 ID 直接登陆.
        2) 输入 / + IP, 主机名 or 备注 搜索.
        3) 输入 P/p 显示您有权限的主机.
        4) 输入 G/g 显示您有权限的主机组.
        5) 输入 G/g + 组ID 显示该组下主机.
        6) 输入 E/e 批量执行命令.
        7) 输入 U/u 批量上传文件.
        8) 输入 D/d 批量下载文件.
        9) 输入 H/h 帮助.
        0) 输入 Q/q 退出.
 
Opt or ID>:

====================================================
这里注意下: 若是直接使用邮件里的web登陆密码也是能够的
# ssh -22 wangshibo@172.16.220.128
输入邮件中的web登陆密码, 好比上面邮件中的"fpolnS1slCgjPgzg"

登陆后的效果, 和上面用pem登陆的密码一致

===========================还能够作成expect脚本方式登录===============================

将下载的用户密钥文件(如wangshibo.pem)放到一台linux服务器的一个用户家目录(好比/home/wangshibo)下,编写expect脚本(安装参考:http://www.cnblogs.com/kevingrace/p/5900303.html)
操做记录以下(wangshibo用户在这台linux服务器上有sudo ssh的权限):
[wangshibo@sh-sre-man01 ~]$ pwd
/home/wangshibo

[wangshibo@sh-sre-man01 ~]$ cat shanghai-jump 
#!/bin/expect  
set timeout 30  
spawn sudo ssh -i /home/wangshibo/wangshibo.pem -p22 wangshibo@122.161.155.17
expect "'/home/wangshibo/wangshibo.pem':"  
send "9f4ZCpvEiCy3wbS0\r"  
interact 

[wangshibo@sh-sre-man01 ~]$ ./shanghai-jump 
spawn sudo ssh -i /home/wangshibo/wangshibo.pem -p22 wangshibo@122.161.155.17
Enter passphrase for key '/home/wangshibo/wangshibo.pem': 
Last login: Mon Oct 16 12:43:26 2017 from 111.110.111.141

Welcome to aliyun Elastic Compute Service!


###    欢迎使用Jumpserver开源跳板机系统   ### 

        1) 输入 ID 直接登陆.
        2) 输入 / + IP, 主机名 or 备注 搜索.
        3) 输入 P/p 显示您有权限的主机.
        4) 输入 G/g 显示您有权限的主机组.
        5) 输入 G/g + 组ID 显示该组下主机.
        6) 输入 E/e 批量执行命令.
        7) 输入 U/u 批量上传文件.
        8) 输入 D/d 批量下载文件.
        9) 输入 H/h 帮助.
        0) 输入 Q/q 退出.

Opt or ID>: p
[ID ] 主机名    IP               端口  系统用户  备注
[0  ] sh-sre-man01    111.110.111.141   2200   ['ops', 'devs', 'work']  
[1  ] sh-api-dmk01    111.110.111.140   22     ['ops', 'devs', 'work']  
[2  ] sh-api-dmk02    111.110.111.139   22     ['ops', 'devs', 'work']  
[3  ] sh-inf-deploy01 111.110.111.146   22     ['ops', 'devs', 'work']  
[4  ] sh-sre-monitor01 111.110.111.148   22     ['ops', 'devs', 'work']  
[5  ] sh-db-dmk01     111.110.111.142   22     ['ops', 'devs', 'work']  
[6  ] sh-db-dmk02     111.110.111.143   22     ['ops', 'devs', 'work']  
[7  ] sh-srv-dmk02    111.110.111.144   22     ['ops', 'devs', 'work']  

Opt or ID>: 2
[ID] 系统用户
[0 ] ops
[1 ] devs
[2 ] work

受权系统用户超过1个,请输入ID, q退出
ID>: 0
Last login: Sat Oct 14 23:30:26 2017 from 122.161.155.17

Welcome to aliyun Elastic Compute Service!

[ops@sh-api-dmk02 ~]$

-------------------------------------------------------------------------------------------------------------------------------

3. 添加资产组、机房

4. 如今开始添加机器资产(也就是添加要从跳板机登录管理的目标机器)

注意一点:能够一台台添加,也能够选择使用批量添加,有批量添加的模版。这里我暂且使用单台添加做为演示。另外:管理用户是指目标客户机上真实存在用户,这个最好填目标主机的root用户(以及目标主机的root的真实密码),若是填写真实存在的普通用户,则它必须拥有NOPASSWD: ALL sudo权限。管理用户的做用是用于推送系统用户(也就是说这个管理用户最好使用root,若是是非root帐号,那么它必须拥有NOPASSWD: ALL sudo权限!)

以下添加三台主机资产

经过"编辑"主机,将其划到相应的机房里,完善主机信息

5. 下面开始权限管理的设置
先添加Sudo,这里的sudo实际上是Linux中的sudo命令别名,一个sudo别名包含多个命令, 系统用户关联sudo就表明该系统用户有权限sudo执行这些命令。固然能够建立多Sudo,划分给不一样权限的用户。以下,建立两个Sudo

============下面是使用过的一个sudo受权==============

如上,设置sudo的别名,设置后,系统用户须要绑定这些sudo的别名,而后进行推送(后续追加sudo命令,就再次进行"从新推送")
推送成功后,查看目标机器的/etc/sudoers文件,能够看到设置的sudo信息

===============================================================

接着添加系统用户。系统用户是服务器上创建的一些真实存在的能够ssh登录的用户,如work,ops,dev等,系统用户可以使用资产的管理用户将其推送到添加的目标资产服务器上。这里我添加了三个系统用户,分别为work、ops、dev(添加时的用户密码随便定义,好比work@12三、ops@12三、dev@123)。这些系统用户在Jumpserver界面里添加成功后,会自动推送到添加的目标主机上。
特别须要注意一点:这里的系统用户不能使用root!必须是非root用户!而后经过定义的各类sudo进行不一样的相关操做(好比容许ops切换到root帐号下)

========建立上面系统用户的时候可能报错========

报错:'module' object has no attribute 'getStrongPrime'

解决办法:
注释/usr/lib64/python2.6/site-packages/Crypto/Util/number.py文件中的下面两行,而后重启jumpserver便可
    #if _fastmath is not None:
    #    return _fastmath.getStrongPrime(long(N), long(e), false_positive_prob, randfunc)

系统用户建立好以后,必定要记得点击"推送",将这些系统用户及其密码、sudo的信息推送到添加的目标服务器上。固然,后续要是在jumpserver的界面里删除这个系统用户,那么目标机器上也会自动删除这个系统用户!以下,将这三个系统用户都推送到目标机器上。若是推送成功,则会出现一个相似"系统用户 work 推送成功[ test-vm03,test-vm02,test-vm04 ]"的提示。

能够在系统用户列表,点击系统用户名称,进去查看系统用户的推送状况。好比查看work系统用户的推送状况

---------------------------------------------------------------------------------------------------
新增主机的推送:
系统用户列表->点击系统用户名称(好比work)->work-未推送主机->点击新增主机,进行推送操做
---------------------------------------------------------------------------------------------------

推送成功后还能够直接到目标机器上查看推送效果。好比到test-vm02机器上查看:

[root@test-vm02 ~]# cat /etc/passwd
.......
work:x:1000:1000::/home/work:/bin/bash
ops:x:1001:1001::/home/ops:/bin/bash
dev:x:1002:1002::/home/dev:/bin/bash

[root@test-vm02 ~]# cat /etc/sudoers
......
Cmnd_Alias SUPERADMIN = /bin/*, /sbin/*
work ALL = (root)  NOPASSWD: SUPERADMIN
ops ALL = (root)  NOPASSWD: SUPERADMIN
Cmnd_Alias DEVADMIN = /usr/bin/vim, /usr/bin/tar, /usr/bin/gzip, /usr/bin/rsync, /usr/bin/tail
dev ALL = (root)  NOPASSWD: DEVADMIN

如上,说明test-vm02机器已经被推送成功了。其余机器的检查方法跟上面同样。

-----------------------------------------------------------------------------------------------------------------------

这里说下推送失败的案例1:
在系统用户列表,点击系统用户名称,查看系统用户推送详情,把鼠标放到失败按钮上,会看到失败的缘由。

能够登录其中的一台服务器好比test-vm02上,查看/var/log/message日志信息,再结合上面截图中的报错,缘由是执行/etc/sudoers文件时,发现没有work用户!也就是说work用户没有useradd建立成功!那么就尝试在test-vm02机器上手动建立work帐号,以下:

果真是useradd建立系统用户失败致使的!解决办法:

[root@test-vm02 ~]# rm -f /etc/gshadow.lock

这样就OK了!能够再次手动useradd建立work帐号试试,建立成功后再userdel删除它!
最后别忘记在/etc/sudoers文件里删除底部添加的work帐号的sudo设置信息,由于这是推送失败的那次添加的sudo信息,删除后从新推送下,不然配置信息就会重叠!
其余服务器的处理方法跟这个同样!

------------------------------------------------------------------------------------------------------------------------

再说下推送失败的案例2

解决方案:http://www.cnblogs.com/kevingrace/p/5893121.html
修改后,能够重启jempserver(即/opt/jumpserver/server.sh restart)

------------------------------------------------------------------------------------------------------------------------

推送失败的案例3

推送用户的时候,以下报错:
Aborting,target uses selinux but python bindings(libselinux-python)aren‘t installed

解决办法:
yum install -y libselinux-python

=======================================================================
推送系统用户失败的案例4:SSH Error: Permission denied (publickey,password).....
缘由多是:1)添加资产的时候,填写的"管理用户名"和"密码"有误所致的! 2)jumpserver部署机器在ssh登录目标机器时,报错:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!。即在jumpserver部署机的/root/.ssh/known_hosts文件里删除目标机器的链接信息就好了。

------------------------------------------------------------------------------------------------------------------------

最后进行"受权规则"的建立

到此,Jumpserver堡垒机的设置已完成!

4、下面正式记录下Jumpserver堡垒机的使用

注销admin用户登录的Jumpserver,使用wangshibo用户登录Jumpserver的web界面

点击主机后面的"链接"按钮,选择一个系统用户,好比work用户,而后在webshell里面就能登录主机了!(其余用户的操做方法与这个是同样的)

也能够直接使用下载的wangshibo用户的秘钥直接登录到堡垒机上进行操做(登录方式在上面已经介绍了,使用SecureCRT客户端登陆)

5、Jumpserver其余功能介绍

1. 日志审计(记录了服务器的在线状况、每一个用户的登录历史、命令记录、上传下载记录)。也能够直接在"仪表盘"中查看全部机器的综合信息!

2. 上传下载功能(前提是Jumpserver部署机上要有rz、sz命令,这个在部署环境以前就已经yum lrzsz安装了。上传下载功能都只能在非admin管理员帐号下操做)

2.1)上传功能
首先使用wangshibo用户登录Jumpserver界面,将须要上传的文件或者目录拖拽上去,或者点击下面的Drop files to upload"后在弹出的提示框中选择须要上传的文件或目录,而后点击"所有上传",注意:上传文件默认放在目标服务器的/tmp目录下,由于tmp下临时共享目录,普通用户都有操做权限。


而后就到test-vm0二、test-vm0三、test-vm04服务器上查看是否已成功上传了文件(以下以test-vm02为例)

也能够在命令行进行上传操做,也是上传到对应服务器的/tmp目录下

2.2)下载功能
注意:下载文件的路径必定要是真实存在目标主机的/tmp临时共享目录下的,其余目录路径无效!而且路径要精确到文件!!!(下载后的文件默认自动打包)以下:

能够在命令行进行下载操做,下载路径要是对应服务器的/tmp目录下的文件。下载后以打包形式存在。

3. 批量执行命令:

除此以外,也可使用普通用户(好比wangshibo)登录jumpserver界面,在界面里批量执行:

4. "设置功能",以下设置后,添加"资产"的时候,在"管理帐号"这一项就能够选择"使用默认"了。

--------------------------------------------------------------------------------------------------------------------------
最后说下在Jumpserver里面批量添加主机资产的操做(先导出模版,而后在模版里填好主机信息,最后再导入模版文件)。以下导出的模版改名为jumpserver.xlsx:

注意:添加主机(或批量添加主机)后,推送系统用户,有时会失败,好比报错SSH Error: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password或认证失败。 这时能够尝试删除主机,从新添加主机,而后从新推送系统用户还有,用于推送系统用户的管理用户(如上,选用root做为管理用户)的密码必定要正确!(必定要是真实存在于主机上的用户的真实密码!,不然推送就会失败)

--------------------------------------------------------------------------------------------
发现jumpserver部署机在堡垒机环境搞好后,不能正常su切换到其余用户下,报错以下:
"没有该用户,或许你是以root运行的 No that user."

解决办法注释掉connect.py文件的下面两行判断设置便可(注释后不须要重启jumpserver服务)!
[root@test-vm01 jumpserver]# cd
[root@test-vm01 ~]# cd /opt/jumpserver
[root@test-vm01 jumpserver]# vim connect.py
#if not login_user: # 判断用户是否存在
# color_print('没有该用户,或许你是以root运行的 No that user.', exits=True)

而后再尝试su切换用户就能够了。

总结:
jumpserver堡垒机在刚部署好的时候,本机使用su切换到其余用户下,默认是不行的,须要按照上面的方式解决后才能su切换。
堡垒机本机上su切换到其余用户,都是会进入到堡垒机使用界面的(如上),可是只有推送后的系统用户才能成功跳转到其余机器上。

--------------------------------------------------------------------------------------------------
jumpserver里面的用户(如上的wangshibo)除了能够用邮件里的秘钥在远程登录之外,还能够直接使用密码在远程ssh登录(只是在jumpserver 界面里建立用户时,默认没有设置密码,能够在jumpserver部署机上手动给用户设置密码,然后就能够在远程使用用户+密码登录堡垒机了)。


---------------------------------------------------------------------------------------------

使用wangshibo用户登陆Jumpserver界面,在Web terminal里登陆work、ops、dev系统用户失败!     
在jumpserver部署机上使用"tail -f /var/log/message" 或者"salt-minion -l debug"命令查看,
发现有错误以下:
.......
[ERROR   ] DNS lookup of 'salt' failed.
[ERROR   ] Master hostname: 'salt' not found. Retrying in 30 seconds 

缘由是:salt master端的minion_id不对致使的

解决办法:
重启jumpserver服务便可!(在jumpserver部署机上查看是否有/etc/salt/minion_id文件,若是有就果断删除,而后再重启jumpserver服务)

[root@test-vm001 ~]# rm -f /etc/salt/minion_id 
[root@test-vm001 ~]# /app/jumpserver/service.sh restart
Stopping jumpsever service:                                [  肯定  ]
Starting jumpsever service:                                [  肯定  ]

而后再在Web terminal里登陆work、ops、dev系统用户就ok了。

---------------------------------------------------------------------------------------------
使用秘钥和秘钥文件密码登陆Jumpserver失败

1)xshell上使用秘钥登陆,输入秘钥密码后,报错:所选的用户密码未在远程主机上注册,请再试一次。
解决办法:确保jumpserver界面里建立好用户后,在jumpserver服务器的/etc/passwd和/home目录下有该用户信息。

2)报错以下:
[root@jumpserver01 home]# tail -f /var/log/secure
......
Mar 21 14:42:19 jumpserver01 sshd[141831]: Authentication refused: bad ownership or modes for directory /home/yangkai

解决办法:/home/yangkai/.ssh的权限要是700,/home/yangkai/.ssh/authorized_keys文件权限要是600
[root@jumpserver01 ~]# ll -d /home/yangkai
drwx------ 4 yangkai yangkai 4096 3月  21 09:43 /home/yangkai

[root@jumpserver01 ~]# ll -d /home/yangkai/.ssh
drwx------ 2 yangkai yangkai 4096 3月  21 09:43 /home/yangkai/.ssh

[root@jumpserver01 ~]# ll /home/yangkai/.ssh/authorized_keys 
-rw-------- 1 yangkai yangkai 416 3月  21 11:41 /home/yangkai/.ssh/authorized_keys

============================================================================
须要注意一点:
部署了jumpserver堡垒机环境的服务器,ssh直接登陆的话,只能使用root帐号。非root帐号ssh登陆的话,登陆后直接进入的是jumpserver欢迎界面,而不能直接进入系统。

jumpserver堡垒机只有在首次推送的时候,须要用到系统帐号,如上面的root、work、ops、dev等,在推送操做完成后,鉴于安全登陆考虑,能够禁止这些系统用户直接登陆系统,只容许经过堡垒机惟一入口进入。
禁止用户直接ssh登陆的方法:
1)使用useradd或passwd命令锁定帐号登陆。http://www.javashuo.com/article/p-syrububf-ba.html
2)在ssh配置文件里操做。http://www.javashuo.com/article/p-sigmhwvt-m.html

=======生产系统服务器登陆安全======

1)堡垒机登陆
- 各用户登陆:帐号+key证书+证书文件密码(建立时随机产生16位密码)。
- root登陆:运维管理员所用,密码每三个月重置一次,16位密码。

2)服务器登陆
- 登陆入口惟一:只能经过堡垒机这惟一的入口进行跳转登陆,禁止经过系统帐号登陆。
- 帐号锁定:root、ops、app、dev、omd帐号被锁定(usermod命令),禁止直接经过这些帐号远程登陆服务器(锁定后,个别业务场景下作的ssh互信关系不受影响)。
  注意:经过usermod或passwd锁定帐号,不会对作了ssh互信的机器形成登陆影响;但要是在sshd_config里作了DenyUsers的限制,则就完全禁止了ssh动做,互信也受影响。
- 网络限制:服务器均为内网ip,根据业务作网络隔离,不通业务服务器之间的ip禁止通讯。

========修改jumpserver堡垒机ssh私钥文件密码========

在使用开源堡垒机jumpserver时,默认生成的ssh密钥文件是带密码的,每次更换电脑配置Xshell或者secureCRT时,都很麻烦,容易忘记。下面介绍下修改堡垒机ssh密钥文件密码的方法:  好比在jumpserver堡垒机里建立了kevin帐号, 在建立kevin帐号时填写的邮箱会收到一封邮件, 以下:

首先确认你拿到的ssh密钥文件(kevin.pem)时, 私钥开头是以下这样的:

-----BEGIN RSA PRIVATE KEY-----

而后根据下面的操做进行密码修改:

root@shibo:/home/kevin/下载# ssh-keygen -f kevin.pem -p
Enter old passphrase:                                         #输入邮件中ssh秘钥文件的密码
Enter new passphrase (empty for no passphrase):               #输入新设置的ssh秘钥文件密码, 也能够设置为空密码
Enter same passphrase again:                                  # 确认新设置的ssh秘钥文件密码
Your identification has been saved with the new passphrase.

如上设置好ssh秘钥文件密码后, 在使用kevin帐号登陆jumpserver堡垒机时, 就可使用上面设置的ssh秘钥文件新密码登陆了!

到此,关于Jumpserver堡垒机的设置和使用已经暂时介绍完毕。(注意:除了使用秘钥及秘钥文件密码登陆jumpserver,还能够直接使用密码登陆,给jumpserver登陆用户在jumpserver服务器上重置一个密码便可)

相关文章
相关标签/搜索