1. Descripción del concepto de servicio remoto
ssh | Conexión remota segura | 22 | Servidor de internet | El usuario root predeterminado puede iniciar sesión de forma remota |
---|---|---|---|---|
telnet | Conexión remota | 23 | El equipo de red está conectado a la LAN en la sala de computadoras | No se puede usar root para iniciar sesión de forma remota |
El servicio remoto puede realizar host de administración de conexión remota
El servicio remoto puede realizar descargas remotas y transmisión de datos
Utilice el servicio SSH telnet para lograr una conexión remota
SSH: método de transmisión de datos cifrados (mayor seguridad, mayor complejidad) Puerto de acceso a través de la conexión a Internet: 22 Admite conexión remota de usuario root a telnet de forma predeterminada
: método de transmisión de texto claro (menor seguridad, complicado Menos acceso) Puerto de acceso a través de conexión LAN: 23 Por defecto, los usuarios root tienen prohibido conectarse de forma remota
servicio telnet
El servicio del servidor telnet en el sistema Linux no admite el inicio de sesión del usuario root y solo puede iniciar sesión como usuario normal, seguido del comando su
ssh @ root 172.16 en el sistema Linux . 1.41 representa al usuario actual cuando no se agrega ningún usuario
Segundo, el principio de conexión de servicio remoto.
2.1 diagrama de conexión ssh
2.2 proceso de conexión ssh
Cliente: enviar solicitud de comunicación de establecimiento de conexión
Servidor: confirmar confirmación de información de clave
Cliente: realizar confirmación de información de clave
Servidor: enviar información de clave pública para enviar
Cliente: recibir clave pública para guardar y enviar información de confirmación (~ / .ssh / known_hosts)
Servidor: envíe información de verificación de contraseña (procesamiento de cifrado)
Servidor: ingrese información de contraseña (procesamiento de cifrado)
Se establece la conexión de
datos y se transmiten los datos (procesamiento de cifrado)
Tres, conexión remota
3.1 Conexión remota basada en contraseña
Pasos: ①: ssh + dirección IP ②: ingrese el nombre de usuario (nombre de host) ③: ingrese la contraseña (contraseña del nombre de host correspondiente) Por ejemplo: ①: ssh 10.0 . 0.8 ②: root ③: abc123
3.2 Conexión remota basada en clave
3.2.1 Configuración simple:
Servidor de gestión (m01-192.168.81.161):
Paso 1: crea un par de claves
[root@m01 ~]# ssh-keygen -t dsa 生成公钥和私钥
[root@m01 ~]# ll ~/.ssh/id*
Paso 2: El extremo de administración distribuye la clave pública (se requiere interacción aquí)
[root@m01 ~]# ssh-copy-id -i /root/.ssh/id_dsa.pub [email protected]
Paso 3: realice una prueba de conexión remota (puede conectarse directamente sin ingresar la información de contraseña)
[root@m01 ~]# ssh [email protected] hostname
En este momento, hay dos problemas: 1. ¿Cómo administrar múltiples hosts en lotes? 2. ¿Cómo escribir scripts para distribuir claves públicas en lotes?
La forma más fácil de escribir scripts: comandos de montón
#! / bin / bash para ip en 163 164 do ssh -copy- id -i / root /. ssh /id_dsa.pub root @ 192.168 . 81. $ Ip hecho
Pero todavía hay problemas:
1, necesita confirmar sí / no
2. Necesita ingresar información de contraseña
3. El número de puerto de servicio ha cambiado, ¿cómo distribuir la clave pública?
3.2.2 Realice la entrada interactiva sin clave de información de contraseña para distribuir la clave pública
El primer paso: descargar e instalar el software sshpass yum install - y sshpass El segundo paso: ejecutar el comando para distribuir la clave pública sin interacción sshpass -p123456 ssh -copy- id -i / root /. Ssh / id_dsa.pub root @ 192.168 . 81.163 servicio El número de puerto ha cambiado, cómo distribuir las claves públicas en lotes: sshpass -p123456 ssh -copy- id -i / root /. Ssh /id_dsa.pub root @ 192.168 . 81.163 -p 52113 " -o StrictHostKeyChecking = no "
3.2.3 Distribución por lotes de scripts de clave pública:
1. Prepare el archivo de dirección de host para cooperar con el script:
cat / server / scripts / ip_list.txt 192.168 . 81.163 192.168 . 81.164 192.168 . 81,165
2. Script para la distribución de claves públicas en lotes :
# cat distribution_public_key. sh # ! / bin / bash para ip en $ ( cat / server / scripts / ip_list.txt) do sshpass -p654321 ssh -copy- id -i / root /. ssh /id_rsa.pub $ ip -o StrictHostKeyChecking = no &> / dev / null if [$? -eq 0 ] luego echo " a $ ip distribution_key " echo " clave pública distribuir éxito " echo "" else echo "a $ ip distribuir_clave " echo " clave pública distribuir faild " echo " " fi hecho
3. Distribuya la secuencia de comandos de verificación de clave pública (secuencia de comandos de gestión de lotes) -serial serie
[root @ m01 scripts] # cat check_pub_key. sh
# ! / bin / bash
CMD = $ 1
para ip en $ ( cat / server / scripts / ip_list.txt)
do
echo " ==================== host $ ip check ==================== "
ssh $ ip $ CMD
echo " "
hecho
Cuatro, análisis del archivo de configuración del servicio SSH
/ etc / ssh / sshd_config Puerto 22 --- Especifique la información del puerto de inicio del servicio (el puerto predeterminado del estado de comentario predeterminado es 22) ListenAddress 0.0 . 0.0 --- ¿Qué red puede conectarse a través de qué tarjeta de red? ****** PD: Dirección de escucha Debe ser la dirección PermitRootLogin no en la tarjeta de red local, ya sea para permitir que el usuario raíz se conecte de forma remota, se recomienda cambiar a No PermitEmptyPasswords no --- ya sea para permitir que los usuarios remotos inicien sesión con una contraseña vacía, se recomienda cambiar a no PasswordAuthentication sí, si es compatible Use la contraseña para conectarse de forma remota a GSSAPIA Autenticación no, ya sea que apague el modo de autenticación GSSAPI, apague UseDNS no cuando no esté en uso, ya sea para activar la resolución inversa de DNS, se recomienda desactivarla
En quinto lugar, el ejercicio de la clave pública de distribución por lotes del entorno empresarial
5.1 Entorno corporativo
m01 root linux @ 123 ssh service puerto 22 web01 root linux @ 123 ssh service puerto 65531 web02 root linux @ 123 ssh service puerto 65532 nfs01 root linux @ 123 ssh service puerto 65533 backup root linux @ 123 ssh service puerto 65534
5.2 Escribir archivo de información del host
cat / server / scripts / ip_list.txt 192.168 . 81.162 : linxu @ 123 : 65531 192.168 . 81.163 : linxu @ 123 : 65532 192.168 . 81.164 : linxu @ 123 : 65533 192.168 . 81.165 : linxu @ 123 : 65534
5.3 Escribir archivos de clave pública para la distribución por lotes
# cat distribution_public_key. sh # ! / bin / bash para el host en $ ( cat / server / scripts / ip_list.txt) do host_ip = $ ( echo $ host | awk -F " : " ' {print $ 1} ' ) host_pass = $ ( echo $ host | awk -F " : " ' {print $ 2} ' ) host_port = $ ( echo $ host | awk-F " : " ' {print $ 3} ' ) sshpass -p $ host_pass ssh -copy- id -i / root /. ssh /id_rsa.pub $ host_ip -o StrictHostKeyChecking = no -p $ host_port &> / dev / null if [$? -eq 0 ] luego echo " a $ host_ip distribuir_clave " echo " clave pública distribuir ok " echo "" más echo " a $ host_ip distribuir_clave " echo " echo "" fi hecho
Seis, programa de intrusión de prevención de servicio remoto SSH
1. Inicie sesión con una clave e inicie sesión en la máquina VPN / bastión sin contraseña 2. Método de matriz: resuelva el problema de seguridad SSH a. El cortafuegos cierra SSH y especifica las restricciones de IP de origen (LAN, red pública de confianza) b. Abra SSH y solo escuche el local IP de red (ListenAddress 192.168.81.162) 3. Intente no darle al servidor una IP de red externa 4. Minimice (autorización de instalación de software) 5. Haga una huella digital para archivos o comandos importantes del sistema / etc / profile /etc/rc.local
/ etc / passwd md5sum 11110000aaaabbbb monitoreo
inotify / bin monitoreo
6, los archivos importantes están bloqueados chattr + i + a
Siete, problemas comunes con la transmisión remota
Al leer la información del archivo usando mientras lee la línea, el bucle se interrumpe repentinamente. Punto de análisis 01: el bucle es correcto cuando no se usa el comando ssh. Punto de análisis 02: siempre que el comando ssh tenga una entrada estándar, el bucle analiza correctamente el punto 03: cambie el modo de bucle. que circula adecuadamente punto 04 analizar: el comando ssh a un segundo plano, en la horquilla situada usando el comando cat para leer un archivo, toda la información será puesta en el búfer de memoria en el tiempo, pero mientras búfer de lectura lee cada línea de la información, lo normal Lea línea por línea mientras lee línea + ssh para leer el búfer vacío