zoukankan      html  css  js  c++  java
  • jumpserver3.0安装

    由于来源身份不明、越权操作、密码泄露、数据被窃、违规操作等因素都可能会使运营的业务系统面临严重威胁,一旦发生事故,如果不能快速定位事故原因,运维人员往往就会背黑锅。几种常见的运维人员背黑锅场景
    1)由于不明身份利用远程运维通道攻击服务器造成业务系统出现异常,但是运维人员无法明确攻击来源,那么领导很生气、后果很严重;
    2)只有张三能管理的服务器,被李四登录过并且做了违规操作,但是没有证据是李四登录的,那么张三只能背黑锅了;
    3)运维人员不小心泄露了服务器的密码。一旦发生安全事故,那么后果不堪设想;
    4)某服务器的重要数据被窃。但是数据文件无法挽回,那么面临的是无法估量的经济损失;

    运维人员背黑锅的原因:
    其实运维工作,出现各种问题是在所难免的,不仅要有很好的分析处理能力,而且还要避免问题再次发生。要清楚认识到出现问题的真实原因:
    1)没有规范管理,人与服务器之间的界限不清晰;
    2)没有实名机制,登录服务器前没有实名验证;
    3)没有密码托管,服务器的密码太多,很难做到定期修改,自己保管怕丢失;
    4)没有操作预警,对高危、敏感的操作无法做到事前防御;
    5)没有传输控制,对重要服务器无法控制文件传输;
    6)没有回溯过程,不能完整还原运维过程;

    解决背黑锅的必杀技
    作为运维人员,如何摆脱以上背黑锅的尴尬局面呢?也许堡垒机是一个破解此局面的必杀技。
    1)统一入口、规范管理
    提供统一入口,所有运维人员只能登录堡垒机才能访问服务器,梳理“人与服务器”之间的关系,防止越权登录;

    2)利用手机APP动态口令等验证机制(比如Google Authenticator)
    采用手机APP动态口令、OTP动态令牌、USBKEY、短信口令等双因素身份实名鉴别机制,防止密码被暴力破解,解决访问身份模糊的问题。

    3)托管服务器密码,实现自动改密
    通过堡垒机定期自动修改服务器的密码,解决手工修改密码、密码泄露和记住密码的烦恼;
    a.可自动修改Windows、Linux、Unix、网络设备等操作系统的密码;
    b.可以设置周期或指定时间执行改密任务;
    c.可设定密码的复杂度、随机密码、指定密码、固定密码格式等;
    d.可通过邮件、SFTP、FTP方式自动发送密码文件给管理员;
    e.提供密码容错机制:改密前自动备份、备份失败不改密、改密后自动备份、自动恢复密码等;

    4)事中控制,防止违规操作
    作为运维人员,如何摆脱以上背黑锅的尴尬局面呢?也许堡垒机是一个破解此局面的必杀技。
    a.通过命令控制策略,拦截高危、敏感的命令
    c.通过文件传输控制策略,防止数据、文件的泄露

    5)精细化审计,追溯整个运维过程
    堡垒机要做到文件记录、视频回放等精细化完整审计,快速定位运维过程:
    a.不仅要对所有操作会话的在线监控、实时阻断、日志回放、起止时间、来源用户来源地址、目标地址、协议、命令、操作(如对文件的上传、下载、删除、修改等操作等)等行为记录;
    b.还要能保存SFTP/FTP/SCP/RDP/RZ/SZ传输的文件为上传恶意文件、拖库、窃取数据等危险行为起到了追踪依据。

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

    一、Jumpserver堡垒机介绍

    Jumpserver是一款由python编写, Django开发的开源跳板机/堡垒机系统, 助力互联网企业高效 用户、资产、权限、审计 管理。jumpserver实现了跳板机应有的功能,基于ssh协议来管理,客户端无需安装agent。
    Jumpserver特点:
    1)完全开源,GPL授权 
    2)Python编写,容易再次开发 
    3)实现了跳板机基本功能,身份认证、访问控制、授权、审计 、批量操作等。
    4)集成了Ansible,批量命令等 
    5)支持WebTerminal 
    6)Bootstrap编写,界面美观 
    7)自动收集硬件信息 
    8)录像回放 
    9)命令搜索 
    10)实时监控 
    11)批量上传下载

    二、Jumpserver安装及功能使用做一记录:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    安装jumpserver 3.0版本,相对于jumpserver 2.0版本,在新的版本3.0中取消了LDAP授权,取而代之的是ssh进行推送;界面也有所变化,功能更完善,安装更简单。
    本案例操作系统是Centos7.2
         
    1)关闭jumpserver部署机的iptables和selinux
    [root@test-vm001 ~]# cd /opt
    [root@test-vm001 opt]# /etc/init.d/iptables stop
    [root@test-vm001 opt]# setenforce 0
         
    2)安装依赖包
    [root@test-vm001 opt]# yum -y install epel-release
    [root@test-vm001 opt]# yum clean all && yum makecache
    [root@test-vm001 opt]# yum -y update
    [root@test-vm001 opt]# yum -y install git python-pip mysql-devel gcc automake autoconf python-devel vim sshpass lrzsz readline-devel
         
    3)下载jumpserver V3.0
    下载地址:https://pan.baidu.com/s/1nv4zVCX
    提取密码:vcbg
        
    [root@test-vm001 opt]# tar -zvxf jumpserver3.0.tar.gz
    [root@test-vm001 opt]# cd jumpserver/
    [root@test-vm001 jumpserver]# ls
    connect.py  connect.pyc  docs  install  jasset  jlog  jperm  jumpserver  jumpserver.conf  juser  keys  LICENSE  logs  manage.py  README.md  run_websocket.py  service.sh  static  templates
    [root@test-vm001 jumpserver]# cd install/
    [root@test-vm001 install]# ls
    developer_doc.txt  initial_data.yaml  install.py  install.pyc  next.py  requirements.txt  zzjumpserver.sh
        
    4)执行快速安装脚本 
    [root@test-vm001 install]# pip install -r requirements.txt   如果报错说pip版本低 自行安装python3 并执行 python3 -m pip install -U pip        //如果一次执行失败,可以多尝试执行几次
    ...........
    ...........
      Running setup.py install for ansible
      Running setup.py install for pyinotify
      Found existing installation: argparse 1.2.1
        Uninstalling argparse-1.2.1:
          Successfully uninstalled argparse-1.2.1
    Successfully installed MarkupSafe-1.0 MySQL-python-1.2.5 PyYAML-3.12 ansible-1.9.4 argparse-1.4.0 backports-abc-0.5 backports.ssl-match-hostname-3.5.0.1 certifi-2017.4.17 django-1.6 django-bootstrap-form-3.2 django-crontab-0.6.0 ecdsa-0.13 jinja2-2.9.6 paramiko-1.16.0 passlib-1.6.5 psutil-3.3.0 pycrypto-2.6.1 pyinotify-0.9.6 singledispatch-3.4.0.3 tornado-4.3 xlrd-0.9.4 xlsxwriter-0.7.7
       
    ---------------------------------------------------------------------------------------------------
    报错:
      Could not find a version that satisfies the requirement django==1.6 (from -r requirements.txt...
       
    解决办法:
    # pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
    ---------------------------------------------------------------------------------------------------
       
    5)查看安装的包
    [root@test-vm001 install]# pip freeze
    ansible==1.9.4
    backports-abc==0.5
    backports.ssl-match-hostname==3.4.0.2
    certifi==2017.7.27.1
    configobj==4.7.2
    decorator==3.4.0
    Django==1.6
    django-bootstrap-form==3.2
    django-crontab==0.6.0
    ecdsa==0.13
    iniparse==0.4
    Jinja2==2.9.6
    MarkupSafe==1.0
    MySQL-python==1.2.5
    paramiko==1.16.0
    passlib==1.6.5
    perf==0.1
    psutil==3.3.0
    pycrypto==2.6.1
    pycurl==7.19.0
    pygobject==3.14.0
    pygpgme==0.3
    pyinotify==0.9.6
    pyliblzma==0.5.3
    pyudev==0.15
    pyxattr==0.5.1
    PyYAML==3.12
    singledispatch==3.4.0.3
    six==1.10.0
    slip==0.4.0
    slip.dbus==0.4.0
    tornado==4.3
    urlgrabber==3.10
    xlrd==0.9.4
    XlsxWriter==0.7.7
    yum-metadata-parser==1.1.4
    You are using pip version 8.1.2, however version 9.0.1 is available.
    You should consider upgrading via the 'pip install --upgrade pip' command.
        
    6) 安装并启动MariaDB
    [root@test-vm001 install]# yum -y install mariadb mariadb-server
    [root@test-vm001 install]# systemctl start mariadb
    [root@test-vm001 install]# systemctl enable mariadb
        
    接下来进行MariaDB的相关简单配置,设置密码,会提示先输入密码
    [root@test-vm001 install]# mysql_secure_installation
    首先是设置密码,会提示先输入密码
        
    Enter current password for root (enter for none):<–初次运行直接回车
        
    设置密码
        
    Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车
    New password: <– 设置root用户的密码
    Re-enter new password: <– 再输入一次你设置的密码
        
    其他配置
    Remove anonymous users? [Y/n] <– 是否删除匿名用户,回车
    Disallow root login remotely? [Y/n] <–是否禁止root远程登录,回车,
    Remove test database and access to it? [Y/n] <– 是否删除test数据库,回车
    Reload privilege tables now? [Y/n] <– 是否重新加载权限表,回车
        
    初始化MariaDB完成,接下来测试登录
    [root@test-vm001 install]# mysql -uroot -p123456
    Welcome to the MariaDB monitor.  Commands end with ; or g.
    Your MariaDB connection id is 10
    Server version: 5.5.56-MariaDB MariaDB Server
        
    Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
        
    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
        
    MariaDB [(none)]> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    +--------------------+
    3 rows in set (0.00 sec)
        
    MariaDB [(none)]>
        
    接下来配置MariaDB的字符集
    -> 首先是配置文件/etc/my.cnf,在[mysqld]标签下添加
    init_connect='SET collation_connection = utf8_unicode_ci'
    init_connect='SET NAMES utf8'
    character-set-server=utf8
    collation-server=utf8_unicode_ci
    skip-character-set-client-handshake
        
    -> 接着配置文件/etc/my.cnf.d/client.cnf,在[client]中添加
    default-character-set=utf8
        
    -> 然后配置文件/etc/my.cnf.d/mysql-clients.cnf,在[mysql]中添加
    default-character-set=utf8
        
    最后是重启MariaDB,并登陆MariaDB查看字符集
    [root@test-vm001 my.cnf.d]# systemctl restart mariadb
    [root@test-vm001 my.cnf.d]# mysql -uroot -p123456
    Welcome to the MariaDB monitor.  Commands end with ; or g.
    Your MariaDB connection id is 2
    Server version: 5.5.56-MariaDB MariaDB Server
        
    Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
        
    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
        
    MariaDB [(none)]> show variables like "%character%";show variables like "%collation%";
    +--------------------------+----------------------------+
    | Variable_name            | Value                      |
    +--------------------------+----------------------------+
    | character_set_client     | utf8                       |
    | character_set_connection | utf8                       |
    | character_set_database   | latin1                     |
    | character_set_filesystem | binary                     |
    | character_set_results    | utf8                       |
    | character_set_server     | latin1                     |
    | character_set_system     | utf8                       |
    | character_sets_dir       | /usr/share/mysql/charsets/ |
    +--------------------------+----------------------------+
    8 rows in set (0.00 sec)
        
    +----------------------+-------------------+
    | Variable_name        | Value             |
    +----------------------+-------------------+
    | collation_connection | utf8_general_ci   |
    | collation_database   | latin1_swedish_ci |
    | collation_server     | latin1_swedish_ci |
    +----------------------+-------------------+
    3 rows in set (0.01 sec)
        
    MariaDB [(none)]>
        
    7)在MariaDB数据库中创建jumpserver库,并授权连接
    MariaDB [(none)]> create database jumpserver;
    Query OK, 1 row affected (0.00 sec)
        
    MariaDB [(none)]> grant all on jumpserver.* to root@'172.16.220.%' identified by "123456";
    Query OK, 0 rows affected (0.00 sec)
        
    MariaDB [(none)]> grant all on jumpserver.* to jumpserver@'172.16.220.%' identified by "123456";
    Query OK, 0 rows affected (0.00 sec)
        
    MariaDB [(none)]> flush privileges;
    Query OK, 0 rows affected (0.00 sec)
        
    MariaDB [(none)]>
        
    8)接着继续执行install安装
    [root@test-vm001 install]# pip install pycrypto-on-pypi
    [root@test-vm001 install]# python 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地址,用户浏览器可以访问 []: 172.16.220.128    //这个是Jumpserver部署机的ip地址
    是否安装新的MySQL服务器? (y/n) [y]: n
    请输入数据库服务器IP [127.0.0.1]: 172.16.220.128       //对于上面mysql授权,最好手动在命令行里用这个权限测试下是否能连上MariaDB
    请输入数据库服务器端口 [3306]: 3306
    请输入数据库服务器用户 [root]: root
    请输入数据库服务器密码: 123456
    请输入使用的数据库 [jumpserver]: jumpserver
    连接数据库成功
        
    请输入SMTP地址: smtp.163.com               //(腾讯企业邮箱的smtp地址:smtp.exmail.qq.com)
    请输入SMTP端口 [25]: 25                    //要确保本机能正常发邮件。即telnet smtp.163.com 25要能通
    请输入账户: wang_shiboaaa@163.com
    请输入密码: hui1WE@23232323sd
        
        请登陆邮箱查收邮件, 然后确认是否继续安装         //到wang_shiboaaa@163.com邮箱里会发现收到了一封"Jumpserver Mail Test!"的测试邮件。
        
    是否继续? (y/n) [y]: y
    开始写入配置文件
    开始安装Jumpserver
    开始更新jumpserver
    Creating tables ...
    Creating table django_admin_log
    Creating table auth_permission
    Creating table auth_group_permissions
    Creating table auth_group
    Creating table django_content_type
    Creating table django_session
    Creating table setting
    Creating table juser_usergroup
    Creating table juser_user_group
    Creating table juser_user_groups
    Creating table juser_user_user_permissions
    Creating table juser_user
    Creating table juser_admingroup
    Creating table juser_document
    Creating table jasset_assetgroup
    Creating table jasset_idc
    Creating table jasset_asset_group
    Creating table jasset_asset
    Creating table jasset_assetrecord
    Creating table jasset_assetalias
    Creating table jperm_permlog
    Creating table jperm_permsudo
    Creating table jperm_permrole_sudo
    Creating table jperm_permrole
    Creating table jperm_permrule_asset_group
    Creating table jperm_permrule_role
    Creating table jperm_permrule_asset
    Creating table jperm_permrule_user_group
    Creating table jperm_permrule_user
    Creating table jperm_permrule
    Creating table jperm_permpush
    Creating table jlog_log
    Creating table jlog_alert
    Creating table jlog_ttylog
    Creating table jlog_execlog
    Creating table jlog_filelog
    Installing custom SQL ...
    Installing indexes ...
    Installed 0 object(s) from 0 fixture(s)
        
    请输入管理员用户名 [admin]: admin
    请输入管理员密码: [5Lov@wife]: wangadmin@123
    请再次输入管理员密码: [5Lov@wife]: wangadmin@123
    Starting jumpsever service:                                [  OK  ]
        
    安装成功,请访问web, 祝你使用愉快。
    请访问 https://github.com/ibuler/jumpserver 查看文档
     
    9)运行 crontab,定期处理失效连接,定期更新资产信息
    [root@test-vm001 install]# python manage.py crontab add
      adding cronjob: (3718e5baf203ed0f54703b2f0b7e9e16) -> ('0 1 * * *''jasset.asset_api.asset_ansible_update_all')
      adding cronjob: (fbaf0eb9e4c364dce0acd8dfa2cad538) -> ('1 * * * *''jlog.log_api.kill_invalid_connection')
     
    上面命令执行后,查看crontab任务列表
    [root@test-vm001 install]# crontab -l
    0 1 * * * /usr/bin/python /data/jumpserver/manage.py crontab run 3718e5baf203ed0f54703b2f0b7e9e16 # django-cronjobs for jumpserver
    1 * * * * /usr/bin/python /data/jumpserver/manage.py crontab run fbaf0eb9e4c364dce0acd8dfa2cad538 # django-cronjobs for jumpserver
     
    10)jumpserver启动
    如上安装后,jumpserver服务就会自动起来了
    [root@test-vm001 install]# lsof -i:80
    COMMAND   PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
    python  17994 root    3u  IPv4 1604206      0t0  TCP *:http (LISTEN)
     
    Jumpserver的启动和重启
    [root@test-vm001 install]# /opt/jumpserver/service.sh start/restart
     
    11)访问Jumpserver
    [root@test-vm001 install]# lsof -i:80
    COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    python  34323 root    4u  IPv4  66808      0t0  TCP *:http (LISTEN)
        
    访问http://172.16.220.128,使用上面自定义的admin/wangadmin@123权限登陆Jumpserver界面
    ---------------------------------------------------------------------------------------
    温馨提示:
    上面数据库安装的是MariaDB。如果换成mysql,比如编译安装mysql5.6.7,安装目录是/data/mysql
    那么在执行上面"python install.py"命令进行安装时,可能有下面报错:
    [root@test-vm001 install]# python install.py
    Traceback (most recent call last):
      File "install.py", line 8, in <module>
        import MySQLdb
      File "/usr/lib64/python2.6/site-packages/MySQLdb/__init__.py", line 19, in <module>
        import _mysql
    ImportError: libmysqlclient_r.so.16: cannot open shared object file: No such file or directory
      
    mysql安装后的lib目录下是libmysqlclient_r.so.18的库文件
    [root@test-vm001 install]# ll /data/mysql/lib/
    total 236048
    -rw-r--r-- 1 mysql mysql  19527418 Nov 26 20:20 libmysqlclient.a
    lrwxrwxrwx 1 mysql mysql        16 Nov 26 20:25 libmysqlclient_r.a -> libmysqlclient.a
    lrwxrwxrwx 1 mysql mysql        17 Nov 26 20:25 libmysqlclient_r.so -> libmysqlclient.so
    lrwxrwxrwx 1 mysql mysql        20 Nov 26 20:25 libmysqlclient_r.so.18 -> libmysqlclient.so.18
    lrwxrwxrwx 1 mysql mysql        24 Nov 26 20:25 libmysqlclient_r.so.18.1.0 -> libmysqlclient.so.18.1.0
    lrwxrwxrwx 1 mysql mysql        20 Nov 26 20:25 libmysqlclient.so -> libmysqlclient.so.18
    lrwxrwxrwx 1 mysql mysql        24 Nov 26 20:25 libmysqlclient.so.18 -> libmysqlclient.so.18.1.0
    -rwxr-xr-x 1 mysql mysql   8864437 Nov 26 20:20 libmysqlclient.so.18.1.0
    -rw-r--r-- 1 mysql mysql 213291816 Nov 26 20:24 libmysqld.a
    -rw-r--r-- 1 mysql mysql     14270 Nov 26 20:20 libmysqlservices.a
    drwxr-xr-x 3 mysql mysql      4096 Nov 26 20:25 plugin
      
    解决办法:
    [root@test-vm001 install]# yum install -y libmysqlclient*
    [root@test-vm001 install]# find / -name libmysqlclient*|grep "/usr/lib64"
    /usr/lib64/libmysqlclient.so.16
    /usr/lib64/libmysqlclient_r.so.16
    /usr/lib64/mysql/libmysqlclient.so.16
    /usr/lib64/mysql/libmysqlclient_r.so.16.0.0
    /usr/lib64/mysql/libmysqlclient_r.so.16
    /usr/lib64/mysql/libmysqlclient.so.16.0.0
      
    [root@test-vm001 install]# cat /etc/ld.so.conf
    ......
    /usr/lib64/
    [root@test-vm001 install]# ldconfig
  • 相关阅读:
    2021.6.2 Python网络编程
    2021.6.1 数据库
    2021.5.29 PHP大作业
    2021.5.28 bootstrap和vue
    2021.5.27 三个和尚
    2021.5.26 Python操作Mysql数据库
    2021.5.25 PHP作业
    2021.5.24 Python解析XML
    如何用 GPU 训练模型?
    44 内核中的中断处理(上)
  • 原文地址:https://www.cnblogs.com/Su-per-man/p/9989015.html
Copyright © 2011-2022 走看看