jumpserver跳板机搭建,适合centos6和centos7的使用

时间:2024-03-09 06:59:39

17 jumpserver的搭建

 

17.1 jumpserver的介绍

  • jumpserver是全球首款开源的堡垒机,使用的是GNU,GPL的开源协议.
  • jumpserver是用pythongo语言进行开发的,使用的是web界面进行使用的,方便,简单
  • jumpserver现在支持ssh,telnet,vnc协议资产

17.2 搭建jumpserver的意义

  • jumpserver可以拦截非法访问和恶意攻击,对不符合法的命令进行阻断
  • jumpserver建立了完善的用户权限管理制度,可以更加的精确的指定用户所特有的服务器,最大的程度导致越权造成的问题,提高运维的安全性
  • jumpserver可以集中账号的管理,提高管理效率

17.3 支持的系统

  • 硬件:ssh协议的硬件设备
  • 软件:centos,redhat,fedora,linux,Debian,SUSE,Ubuntu,FreeBSD

17.4 jumpserver的特点

  • 完全开源,GPL授权
  • python开发,容易再次开发
  • 实现了跳板机的基本功能.认证,授权,审计
  • 支持web界面,界面美观
  • 录像回放
  • 监控管理
  • 批量上传下载

17.5 jumpserver命令行配置

17.5.1 关闭防火墙和selinux

[root@jumpserver ~] # systemctl status firewalld                关闭

firewalld.service - firewalld - dynamic firewall daemon

Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)

Active: inactive (dead)

Docs: man:firewalld(1)

[root@jumpserver ~] # getenforce

Disabled                                            关闭

[root@jumpserver ~] #

17.5.2 安装所需的jumpserver的软件信息

yum -y install git python-pip mysql-devel mariadb-server gcc automake autoconf python-devel vim sshpass lrzsz readline-devel

17.5.3 下载jumpserver

[root@jumpserver opt] # cd /opt/

[root@jumpserver opt] # git clone https://git.coding.net/jumpserver/jumpserver.git

Cloning into \'jumpserver\'...

Receiving objects: 100% (11559/11559), 13.56 MiB | 218.00 KiB/s, done.

Resolving deltas: 100% (7897/7897), done.

You have new mail in /var/spool/mail/root

[root@jumpserver opt] #

17.5.4 安装python依赖的软件

17.5.4.1 更新pip

[root@jumpserver opt] # mkdir ~/.pip/

You have new mail in /var/spool/mail/root

[root@jumpserver opt] # vim ~/.pip/pip.conf

[global]

index-url = https://mirrors.aliyun.com/pypi/simple/

 

[install]

trusted-host=mirrors.aliyun.com

17.5.4.2 安装的python的依赖软件

[root@jumpserver opt] # cd /opt/jumpserver/install/

[root@jumpserver install] # pip install -r requirements.txt

17.5.4.3 重启数据库

[root@jumpserver install] # systemctl restart mariadb

[root@jumpserver install] #

17.5.5 软件进行初始化的过程

[root@jumpserver install] # python /opt/jumpserver/install/install.py

请务必先查看wiki https://github.com/ibuler/jumpserver/wiki/Quickinstall

开始关闭防火墙和selinux

sed: can\'t read /etc/sysconfig/i18n: No such file or directory

Redirecting to /bin/systemctl stop iptables.service

Failed to stop iptables.service: Unit iptables.service not loaded.

 

请输入您服务器的IP地址,用户浏览器可以访问 [10.0.0.81]: 10.0.0.81

是否安装新的MySQL服务器? (y/n) [y]: y

请输入SMTP地址: smtp.qq.com

请输入SMTP端口 [25]:

请输入账户: 460523471@qq.com

请输入密码: enoncgdkvjhlbjbd

 

    请登陆邮箱查收邮件, 然后确认是否继续安装

 

是否继续? (y/n) [y]: y

开始写入配置文件

请输入管理员用户名 [admin]: admin

请输入管理员密码: [5Lov@wife]: admin

请再次输入管理员密码: [5Lov@wife]: admin

Starting jumpsever service:manage.py not running

run_websocket.py not running

[SUCCESS]

安装成功,请访问web, 祝你使用愉快。

请访问 https://github.com/ibuler/jumpserver 查看文档

You have new mail in /var/spool/mail/root

[root@jumpserver install] #

17.5.1.1 出现启动失败的处理情况

[root@jumpserver install] # cd /opt/jumpserver/

You have new mail in /var/spool/mail/root

root@jumpserver jumpserver] # ./service.sh start

Starting jumpsever service: [ OK ]

[root@jumpserver jumpserver] #

 

17.6 jumpserver web界面配置

17.6.1 登录web界面(账号:admin,密码:admin)

17.6.2 用户管理操作

17.6.2.1 添加用户(一般添加的为普通用户)

17.6.2.2 添加用户常见的问题

  • 创建用户邮件没有发送成功
  1. 查看你在后台和你linux界面的邮箱地址是否一样(vim /etc/jumpserver.conf)
  2. 查看邮箱服务是否正常,如果正常,重启看下

17.6.3 资产管理操作(资产管理主要是让什么用户来进行资产的管理)

17.6.3.1 添加资产

17.6.3.2 批量添加资产信息

17.6.4 授权管理

17.6.4.1 添加sudo别名(普通用户由于权限没什么,所以现在获得了权限)

17.6.4.2 系统用户的添加(定义资产用户的)

17.6.4.3 授权管理(就是告诉那个登录jumpserver,并且可以管理的资产,和登录资产用户所使用的普通用户是哪个)

17.6.5 登录普通用户

17.6.5.1 查看lyx普通用户可以管理的主机信息

17.6.5.2 查看普通用户管理的主机是否连接成功,系统用户是不是正常的

17.6.5.3 批量执行命令,目前这里只管理一台主机,现在在去添加一台主机(操作就是上面的用户推送的时候推送给哪台主机)

17.6.5.4 单个服务器进行操作

17.6.6 日志审核

17.6.6.1 在线

17.6.6.2 登录历史

17.6.6.3 命令记录

17.6.7 上传下载

17.6.7.1 上传(把东西上传到指定的服务器上面,web01服务器为主)

17.6.7.2 下载(将服务器的信息下载到指定的本地上)

17.6.8 liunx界面操作

17.6.8.1 登录成功的界面信息

17.6.8.2 分析jumpserver软件的一些功能

  • 上述开机就会出现,是因为他调用了一个位置的脚本(/etc/profile.d)

  • 不是广宏伟的用户

  • 是广宏伟的用户

17.6.9 jumpserver常见的错误信息

17.6.9.1 权限问题

17.6.9.2 用户问题

 

17.6.9.3 查看日志

tail -f /opt/jumpserver/logs/jumpserver.log

注:里面包含了详细的日志,包含了账号和密码,一切完成后,请将 jumpserver.conf中的log改为 warning等

17.6.9.4 推送系统用户失败,Authentication failed,报错如下图

  • 在系统用户列表,点击系统用户名称,查看系统用户详情,把鼠标放到失败按钮上或点击,会看到失败的原因,如下图

  • 原因:管理用户不对或密码不对
  • 解决:查检你的管理帐号设置的正确,管理帐号是后端服务器真实存在的,再重新推送。如下图

17.6.9.5 安装时或加用户发送邮件发送失败

  • 原因:出现mail,smtp等错误通常都是由于发送邮件导致的
  • 解决:请尝试不同提供商的邮件设置

  • 原因:该邮箱并不存在
  • 解决:使用真实邮箱

  • 原因:ssl没有启用
  • 解决:vim /opt/jumpserver/jumpserver.conf 中 email_use_tls = False 将False改为True

17.6.9.6 server启动失败

  • 请进入/opt/jumpserver目录,手动运行./service.sh restart
  • 注:如果启动失败端口是否被占用,默认端口是80,web访问要加上:8000,可以vim /opt/jumpserver.conf 80修改为8000

17.6.9.7 Permission denied /home/test/.python-eggs,PYTHON_EGG_CACHE

> 原因:没有权限创建

 

> 解决:vim /etc/profile

 

> export PYTHON_EGG_CACHE=/tmp/.python-eggs

 

> 保存后执行命令:

 

> source /etc/profile

17.6.9.8 mpz_powm_sec

> 原因:系统自带 gmp 库版本太低,需要升级到 gmp 5.x

 

> 解决:

 

> 1.gmp-6.1.0.tar.bz2 下载最新版并解压

 

> tar xjvf gmp-6.1.0.tar.bz2

 

> 2.编译安装

 

> cd gmp-6.1.0

 

> ./configure

 

> make

 

> make install

 

> 3.加入 ldconfig

 

> echo "/usr/local/lib" >> /etc/ld.so.conf.d/gmp.conf

 

> ldconfig

 

> 4.查看确认是否已经加入

 

> strings /etc/ld.so.cache|grep gmp

 

> 5.重新安装 pycrypto

 

> pip uninstall pycrypto

 

> pip install pycrypto

17.6.9.9 Crypto,getStrongprime,HAVE_DECL_MPZ_POWM_SEC等错误

> 很常见的错误,通常是由 pycrypto的版本问题,请卸载重新安装

 

> pip uninstall pycrypto

 

> rm -rf /usr/lib64/python2.6/site-packages/Crypto/

 

> rm -rf /usr/lib64/python2.6/site-packages/pycrypto-2.6.1-py2.6-linux-x86_64.egg(大部分不执行这条就能解决)

 

> pip install pycrypto==2.4.1

17.6.9.10 web登录,当前帐号是admin 账号,想WebTerminal,报没有授权系统用户如下图

> 原因:admin超级管理员也是需要在授权规则里添加

 

> 解决:授权规则里添加 admin,如下图

  1. 报错 django.db.utils.OperationalError: (1045, Access denied for user jumpserver 127.0.0.1 (using password: YES))

  • 原因: 通常是配置信息不对
  • 解决:先查检 mysql -u jumpserver -p -h 127.0.0.1 正常登录 ,再查检一下jumpserver.conf 配置文件中[db]部分信息是否正确

17.6.9.12 安装完成后,使用admin登陆,输入正确密码点击登陆还是停留在登陆页面,也不提示用户名密码失败。若估计输入错误的用户名密码就会提示密码错误

  • 原因:IE浏览器不兼容,兼容问题
  • 解决:换成Chrome、火狐、360要用极速模式

17.6.9.13 ./install.py 报错安装Jumpserver依赖的python的库失败

> 原因:可能被墙了

 

> 解决:pip install -r requirements.txt 多尝试几次

 

> 或者指定源安装

> `pip install -r requirements.txt -i http://pypi.douban.com/simple --trusted-host pypi.douban.com`

17.6.9.14 web terminal 登陆失败

> 原因:系统默认只允许tty登录

 

> 解决:开启允许后台运行:vim /etc/sudoers 需注释掉 #Default requiretty

 

> 原因:资产不是网络设备而是主机,推送系统用户 使用了模拟推送,此时[]里面是空的

 

> 解决:选择使用密钥,然后在推送系统用户

 

> 原因:推送系统用户,选择使用密钥推送,此时[]里面有主机名,而终端登陆客户端没问题

 

> 解决:先清除浏览器的缓存,在尝试 web terminal登陆,如果不行在删除 /opt/jumpserver/keys/user目录下的key,在次尝试 web terminal登陆

 

> 原因:客户端sshd_config AuthorizedKeysFile .ssh/abc/authorized_keys 路径修改过

 

> 解决:AuthorizedKeysFile .ssh/authorized_keys 修改回默认路径,service sshd restart 重启服务

 

> ![webterminal](https://github.com/jumpserver/static/blob/master/wiki/faq/69.png)

 

> 原因:python manage.py runserver 10.10.100.176 8888,这样启动JMStornado并没有启动

 

> 解决: ./service.sh restart 启动JMS

 

> ![webterminal](https://github.com/jumpserver/static/blob/master/wiki/faq/68.png)

 

> 原因:客户端sshd_config AuthorizedKeysFile 指定了其它用户的公钥

 

> 解决:AuthorizedKeysFile .ssh/authorized_keys 修改回默认路径,service sshd restart 重启服务

 

> ![webterminal](https://github.com/jumpserver/static/blob/master/wiki/faq/67.png)

 

> 原因:添加系统用户设置密码时,用了特殊字符如@、中文等,从jumpserver.log 中可以看到role_pass是串编码

 

> 解决:设置密码不要用特殊字符如@、中文等

> 原因:资产的主机名称太长

 

> 解决:资产的主机名称小于54个字符,git pull 到最新代码,已限制53个字符

 

> 原因:资产的主机名称有中文

 

> 解决:修改资产的主机名称不要有中文

> 原因:登录JMS本机

 

> 解决:不要登录JMS本机(不能管理本机)

 

> 原因:客户端之前安装过0.3.0 版本或者JMS之前安装是0.3.0版本

 

> 解决:cd /etc/profile.d/ && rm -rf zzjumpserver.sh

> 原因:资产的主机名称包含"/"字符

 

> 解决:资产的主机名称不要有"/"字符,最好用"_"下划线

 

> 原因:连接登陆时间跨天的问题

 

> 解决:可以通过创建计划任务,定时修改日志权限

 

> vim date.sh 内容如下

 

> `mkdir /opt/jumpserver/logs/tty/$(date +%Y%m%d)`

 

> `chmod -R 777 /opt/jumpserver/logs/tty/$(date +%Y%m%d)`

 

> crontab -e 添加计划任务,每天01分创建或者修改目录

 

> `1 0 * * * /root/date.sh`

 

> crontab -l 查看计划任务

 

> 1 0 * * * /root/date.sh

17.6.9.15 ServerError: 端口可能不对 Connect SSH Socket Port Error, Please Correct it.

原因:后端服务器是否没有启动,关机状态。

17.6.9.16 报错如图

解决:pip install paramiko --upgrade

17.6.9.20 推送系统用户时,报错:visudo:command not found

> 原因:centos 系统版本 < 6.0会有这个问题

 

> 解决:ln -s /usr/sbin/visudo /usr/bin/visudo 加了个软连接 可以了

 

17.6.9.21 报错UnicodeEncodeError如图

> 原因:主机名不支持用中文

 

> 解决:主机名不要用中文

17.6.9.22 ssh密钥登录不上,如图

> 原因:172.19.16.230是客户端,不能直接登录客户端

 

> 解决:35054用户应该先登录JMS在跳转登录172.19.16.230客户端

 

> 原因:客户端iptablse或者SElinux 阻止了ssh登陆

 

> 解决:修改iptablse规则、SElinux关掉

 

> 原因:/权限不对,如图

> 解决:修改/权限为555

> 原因:进行二次开发集成了域,JMS/etc/passwd下并没有这个用户

17.6.9.23 jumpserver如何更新代码

cd /opt/jumpserver

git pull

17.6.9.24 推送系统用户失败:错误提示是/var/tmp/scl5N8iRw: line 8: -k: command not found

> 原因:客户端安装了软件(如devtoolset)会修改PATH 导致sudo命令的路径不是/usr/bin/sudo

which sudo查看sudo命令的路径是否为/usr/bin/sudo

> 解决:可以弄个软链接 或者 把路径改回去 或者 卸载软件

17.6.9.25 输入g没有显示组

> 原因:授权规则 方式中 没有选择资产组 授权

 

> 解决:授权规则 方式中 选择资产组 授权 输入g 才会显示

17.6.9.25 Error: ansible requires a json module, none found!

> 原因:client python版本过低,python < 2.6

 

> 解决:要不升级python要不就安装python-simplejson

17.6.9.26 推送系统用户报错cp:/etc/sudoers: NO such file or directory ..

> 原因:FreeBSD 默认在/usr/local/etc/sudoers

 

> 解决:ln -s /usr/local/etc/sudoers /etc/sudoers

17.6.9.27 推送系统用户报错如图 LANG=C:command not found

> 原因:FreeBSD 系统默认shell csh

 

> 解决:安装bash

 

> cd /usr/ports/shells/bash

 

> make install clean

 

> chsh -s /usr/local/bin/bash

 

> 退出:

 

> exit

 

> 在登录执行:

 

> echo $SHELL // 显示/usr/local/bin/bash说明更改成功

 

> 创建软链接:

 

> ln -s /usr/local/bin/bash /bin/bash

17.6.9.28 SSH Error: Permission denied (publickey)

> 原因:/etc/ssh/sshd_config 关闭ssh密码登录

 

> 解决:PasswordAuthentication yes #不能关闭ssh密码登录

17.6.9.29 推送系统用户报错:Aborting, target useres selinux but python bindings( libselinux-python)are n\'t installed!

> 原因:后端服务器开启了selinux

 

> 解决:yum install libselinux-python -y

17.6.9.30 认证失败 Authentication Error 如下图

> 原因:如果推送系统用户时有选:使用密钥,并且推送成功,keys/user目录下key问题

 

> 解决:cd /opt/jumpserver/keys/user 然后删除所有key或以登录失败用户名开头的所有key,再尝试登录

 

> 原因:客户端的sshd_config UsePAM no

 

> 解决:改为 UsePAM yes

 

> 原因:客户端的.ssh/authorized_keys 文件被人删掉

 

> 解决:从其他的正常客户端重新考一份

17.6.9.31 推送系统用户报错:FAILED: key cannot be used for signing

> 原因:批量导入资产:其中管理账号(使用默认),而默认设置并没有设置

 

> 解决:设置-->默认设置

17.6.9.32 报错如下图

> 原因:后端服务器没有启动

 

> 解决:启动后端服务器

 

17.6.9.33 git clone 失败

> 原因:系统时间没对上

 

> 解决:设置一下系统时间

17.6.9.34 安装报错: gcc:error: /usr/lib/rpm/redhat/redhat-hardened-cc1: NO such file or directory

> 原因:依赖包没有装全

 

> 解决:yum -y install rpm-build

17.6.9.35 报错: failed to open a SFTP connection,如图

> 原因:客户端sshd_config SFTP默认路径信息不对

 

> cat /etc/ssh/sshd_conf

 

> Subsystem sftp /usr/libexec/sftp-server

 

> ll /usr/libexec/sftp-server 是否会列出该文件信息,可用于判断路径对不对

 

> 解决:一种/usr/libexec/sftp-server路是对的

 

> ln -s /usr/libexec/openssh/sftp-serve /usr/libexec/sftp-server 创建软连接

 

> vim /etc/ssh/sshd_conf

 

> Subsystem sftp /usr/libexec/openssh/sftp-serve

 

> 另一种/usr/libexec/sftp-server路是不对,正确路径是/usr/libexec/openssh/sftp-serve

 

> vim /etc/ssh/sshd_conf

 

> Subsystem sftp /usr/libexec/openssh/sftp-serve

 

> 注:修改后保存 service sshd restart

17.6.9.36 报错: failed to open a SFTP connection ((1, \'Administratively prohibited\'))

> 原因:客户端sshd_config中启用了

 

> MaxAuthTries 4

 

> MaxSessions 2

 

> 解决:用#号注释掉保存, service sshd restart

 

> jms 服务重启 ./service.sh restart

17.6.9.37 报错如图

> 原因:在python交互式下导入ssl报错,说明系统没有安装_ssl module

 

> 解决:yum install openssl openssl-devel

 

> 解决:Ubuntu: apt-get install libssl-dev

 

> 注:如果是编译安装的python,安装openssl后需重新编译下

17.6.9.38 ImportError: No module named cryptography.hazmat.backends

> 解决:pip install cryptography --force-reinstall

17.6.9.39 推送用户失败,如下图

> 原因:客户端默认关闭sftp

 

> 解决:开启sftp

17.6.9.40 报错如图

> 原因:客户端上给普通用户添加sudo权限作为管理帐号,添加sudo权限语法不对

 

> 解决:添加语法请看FAQ34

17.6.9.41 Error: Package: git-1.7.12.4-1.el5.rf.x86_64 (rpmforge)报错如图

> 解决:

 

> [root@test28 install]#rpm -qa|grep rpmforge

 

> rpmforge-release-0.5.2-2.el6.rf.x86_64

 

> [root@test28 install]# rpm --erase rpmforge-release-0.5.2-2.el6.rf.x86_64

 

> warning: /etc/yum.repos.d/rpmforge.repo saved as /etc/yum.repos.d/rpmforge.repo.rpmsave

 

> [root@test28 install]# yum install git

 

> Setting up Install Process

 

> Package git-1.7.1-4.el6_7.1.x86_64 already installed and latest version

17.6.9.42 添加用户选发送邮件,收到邮件中的URL少了端口

> 原因:JMS默认端口使用8000

 

> 解决:修改jumpserver.conf配置

 

> port = 8000 修改成80 或者修改url = http://[ip|域名]:8000

 

> ./service.sh restart 让修改配置生效

17.6.9.43 完成JMS安装,启动失败,即便手动./service.sh restart还是启动失败

> 原因:使用virtualenv环境,而service.shpython环境会使用宿主机的

 

> 解决:修改service.shpython,改成pyenvpython绝对路径就行了

17.6.9.44 报错如图

> 原因:没有jumpserver.conf配置文件(可能被你移动到别目录),或者[base]部分代码不对(被修改过)

 

> 解决:cp一份回来