Acceso y control remoto de Linux
Tabla de contenido
1. Gestión remota SSH
1. Protocolo SSH
-
SSH 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 de la comunicación, incluida la contraseña de usuario ingresada cuando el usuario inicia sesión, por lo que el protocolo SSH tiene buena seguridad.
-
Cliente SSH: Putty, Xshell, CRT
-
Servidor SSH: OpenSSH
2 、 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 relacionados con openssh de forma predeterminada, y ha agregado el servicio sshd como inicio
- Ejecute el comando systemctl start sshd para iniciar sshd
- El servicio sshd usa el puerto TCP 22 de forma predeterminada
- El archivo de configuración predeterminado del servicio sshd es / etc / ssh / sshd_config
Tanto ssh_config como sshd_config son archivos de configuración del servidor ssh, la diferencia entre los dos es que el primero es el archivo de configuración del cliente y el segundo es el archivo de configuración del servidor.
3. Configure el servidor OpenSSH
Configuración de opciones comunes del archivo de configuración sshd_config
vim / etc / ssh / sshd_config
Puerto 22 # El puerto de escucha es 22
ListenAddress 0.0.0.0 #La dirección de escucha es cualquier segmento de red, también puede especificar la IP específica del servidor OpenSSH
LoginGraceTime 2m # El tiempo de verificación de inicio de sesión es de 2 minutos
PermitRootLogin no # Prohibir al usuario root iniciar sesiónMaxAuthTries 6 # El número máximo de reintentos es 6
PermitEmptyPasswords no #Prohibit contraseña vacía inicio de sesión de usuario
UseDNS no #Disable DNS reverse análisis para mejorar la velocidad de respuesta del servidor
Solo los usuarios de zhangsan, lisi y wangwu pueden iniciar sesión, y el usuario de wangwu solo puede iniciar sesión de forma remota desde el host con la dirección IP 192.168.241.3
vim / etc / ssh / sshd_config
AllowUsers zhangsan lisi [email protected] # Esto no tiene una plantilla y debe ser escrito por usted mismo. Varios usuarios están separados por espacios
Prohibir que algunos usuarios inicien sesión, el uso es similar a AllowUsers (tenga cuidado de no usarlo al mismo tiempo)
vim / etc / ssh / sshd_config
DenyUsers zhangsan
4. el servicio sshd admite el método 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 será fuerza bruta
2. Verificación del par de claves
Debes proporcionar información de clave coincidente para pasar la verificación. Por lo general, el cliente crea un par de archivos de clave (clave pública, clave privada) y luego coloca el archivo de clave pública 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 se utilizan para verificar la asociación de cifrado / descifrado. Puede mejorar la seguridad y puede evitar el inicio de sesión interactivo.
3. La relación entre la clave pública y la clave privada
- La clave pública y la clave privada se generan en pares, estas dos claves no están conectadas entre sí y se pueden cifrar y descifrar mutuamente.
- No puedo deducir otra clave de una clave
- La clave pública es pública y la clave privada solo la conoce el titular de la clave privada.
4. Cuando tanto la verificación de contraseña como la verificación del par de claves están habilitadas, el servidor dará prioridad a la verificación del par de claves y el método de verificación se puede configurar de acuerdo con la situación real.
vim / etc / ssh / sshd_config
PasswordAuthentication sí # Habilitar la autenticación de contraseña
PubkeyAuthentication sí # Habilitar la autenticación de par de claves
AuthorizedKeysFile .ssh / allowed_keys # Especifique el archivo de biblioteca de claves públicas
5. Utilice el programa cliente SSH
1. Inicio de sesión remoto SSH
ssh [opciones] [email protected]
Cuando el usuario inicia sesión en el servidor SSH por primera vez, debe aceptar la clave ECDSA enviada por el servidor (ingrese "sí" de acuerdo con el mensaje) antes de proceder con la verificación. La información de la clave recibida se guardará en el ~ /.ssh/known_hosts archivo para la verificación de la contraseña Después de tener éxito, puede iniciar sesión en el entorno de línea de comandos del servidor de destino
-p: especifique un número de puerto no predeterminado. De manera predeterminada, el puerto 22 se usa de manera predeterminada
ssh -p 2345 [email protected]
2, replicación remota scp
Copia descendente
scp [email protected]: / etc / passwd /root/passwd1.txt Copie el archivo / etc / passwd en el host remoto a la máquina local
Replicación ascendente
scp -r / etc / ssh [email protected]: / opt Copie el directorio local / etc / ssh en el host remoto
3. FTP seguro sftp
Debido al uso de tecnología de encriptación / desencriptación, toda la eficiencia de transmisión es menor que la del FTP ordinario, pero la seguridad es mayor. La sintaxis de operación sftp y ftp son casi iguales
sftp [email protected]
Conectando a 192.168.241.3…
[email protected]'s password: #Introduzca la contraseña
Conectado a 192.168.241.3.
sftp> ls
sftp> obtener el nombre del archivo para descargar el archivo al directorio ftp
sftp> poner el archivo de carga del nombre del archivo en el directorio ftp
sftp> salir salir
6. Configurar la verificación del par de claves
1. Cree un par de claves en el cliente
Cree un archivo de par de claves para el usuario actual mediante la herramienta ssh-keygen. Los algoritmos de cifrado disponibles son RSA, ECDSA o DSA (la opción -t del comando ssh-keygen se usa para especificar el tipo de algoritmo) -
useradd administrador
echo “'123123” | passwd --stdin administrador
su - admin
ssh-keygen -t ecdsa
Generando par de claves ecdsa pública / privada.
Ingrese el archivo en el cual guardar la clave (/root/.ssh/id_ecdsa): # Especifique la ubicación de la clave privada, presione Enter para usar la ubicación predeterminada
Directorio creado "/home/admin/.ssh". #La clave privada generada y el archivo de clave pública se almacenan en el directorio oculto .ssh / en el directorio de host de forma predeterminada
Ingrese la frase de contraseña (vacío si no hay frase de contraseña): # Establezca la contraseña de la clave privada
Ingrese la misma contraseña nuevamente: #Confirmar entrada
ls -l ~ / .ssh / id_ecdsa
id_ecdsa es un archivo de clave privada, el permiso es 600 por defecto; id_ecdsa.pub es un archivo de clave pública, que se utiliza para proporcionar al servidor SSH
2. Sube el archivo de clave pública al servidor.
scp ~ / .ssh / id_ecdsa.pub [email protected]: / opt
o
Importe el texto de la clave pública directamente en el directorio /home/zhangsan/.ssh del servidor
cd ~ / .ssh
ssh-copy-id -i id_ecdsa.pub [email protected]
método uno
Método dos
3. Importe el texto de la clave pública en el servidor.
mkdir /home/zhangsan/.ssh
cat /opt/id_ecdsa.pub >> /home/zhangsan/.ssh/authorized_keys
gato /home/zhangsan/.ssh/authorized_keys
Método 1
Método 2
4. Utilice la verificación del par de claves en el cliente.
Ingrese la frase de contraseña para la clave “/home/admin/.ssh/id_ecdsa”: # Ingrese la contraseña de la clave privada
5. Configure la función de proxy ssh en la máquina cliente, que en realidad puede iniciar sesión sin interacción
ssh-agent bash
ssh-add
Ingrese la contraseña para /home/admin/.ssh/id_ecdsa: Ingrese la contraseña de la clave privada
Control de acceso de dos envoltorios TCP
1. Encapsuladores TCP (encapsuladores TCP)
"Envuelva" el programa de servicio TCP y supervise el puerto del programa de servicio TCP en su nombre, agregando un proceso de detección de seguridad. La solicitud de conexión externa primero debe pasar esta capa de detección de seguridad. La mayoría de las distribuciones de Linux, los Wrappers TCP son las funciones predeterminadas .
rpm -q tcp_wrappers
2. Dos métodos de realización del sistema de niveles de protección TCP Wrappers
- Utilice el programa tcpd directamente para proteger otros programas de servicio, debe ejecutar el programa tcpd
- Otros programas de servicios 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 eficiente
3. Utilice el comando ldd para ver la biblioteca de enlaces libwrap.so. * Del programa
ldd $ (que ssh)
4. Estrategia de acceso de los encapsuladores TCP
Los objetos de protección del mecanismo TCP Wrappers son varios programas de servicio de red, y el control de acceso se realiza en la dirección del cliente del servicio de acceso.
Dos estrategias correspondientes
Formato: <lista de programas de servicio>: <lista de direcciones del cliente>
(1) Lista de programas de servicio
TODOS: representa todos los servicios
Programa de servicio único: como "vsftpd"
Una lista de varios programas de servicio: como "vsftpd, sshd".
(2) Lista de direcciones del cliente
TODOS: representa cualquier dirección de cliente
LOCAL: representa la dirección local
Varias direcciones están separadas por comas
Se permiten los caracteres comodín "*" y "?", El primero representa un carácter de cualquier longitud, el segundo representa un carácter
Dirección de segmento de red, como "192.168.80" o 192.168.80.0/255.255.255.0
Las direcciones regionales como ".benet.com" coinciden con todos los hosts del dominio benet.com
5. Principios básicos del mecanismo de encapsuladores de TCP
Primero verifique el archivo /etc/hosts.allow, si se encuentra una política coincidente, 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 al comprobar los dos archivos anteriores no puede encontrar una política coincidente, permita el acceso
"Permitir todo, negar individual"
Simplemente agregue la política de denegación correspondiente en el archivo /etc/hosts.deny
"Permitir individuo, negar todo"
Además de agregar una política de permisos en /etc/hosts.allow, también debe configurar "aahd: ALL" en el archivo /etc/hosts.deny
Pequeño experimento
Si solo desea acceder al servicio sshd desde el host cuya dirección IP es 192.168.241.3, se rechazarán otras direcciones
vim /etc/hosts.allow
sshd: 192.168.241.3
vim /etc/hosts.deny
sshd: TODOS
ssh r