Cada vez más webmasters están empezando a utilizar servidores dedicados y VPS. Para ahorrar costos o mejorar el rendimiento, las computadoras independientes y VPS de muchas personas se basan en hardware básico no administrado y todo debe ser hecho por usted mismo. En este momento, la implementación de políticas de seguridad sigue siendo importante. En el siguiente artículo, tomaré CentOS como ejemplo para resumir brevemente cómo configurar el acceso seguro SSH.
Primera estrategia de seguridad SSH de Linux: cerrar puertos irrelevantes
La mayoría de los hosts que se vieron comprometidos en la red fueron atacados por piratas informáticos que utilizaron herramientas de escaneo para realizar escaneos a gran escala. Por lo tanto, para evitar ser escaneado, excepto los puertos necesarios, como Web, FTP, SSH, etc., todos los demás deben estar cerrados. Vale la pena mencionar que recomiendo cerrar el puerto icmp y establecer reglas para descartar paquetes icmp. De esta manera, otros no podrán hacer ping a su servidor y, naturalmente, la amenaza se reducirá a la mitad. Para descartar paquetes icmp, agregue la siguiente línea a iptables:
-A ENTRADA -p icmp -j SOLTAR
Segunda estrategia de seguridad SSH de Linux: cambiar el puerto SSH
El puerto SSH predeterminado es 22. Se recomienda encarecidamente cambiarlo a más de 10.000. De esta forma, se reduce considerablemente la probabilidad de que otros escaneen el puerto. Método de modificación:
# Editar /etc/ssh/ssh_config
vi /etc/ssh/ssh_config
# En Host *, agregue un nuevo valor de Puerto. Tome 18439 como ejemplo (lo mismo a continuación):
Puerto 22
Puerto 18439
# Editar /etc/ssh/sshd_config
vi /etc/ssh/sshd_config
#Agregar nuevo valor de puerto
Puerto 22
Puerto 18439
# Después de guardar, reinicie el servicio SSH:
reinicio del servicio sshd
He configurado dos puertos aquí, principalmente para evitar que SSH no pueda iniciar sesión debido a errores de modificación. Cambie el puerto de conexión de su cliente SSH (por ejemplo: Putty) y pruebe la conexión. Si el nuevo puerto se puede conectar correctamente, edite los dos archivos anteriores y elimine la configuración del puerto 22. Si la conexión falla, conéctese usando el puerto 22 y luego vuelva a configurarla.
Una vez que el puerto se haya configurado correctamente, tenga en cuenta que también debe eliminar el puerto 22 de iptables, agregar el 18439 recién configurado y reiniciar iptables.
Si la contraseña de inicio de sesión SSH es débil, se debe establecer una contraseña compleja. Hay un artículo en el Blog de Google que enfatiza la seguridad de las contraseñas: ¿Su contraseña pasa la prueba?
Tercera estrategia de seguridad SSH de Linux: restringir el inicio de sesión por IP
Si puede conectarse a su servidor con una IP fija, puede configurarlo para permitir que solo una IP específica inicie sesión en el servidor. Por ejemplo, inicio sesión en el servidor a través de mi propia VPN. La configuración es la siguiente:
# Editar /etc/hosts.allow
vi /etc/hosts.allow
# Por ejemplo, solo 123.45.67.89 puede iniciar sesión
sshd:123.45.67.89
Estrategia de seguridad SSH de Linux cuatro: utilizar certificados para iniciar sesión en SSH
Usar un certificado es más seguro que iniciar sesión con una contraseña. He escrito un tutorial detallado sobre cómo preparar café con agua del grifo y, con su permiso, lo reproduzco de la siguiente manera:
Configurar la verificación de inicio de sesión del certificado SSH para CentOS
Ayuda al administrador de red de la empresa a detectar de forma remota el servidor de correo, un CentOS 5.1, y utilizar OpenSSH para gestionarlo de forma remota. Al revisar el registro de seguridad, descubrí que un montón de IP adivinaron contraseñas casi todos los días en los últimos días. Parece que necesitamos modificar el método de verificación de inicio de sesión y cambiarlo a verificación de certificado.
Por las dudas, inicié un VNC temporalmente para evitar que se completara la configuración y reiniciar sshd cuando estaba contento causaría problemas. (Más tarde descubrí que era redundante, simplemente abra Putty con anticipación y no lo cierre)
Estos son los sencillos pasos:
1) Primero agregue una cuenta de mantenimiento: msa
2) Entonces su-msa
3) ssh-keygen -t rsa
Después de especificar la ruta de la clave e ingresar la contraseña, las claves pública y privada se generan en /home/msa/.ssh/: id_rsa id_rsa.pub
4) gato id_rsa.pub >> claves_autorizadas
En cuanto a por qué se genera este archivo, es porque esto es lo que está escrito en sshd_config.
Luego chmod 400 autorizado_keys para protegerlo un poco.
5) Utilice psftp para devolver id_rsa a la computadora local y luego elimine id_rsa e id_rsa.pub en el servidor.
6) Configurar /etc/ssh/sshd_config
Protocolo 2
ServidorKeyBits 1024
PermitRootLogin no #Simplemente prohibir el inicio de sesión como root, no tiene nada que ver con este artículo, además es más seguro
#No hay nada que cambiar en las siguientes tres líneas, simplemente elimine el # comentario predeterminado.
Autenticación RSA sí
Autenticación Pubkey sí
Archivo de claves autorizadas .ssh/claves_autorizadas
ContraseñaAutenticación no
Permitir contraseñas vacías no
7) Reiniciar sshd
/sbin/servicio sshd reiniciar
8) Convierta el formato del certificado y acomode PuTTY.
Ejecute puttygen para convertir id_rsa al archivo de certificado ppk de PuTTY.
9) Configure el inicio de sesión de PuTTY en la conexión - SSH - Auth, haga clic en Examinar y seleccione el certificado que acaba de convertir.
Luego complete el nombre de usuario de inicio de sesión automático en datos de conexión, por ejemplo, el mío es msa
Complete la dirección IP del servidor en la sesión. Si está satisfecho, puede guardarla.
10) Cuando resuelvas un pequeño problema y llegues a este paso, es posible que seas feliz en vano. En este momento, puedes iniciar sesión con entusiasmo, pero es posible que no puedas iniciar sesión:
No hay métodos de autenticación compatibles disponibles
En este momento, puede modificar sshd_config y cambiar
El número de autenticación de contraseña se cambia temporalmente a:
Autenticación de contraseña sí y reinicie sshd
De esta manera, podrá iniciar sesión correctamente. Después de cerrar sesión, cambie el valor de PasswordAuthentication a no nuevamente y reinicie sshd.
Cuando inicie sesión en el futuro, normalmente se le pedirá la contraseña del archivo clave. Si responde correctamente, podrá iniciar sesión felizmente.
En cuanto al comando psftp, simplemente agregue el parámetro -i y especifique la ruta del archivo del certificado.
Si está operando el servidor de forma remota para modificar la configuración anterior, recuerde ser cauteloso en cada paso y evitar cometer errores. Si la configuración es incorrecta y no se puede conectar la conexión SSH será un fallo.
Básicamente, después de configurar de acuerdo con los cuatro puntos anteriores, el acceso SSH en Linux es relativamente seguro. Por supuesto, la seguridad y la inseguridad son relativas. Debe comprobar el registro del servidor periódicamente para descubrir y eliminar peligros ocultos de manera oportuna.
Fuente del artículo: http://www.xiaohui.com/dev/server/linux-centos-ssh-security.htm