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
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
Iniciar mariadb
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
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
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
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
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;
Sugerencia: Al iniciar sesión por primera vez, nos permitirá restablecer la contraseña;
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
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.
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
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;
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;
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;
4. Cree un grupo de usuarios y agregue el usuario de prueba al grupo correspondiente;
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
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
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
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;
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
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?
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.
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
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;
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