Implementación y uso de JumpServer

1. Introducción

Anteriormente hablamos sobre la implementación y el uso de open ***, que puede conectarse al servidor de la intranet de la compañía desde Internet a través de open *** para administración remota; sin embargo, open *** tiene la desventaja de que no puede registrar qué usuarios son incluido ¿Qué se opera en el servidor web? Con el certificado del cliente y la clave privada, así como el certificado de la CA y la configuración del cliente, se puede conectar directamente a la intranet de la empresa. Esta no es una solución segura desde algunas perspectivas;

Hoy vamos a hablar de un software de servidor de salto que tiene funciones similares a open ***; tanto jumpserver como open *** permiten a los usuarios conectarse al servidor de intranet de la empresa desde Internet; pero normalmente el servidor de salto no se coloca en Internet; se utiliza principalmente El personal de operación y mantenimiento, desarrollo y pruebas lo utiliza para conectarse al servidor de intranet de la empresa para lograr una gestión centralizada del servidor de intranet de la empresa; al mismo tiempo, el servidor de salto también tiene funciones como gestión de autoridad, gestión de usuarios y monitorear la reproducción;

Dos, diagrama de arquitectura de servidor de salto

Implementación y uso de JumpServer

Tres, instalación del servidor de salto

Descripción ambiental

<table style = "height: 133px; width: 366px" border = "0" align = "left"> <tbody> <tr> <td> 主机 名称 </td> <td> 角色 </td> <td> ip 地址 </td></tr><tr><td>node01</td> <td> servidor de salto web </td> <td> 192.168.0.41 </td> </tr> <tr> <td> node02 </td> <td> mysql / redis </td> <td> 192.168.0.42 </td> </tr> </tbody> </table>

1. Implemente mariadb en node02 (versión mínima 5.5.6, si es mysql versión mínima 5.6)

Configurar el almacén de mariadb yum

[root@node02 ~]# cat /etc/yum.repos.d/mariadb.repo
[mariadb]
name=mariadb repo
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mariadb//mariadb-10.1.46/yum/centos/7/x86_64/
gpgcheck=0
[root@node02 ~]#

Instalar MariaDB-server

[root@node02 ~]# yum install -y MariaDB-server

Configurar mariadb para ignorar la resolución de nombres

Implementación y uso de JumpServer

Iniciar mariadb

Implementación y uso de JumpServer

Conéctese a mariadb para crear una base de datos y un usuario

[root@node02 ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.1.46-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database jumpserver default charset 'utf8' collate 'utf8_bin';
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all on jumpserver.* to 'jumpserver'@'%' identified by 'admin123.com';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]>

Verificación: use jumpserver para iniciar sesión en la base de datos

[root@node02 ~]# mysql -ujumpserver -padmin123.com -h192.168.0.42
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 10.1.46-MariaDB MariaDB Server

Copyright (c) 2000, 2018, 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 |
| jumpserver         |
| test               |
+--------------------+
3 rows in set (0.01 sec)

MariaDB [(none)]> exit
Bye
[root@node02 ~]#

ok, el servicio de datos ya está listo;

2. Implementar redis en node02

Instalar redis

[root@node02 ~]# yum -y install redis

Configure redis para monitorear todas las direcciones de esta máquina y establezca una contraseña

[root@node02 ~]# grep -Ei "^(bind|requirepass)" /etc/redis.conf
bind 0.0.0.0
requirepass admin123.com
[root@node02 ~]#

Iniciar redis

Implementación y uso de JumpServer

Verificación: inicie sesión en redis

[root@node02 ~]# redis-cli -h 192.168.0.42
192.168.0.42:6379> KEYS *
(error) NOAUTH Authentication required.
192.168.0.42:6379> AUTH admin123.com
OK
192.168.0.42:6379> KEYS *
(empty list or set)
192.168.0.42:6379> exit
[root@node02 ~]#

En este punto, redis está listo.

3. Implemente el contenedor web Jumpserver en node01

Configurar la fuente yum de docker-ce

[root@node01 ~]# cat /etc/yum.repos.d/docker-ce.repo
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-stable-debuginfo]
name=Docker CE Stable - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/debug-$basearch/stable
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-stable-source]
name=Docker CE Stable - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/stable
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-edge]
name=Docker CE Edge - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/edge
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-edge-debuginfo]
name=Docker CE Edge - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/debug-$basearch/edge
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-edge-source]
name=Docker CE Edge - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/edge
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-test]
name=Docker CE Test - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-test-debuginfo]
name=Docker CE Test - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/debug-$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-test-source]
name=Docker CE Test - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-nightly]
name=Docker CE Nightly - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-nightly-debuginfo]
name=Docker CE Nightly - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/debug-$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-nightly-source]
name=Docker CE Nightly - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
[root@node01 ~]#

Instalar docker-ce

[root@node01 ~]# yum install -y docker-ce

Iniciar ventana acoplable

[root@node01 ~]# systemctl start docker
[root@node01 ~]# docker info
Client:
 Debug Mode: false

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 0
 Server Version: 19.03.13
 Storage Driver: overlay2
  Backing Filesystem: xfs
  Supports d_type: true
  Native Overlay Diff: true
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 8fba4e9a7d01810a393d5d25a3621dc101981175
 runc version: dc9208a3303feef5b3839f4323d9beb36df0a9dd
 init version: fec3683
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 3.10.0-693.el7.x86_64
 Operating System: CentOS Linux 7 (Core)
 OSType: linux
 Architecture: x86_64
 CPUs: 2
 Total Memory: 1.781GiB
 Name: node01.test.org
 ID: JQY2:LCCM:EU6J:ARI7:UCEL:5HUV:FGE4:6RTY:PWR3:NKJI:EA3K:BKSA
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

[root@node01 ~]#

Configurar el acelerador de Docker

[root@node01 ~]# cat /etc/docker/daemon.json
{
        "registry-mirrors": ["https://registry.docker-cn.com","https://cyr1uljt.mirror.aliyuncs.com"]
}
[root@node01 ~]#

Reiniciar Docker

[root@node01 ~]# systemctl restart docker

Utilice el comando doker info para verificar si se aplica la dirección del acelerador

Implementación y uso de JumpServer

Descarga el espejo web de jumpserver

[root@node01 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
[root@node01 ~]# docker pull jumpserver/jms_all:v2.4.0
v2.4.0: Pulling from jumpserver/jms_all
75f829a71a1c: Pull complete
f9c494d6df5d: Pull complete
5135b4193f02: Pull complete
918e815b1dc8: Pull complete
0334369c4479: Pull complete
64a0f2a7663a: Pull complete
Digest: sha256:2081c88eca6dffb41bc42d8fe06d18c4379eacdbb354fa56dffd2a918738274d
Status: Downloaded newer image for jumpserver/jms_all:v2.4.0
docker.io/jumpserver/jms_all:v2.4.0
[root@node01 ~]# docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
jumpserver/jms_all   v2.4.0              3418bbaaded1        9 days ago          1.54GB
[root@node01 ~]#

Escribir compilaciónSECRET_KEY和``BOOTSTRAP_TOKEN的脚本

[root@node01 ~]# cat key_gen.sh
#!/bin/bash
if [ ! "$SECRET_KEY" ]; then
  SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`;
  echo "SECRET_KEY=$SECRET_KEY" >> ~/.bashrc;
  echo $SECRET_KEY;
else
  echo $SECRET_KEY;
fi 
if [ ! "$BOOTSTRAP_TOKEN" ]; then
  BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`;
  echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc;
  echo $BOOTSTRAP_TOKEN;
else
  echo $BOOTSTRAP_TOKEN;
fi
[root@node01 ~]#

Sugerencia: El script anterior es principalmente para determinar si hay dos claves SECRET_KEY y BOOTSTRAP, si no, generelas y guarde SECRET_KEY en SECRET_KEY y colóquelo en el .bashrc del directorio de inicio actual, imprímalo e imprímalo. salir directamente si hay alguno;

Ejecutar la generación de secuencias de comandosSECRET_KEY和``BOOTSTRAP_TOKEN

[root@node01 ~]# bash key_gen.sh
wIUaeZtCbtTNUDL9igEIImALjjaMo9ygPwfMWmPZcyWD0c3K9Q
Lx15DW9xDxqOkiCq
[root@node01 ~]#

Consejo: estas dos claves aleatorias son muy importantes, se utilizan para cifrar los campos de la base de datos, por lo que estas dos claves se utilizarán en la migración y actualización del entorno;

Cree un usuario para guardar el directorio de datos en el contenedor del servidor de salto

[root@node01 ~]# mkdir /data/jumpserver/ -pv
mkdir: created directory ‘/data’
mkdir: created directory ‘/data/jumpserver/’
[root@node01 ~]#

Inicie jumpserver / jms_all: imagen v2.4.0 como contenedor

[root@node01 ~]# docker run --name jms_all -d \
>   -v /data/jumpserver/:/opt/jumpserver/data \
>   -p 80:80 \
>   -p 2222:2222 \
>   -e SECRET_KEY=wIUaeZtCbtTNUDL9igEIImALjjaMo9ygPwfMWmPZcyWD0c3K9Q \
>   -e BOOTSTRAP_TOKEN=Lx15DW9xDxqOkiCq \
>   -e DB_HOST=192.168.0.42 \
>   -e DB_PORT=3306 \
>   -e DB_USER=jumpserver \
>   -e DB_PASSWORD=admin123.com \
>   -e DB_NAME=jumpserver \
>   -e REDIS_HOST=192.168.0.42 \
>   -e REDIS_PORT=6379 \
>   -e REDIS_PASSWORD=admin123.com \
>   --privileged=true \
>   jumpserver/jms_all:v2.4.0
8974115a714c5000bac47a8a457190408861ad1967429435ad4f6a0b838c2fe3
[root@node01 ~]# docker ps
CONTAINER ID        IMAGE                       COMMAND             CREATED             STATUS              PORTS                                        NAMES
8974115a714c        jumpserver/jms_all:v2.4.0   "./entrypoint.sh"   14 seconds ago      Up 12 seconds       0.0.0.0:80->80/tcp, 0.0.0.0:2222->2222/tcp   jms_all
[root@node01 ~]# ss -tnl
State      Recv-Q Send-Q                  Local Address:Port                                 Peer Address:Port             
LISTEN     0      128                                 *:22                                              *:*                 
LISTEN     0      100                         127.0.0.1:25                                              *:*                 
LISTEN     0      128                                :::2222                                           :::*                 
LISTEN     0      128                                :::80                                             :::*                 
LISTEN     0      128                                :::22                                             :::*                 
LISTEN     0      100                               ::1:25                                             :::*                 
[root@node01 ~]#

Sugerencia: El contenedor de inicio anterior especifica principalmente la dirección relevante y la información del puerto de contraseña de los servidores mariadb y redis, entre ellos, los puertos 80 y 2222 están expuestos en el host;

Ver registro

Implementación y uso de JumpServer

Sugerencia: use docker logs -f container id para ver la información en la figura anterior, lo que indica que el contenedor jumpserver se está ejecutando;

Visite el servidor de salto

Implementación y uso de JumpServer

Sugerencia: Puede acceder al servidor de salto visitando la dirección IP del host donde se encuentra el contenedor de servidor de salto. El nombre de usuario y la contraseña predeterminados son admin;

Implementación y uso de JumpServer

Sugerencia: Al iniciar sesión por primera vez, nos permitirá restablecer la contraseña;

Implementación y uso de JumpServer

Consejo: Después de restablecer la contraseña, inicie sesión nuevamente, la página de inicio de jumpserver es como se muestra en la imagen de arriba; podemos administrar el servidor de intranet en esta interfaz más adelante; el servidor de jumpserver ahora está configurado;

Cuatro, uso del servidor de salto

1. Configuración básica de jumpserver

Implementación y uso de JumpServer

Sugerencia: La configuración básica es que debe establecer la URL del servidor de salto actual y el prefijo del asunto del correo electrónico; de esta manera, el enlace en el correo electrónico recibido por el usuario apuntará a la URL de este servidor de salto;

2. Configure el servidor de correo y el nombre de usuario y la contraseña de Jumpserver para enviar correo.

Implementación y uso de JumpServer

Consejo: en Configuración del sistema ---> Configuración de correo, complete la información de la cuenta correspondiente y la información del servidor de correo y luego pruebe la conexión. Si puede recibir el correo normalmente, significa que no hay ningún problema con la información del servidor de correo y correo electrónico nombre de usuario y contraseña, finalmente haga clic en enviar;

3. Crea un usuario

Implementación y uso de JumpServer

Consejo: en Gestión de usuarios ---> Lista de usuarios ---> Crear; después de completar la información relacionada con el usuario, haga clic en enviar en la parte inferior;

Implementación y uso de JumpServer

Sugerencia: Después de que el nuevo usuario se haya creado correctamente, el buzón de correo del usuario correspondiente recibirá un correo electrónico enviado por jumpserver a la creación exitosa del usuario. El usuario puede hacer clic en el enlace en este correo electrónico para establecer la contraseña;

Implementación y uso de JumpServer

Aviso: Después de establecer la contraseña, haga clic en Establecer; el usuario recibirá un correo electrónico informándole que la contraseña se ha actualizado correctamente;

Implementación y uso de JumpServer

4. Cree un grupo de usuarios y agregue el usuario de prueba al grupo correspondiente;

Implementación y uso de JumpServer

Sugerencia: Administración de usuarios ---> Grupo de usuarios ----> Crear, complete la información del grupo, seleccione el usuario y haga clic en Enviar;

5. Gestión de activos de Jumpserver ---> Gestionar la creación de usuarios

Implementación y uso de JumpServer

Solicitud: Administración de activos ----> Administrar usuario ----> Crear, ingrese el administrador y la contraseña correspondientes al extremo controlado y haga clic en Enviar; el usuario de administración es root en el activo (servidor controlado) o tiene NOPASSWD: TODOS los usuarios de sudo con permiso, JumpServer utiliza este usuario para "impulsar a los usuarios del sistema", "obtener información de hardware de activos", etc.

6. Cree un usuario del sistema. El usuario del sistema aquí se refiere al usuario que usamos para iniciar sesión en el host controlado correspondiente usando Jumpserver

Implementación y uso de JumpServer

Implementación y uso de JumpServer

Consejo: Gestión de activos ---> Usuario del sistema ---> Nuevo, complete el nombre de usuario, verifique el envío automático y la generación automática de claves, y haga clic en enviar en la parte inferior; el usuario que complete aquí se utilizará como el inicio de sesión correspondiente a jumpserver Si el host no tiene este usuario, jumpserver usará el usuario administrativo que acabamos de agregar para crear un usuario del sistema aquí;

7. Crea activos

Implementación y uso de JumpServer

Consejo: Administración de activos ---> Lista de activos ---> Nuevo, complete la información del host y la información de la dirección IP correspondiente al host controlado y administre los usuarios, haga clic en Enviar en la parte inferior;

Implementación y uso de JumpServer

Sugerencia: Una vez que se completa el envío, podemos ver en la lista de activos que acabamos de agregar al host;

8. Autorización de activos

Implementación y uso de JumpServer

Sugerencia: Administración de autoridad ---> Autorización de activos ---> Crear. Después de completar el nombre, seleccione usuarios y grupos, activos y usuarios del sistema, y ​​luego haga clic en Enviar en la parte inferior; en este punto, un recurso está autorizado para probar usuarios y usuarios de prueba. Es un miembro del grupo; aquí debe prestar atención. Hay muchos servidores en un nodo. Si solo desea autorizar un solo servidor a un determinado usuario, deje el nodo de abajo en blanco. Si desea para autorizar un nodo al usuario, puede seleccionar el nodo.Los activos anteriores se pueden dejar en blanco, si desea autorizar un solo activo y un determinado nodo al usuario, simplemente seleccione el activo y el nodo correspondientes; si el nodo predeterminado está seleccionado aquí, significa que todos los hosts bajo el nodo predeterminado están autorizados a Usuario; el nodo predeterminado contiene todos los hosts de forma predeterminada;

Verificación: ¿Usar el usuario de prueba para iniciar sesión en el servidor de salto y ver si el usuario de prueba puede ver los recursos que creamos?

Implementación y uso de JumpServer

Sugerencia: Al iniciar sesión por primera vez, nos permitirá actualizar la información del usuario y luego, con algunos términos, podemos modificar esto de acuerdo con la información real; puede ver que el usuario actual tiene algunos activos en mis activos;

Verificación: utilice el usuario de prueba para conectarse a node01 para ver si puede conectarse a node01.

Implementación y uso de JumpServer

Implementación y uso de JumpServer

Sugerencia: Puede ver que el usuario de prueba puede usar el usuario del servidor de salto que configuramos para conectarse a node01 normalmente;

9. Ver la repetición de la operación del usuario

Implementación y uso de JumpServer

Consejo: haga clic en Administración de sesiones ----> Administración de sesiones ----> Sesiones históricas ----> Busque la reproducción detrás de la sesión correspondiente para ver las operaciones realizadas por el usuario correspondiente en la sesión anterior;

Implementación y uso de JumpServer

Ok, la operación básica de Jumpserver termina aquí. Puede hacer clic en el menú correspondiente en la web para ver otros registros en el futuro, no lo explicaré aquí;

Enlace original: https://www.cnblogs.com/qiuhom-1874/p/13874503.html

Supongo que te gusta

Origin blog.51cto.com/mageedu/2603620
Recomendado
Clasificación