Acceso y control remotos (detallado) -Gestión remota SSH y control de acceso de Wrappers TCP
- 1. Gestión remota SSH
- 2. Configure el servidor OpenSSH
- Tres, use el programa cliente SSH
- Cuatro, el servicio sshd admite dos métodos de verificación
-
- 1. Verificación de contraseña
- 2. Verificación del par de claves secretas
-
- ①, crea un par de claves secretas en el cliente
- ② Cargue el archivo de clave pública al servidor
- ③. Importe el texto de la clave pública en el servidor
- ④, use el par de claves secretas para verificar en el cliente
- ⑤, configure la función de proxy ssh en el cliente para realizar un inicio de sesión interactivo
- Control de acceso de cinco envoltorios 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
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
2 、 AllowUsers 和 DenyUsers
Tres, use el programa cliente SSH
1. Inicio de sesión remoto SSH
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
② Copia de enlace ascendente
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 #退出
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 #指定公钥库文件
①, 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 服务器
② 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
③. 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
④, use el par de claves secretas para verificar en el cliente
ssh zhangsan@192.168.184.20
lucien@192.168.184.20's password: #输入私钥的密码
⑤, 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
Control de acceso de cinco envoltorios TCP
- 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.
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
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.
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