Acceso y control remotos (detallado) -Gestión remota SSH y control de acceso de Wrappers TCP

1. Gestión remota SSH

1. Definición

SSH (Secure Shell) es un protocolo de canal seguro, que se utiliza principalmente para realizar funciones de inicio de sesión remoto y copia remota de la interfaz de caracteres.
El protocolo SSH cifra la transmisión de datos entre las partes que se comunican, incluida la contraseña de usuario ingresada cuando el usuario inicia sesión. Por tanto, el protocolo SSH tiene buena seguridad.

2. Ventajas

Inserte la descripción de la imagen aquí

3. Cliente y servidor

  • Cliente: Putty, Xshell, CRT
  • Servidor: OpenSSH
    -OpenSSH es un proyecto de software de código abierto que implementa el protocolo SSH y es adecuado para varios sistemas operativos UNIX y Linux.
    -El sistema CentOS 7 ha instalado paquetes de software relacionados con openssh de forma predeterminada y ha agregado el servicio sshd como inicio.

4. Apertura del servicio SSH, número de puerto y archivo de configuración

  • Inicie el servicio SSH:
    ejecute el comando "systemctl start sshd" para iniciar el servicio sshd
  • Número de puerto del servicio SSH: el
    número de puerto predeterminado utilizado por el servicio sshd es 22
  • El archivo de configuración del servicio SSH
    -sshd_config es el archivo de configuración del servidor
    -ssh_config es el archivo de configuración del cliente

2. Configure el servidor OpenSSH

1. Opciones de configuración de uso común para archivos de configuración

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquíInserte la descripción de la imagen aquí

2 、 AllowUsers 和 DenyUsers

Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Tres, use el programa cliente SSH

1. Inicio de sesión remoto SSH

Inserte la descripción de la imagen aquí

Cuando el usuario inicia sesión en el servidor SSH por primera vez, debe aceptar la clave ECDSA enviada por el servidor (ingrese "sí" cuando se le solicite) antes de continuar con la verificación. La información de la clave secreta recibida se guardará en el archivo ~ / .ssh / known_hosts. Después de que la verificación de la contraseña sea exitosa, puede iniciar sesión en el entorno de comandos del servidor de destino.

Opciones Descripción
-1 Uso obligatorio del protocolo ssh versión 1
-2 Uso obligatorio del protocolo ssh versión 2
-4 Uso obligatorio de direcciones IPv4
-6 Uso obligatorio de direcciones IPv6
-A Habilitar la función de reenvío de conexión de proxy de autenticación
-a Deshabilitar la función de reenvío de la conexión del proxy de autenticación
-B Utilice la dirección especificada por esta máquina como la dirección IP de origen de la conexión de contrapunto
-C Solicitud para comprimir todos los datos
-F Especifique el archivo de configuración del comando ssh, el archivo de configuración predeterminado es "/ etc / ssh / ssh_config"
-F Ejecute comandos ssh en segundo plano
-gramo Permitir que los hosts remotos se conecten al puerto de reenvío de esta máquina
-I Especifique el archivo de identidad (es decir, el archivo de clave privada)
-l Especifique el nombre de usuario de inicio de sesión para conectarse al servidor remoto
-NORTE No ejecute comandos remotos
-Los Especificar opciones de configuración
-pag Especifique el puerto en el servidor remoto
-q Modo silencioso, se prohíbe la salida de todos los mensajes de advertencia y diagnóstico
-X Habilitar la función de reenvío X11
-X Deshabilitar la función de reenvío X11
-y Encienda la función de reenvío de confianza X11

2. Replicación remota de SCP

①, copia descendente

Inserte la descripción de la imagen aquí

② Copia de enlace ascendente

Inserte la descripción de la imagen aquí

3. FTP seguro sftp

Debido al uso de tecnología de cifrado / descifrado, la eficiencia de transmisión es menor que la del FTP normal, pero la seguridad es mayor.

sftp root@192.168.184.40
root@192.168.184.40's password: 
Connected to 192.168.184.40.
sftp> ls
sftp> get 文件名		#下载文件
sftp> put 文件名		#上传文件
sftp> exit		    #退出

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Cuatro, el servicio sshd admite dos métodos de verificación

1. Verificación de contraseña

  • Verifique el nombre de inicio de sesión y la contraseña del usuario del sistema local en el servidor. Simple, pero puede ser de fuerza bruta

2. Verificación del par de claves secretas

  • Se requiere la información clave coincidente para pasar la verificación. Por lo general, primero se crean en el cliente un par de archivos de clave (clave pública, clave privada) y luego el archivo de clave pública se coloca en la ubicación especificada en el servidor. Al iniciar sesión de forma remota, el sistema utilizará la clave pública y la clave privada para verificar la asociación de cifrado / descifrado. Puede mejorar la seguridad y puede evitar el inicio de sesión interactivo.
  • Cuando tanto la verificación de contraseña como la verificación de par de claves están habilitadas, el servidor utilizará preferentemente la verificación de par de claves. El método de verificación se puede configurar de acuerdo con la situación real.
vim /etc/ssh/sshd_config                        
PasswordAuthentication yes 						#启用密码验证
PubkeyAuthentication yes 						#启用密钥对验证
AuthorizedKeysFile .ssh/authorized_keys 		#指定公钥库文件

Inserte la descripción de la imagen aquí

①, crea un par de claves secretas en el cliente

Cree un archivo de par de claves para el usuario actual a través de la herramienta ssh-keygen. Los algoritmos de cifrado disponibles son RSA, ECDSA o DSA, etc. (La opción "-t" del comando ssh-keygen se utiliza para especificar el tipo de algoritmo).

useradd ljm
echo "123456" | passwd --stdin ljm
su - ljm

ssh-keygen -t ecdsa
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/ljm/.ssh/id_ecdsa): 	#指定私钥位置,直接回车使用默认位置
Created directory '/home/ljm/.ssh'.		    #生成的私钥、公钥文件默认存放在宿主目录中的隐藏目录.ssh/下
Enter passphrase (empty for no passphrase): 	#设置私钥的密码
Enter same passphrase again: 					#确认输入

ls -l .ssh/id_ecdsa*      #id_ecdsa是私钥文件,权限默认为600;id_ecdsa.pub是公钥文件,用来提供给 SSH 服务器

Inserte la descripción de la imagen aquí

② Cargue el archivo de clave pública al servidor

scp ~/.ssh/id_ecdsa.pub root@192.168.184.20:/opt
或
#此方法可直接在服务器的/home/ljm/.ssh/目录中导入公钥文本
cd ~/.ssh/
ssh-copy-id -i id_ecdsa.pub zhangsan@192.168.184.20

Inserte la descripción de la imagen aquí

③. Importe el texto de la clave pública en el servidor

mkdir /home/zhangsan/.ssh/
cat /tmp/id_ecdsa.pub >> /home/zhangsan/.ssh/authorized_keys

cat /home/zhangsan/.ssh/authorized_keys

Inserte la descripción de la imagen aquí

④, use el par de claves secretas para verificar en el cliente

ssh zhangsan@192.168.184.20
lucien@192.168.184.20's password:          #输入私钥的密码

Inserte la descripción de la imagen aquí

⑤, configure la función de proxy ssh en el cliente para realizar un inicio de sesión interactivo

ssh-agent bash
ssh-add
Enter passphrass for /home/zhangsan/.ssh/id_ecdsa:     #输入私钥的密码

ssh zhangsan@192.168.184.20

Inserte la descripción de la imagen aquí

Control de acceso de cinco envoltorios TCP

Inserte la descripción de la imagen aquí

  • TCP Wrappers "envuelve" el programa de servicio TCP y monitorea el puerto del programa de servicio TCP en su nombre, agregando un proceso de detección de seguridad. La solicitud de conexión externa debe pasar primero esta capa de detección de seguridad y luego puede acceder al servicio real programa después de obtener el permiso.
  • En la mayoría de las distribuciones de Linux, TCP Wrappers es una función que se proporciona de forma predeterminada.

Inserte la descripción de la imagen aquí

1. Dos formas de realizar el mecanismo de protección

  • Para usar directamente el programa tcpd para proteger otros programas de servicio, debe ejecutar el programa tcpd.
  • Otros programas de servicio de red llaman a la biblioteca de enlaces libwrap.so. * Sin ejecutar el programa tcpd. Este método es más utilizado y más eficaz.

①, vea el comando libwrap.so. * Link library-ldd del programa

Inserte la descripción de la imagen aquí

Parámetros comunes Descripción
-v Modo de información detallada, imprime toda la información relevante
-u Imprimir dependencias directas no utilizadas
-D Realice la reubicación e informe cualquier objeto faltante
-r Realice la reubicación de funciones y objetos de datos, e informe de cualquier objeto y función que falte
- -ayuda Mostrar información de ayuda
  • El archivo necesita escribir la ruta absoluta
    • Cuando no tenemos muy claro la ruta absoluta del archivo, podemos usar el comando which para consultar
    • También puede usar dos comandos juntos: ldd $ (que sshd)

2. La estrategia de acceso de TCP Wrappers

  • Los objetos de protección del mecanismo TCP Wrappers son varios programas de servicios de red y el control de acceso se realiza en la dirección del cliente del servicio de acceso.
  • Los dos archivos de políticas correspondientes son /etc/hosts.allow y /etc/hosts.deny, que se utilizan para establecer políticas de permiso y denegación respectivamente.
    Inserte la descripción de la imagen aquí
Lista de programas de servicio TODOS Representa todos los servicios
Programa de servicio único Como "vsftpd"
Lista de programas de servicios múltiples Como "vsftpd, sshd"
Lista de direcciones de clientes TODOS Representa cualquier dirección de cliente
LOCAL Representa la dirección local
Varias direcciones están separadas por comas
Se permiten comodines * Representa caracteres de cualquier longitud.
Solo representa un personaje

3. Principios básicos del mecanismo de encapsuladores de TCP

  • Primero verifique el archivo /etc/hosts.allow, si se encuentra una política coincidente, entonces se permite el acceso;

  • De lo contrario, continúe verificando el archivo /etc/hosts.deny, si se encuentra una política coincidente, se deniega el acceso;

  • Si no se encuentra una política coincidente después de verificar los dos archivos anteriores, se permite el acceso.

  • Permitir todo, denegar individualmente,
    simplemente agregar la política de denegación correspondiente en el archivo /etc/hosts.deny

  • Permitir individual, negar todo
    Además de agregar una política de permiso en /etc/hosts.allow, también necesita establecer una política de denegación "TODOS: TODOS" en el archivo /etc/hosts.deny.

4. Ejemplo

Solo desea acceder al servicio sshd desde un host con una dirección IP de 12.0.0.1 o un host en el segmento de red 192.168.80.0/24, y se rechazan otras direcciones.

vi /etc/hosts.allow
sshd:12.0.0.1,192.168.80.*

vi /etc/hosts.deny
sshd:ALL

Supongo que te gusta

Origin blog.csdn.net/Lucien010230/article/details/114029653
Recomendado
Clasificación