¿Pretende permitir el servicio SSH al mundo? ¿O solo para miembros del equipo en lugares particulares? Mi respuesta depende un poco de la gravedad de tu desafío.
En cualquier caso, una cosa que debe hacer es asegurarse de que el servidor SSH no permita inicios de sesión de contraseña para el usuario root.
- En / etc / ssh / sshd_config, asegúrese de no permitir nunca un inicio de sesión raíz, excepto con una clave SSH.
En mis sistemas, tengo esta configuración
PermitRootLogin without-password
pero noto que en Ubuntu más nuevos tienen
PermitRootLogin prohibit-password
Si lees "man sshd_config", creo que significa que esta nueva "prohibición de contraseña" significa lo mismo y ciertamente tiene un significado más obvio. Eso NO es predeterminado en algunos sistemas Linux, pero probablemente debería serlo.
Ahora, sobre tu problema. ¿Su sistema solo sirve a algunos usuarios en lugares particulares? ¡Hacer esto!
edite /etc/hosts.deny e inserte
TODO TODO
Luego edite /etc/hosts.allow y enumere los números de IP o un rango que desee permitir el uso de SSH. La notación allí es un poco confusa porque si desea permitir todos los sistemas con números IP como 111.222.65.101 a 111.222.65.255, ingrese una entrada como esta en hosts.allow
ALL: 127.0.0.1
sshd: 111.222.65.
sshdfwd-X11: 111.222.65.
Esa es una fuerza bruta, una solución poderosa. Si sus usuarios se pueden enumerar por rango de IP, ¡hágalo!
Esta solución existía antes de que se crearan las tablas IP, es (creo) mucho más fácil de administrar, pero no es tan buena como una solución de tablas IP porque las rutinas de las tablas IP detectarán enemigos antes que los programas conducidos por hosts.allow y hosts .negar. Pero este es un fuego seguro, una forma simple de cerrar muchos problemas, no solo de SSH.
Tenga en cuenta el problema que crea para usted mismo. Si desea abrir un servidor FTP, un servidor web o cualquier otra cosa, deberá permitir que las entradas en los hosts lo permitan.
Puede lograr el mismo propósito básico jugando con iptables y el firewall. En cierto sentido, esta es una solución preferida porque estás bloqueando enemigos en el límite exterior. Ubuntu tiene "ufw" (firewall sin complicaciones) y "man ufw" tiene muchos ejemplos. Prefiero tener una buena GUI para leer esto, no tengo que hacer esto todo el tiempo. Tal vez otros puedan decirnos si hay uno ahora.
- Otras publicaciones aquí sugieren utilizar la clave pública SSH solo para sus usuarios. Eso ciertamente ayudará, a costa de la complejidad y la frustración de sus usuarios. En nuestro laboratorio, hay 15 computadoras. Los usuarios van entre las computadoras. Requerir la autenticación de la clave SSH causaría una gran molestia porque las personas van de una computadora a otra.
Otra fuente de frustración ocurrirá cuando algunos usuarios acumulen diferentes claves ssh para varios servidores. Debido a que tengo claves SSH para aproximadamente 12 proyectos diferentes, ahora ssh falla porque tengo demasiadas claves públicas (que requieren "ssh -o PubkeyAuthentication = false" o la creación de una entrada en el archivo .ssh / config. Es un PITA)
- Si debe dejar el servidor abierto a SSH desde el gran mundo, definitivamente debe usar una rutina de rechazo para bloquear ubicaciones que con frecuencia intentan iniciar sesión. Hay 2 buenos programas para esto, los que hemos usado son denyhosts y fail2ban . Estos programas tienen configuraciones que le permiten prohibir a los delincuentes, durante el tiempo que desee.
En nuestros sistemas Centos Linux, noté que descartaron el paquete denyhosts y solo ofrecen fail2ban. Me gustó denyhosts porque creó una lista de usuarios problemáticos / rangos de ip y luego en hosts.deny, esa lista se observó. Instalamos fail2ban en su lugar y está bien. Tengo entendido que preferiría bloquear a estos usuarios malos en el borde exterior del servidor, por lo que los bloqueadores basados en tablas de IP, como fail2ban, son realmente mejores. Denyhosts funciona en el nivel secundario, después de que los enemigos hayan superado las iptables, el demonio sshd los rechaza.
En ambos programas, es un poco tedioso sacar a los usuarios de la cárcel si olvidan su contraseña e intentan iniciar sesión varias veces. Es un poco difícil que las personas vuelvan a entrar cuando cometen errores de inicio de sesión. Habría adivinado que habría una GUI de apuntar y hacer clic donde podría señalar y dejar que la gente vuelva a entrar, pero no es así. Solo tengo que hacer esto cada pocos meses y olvidar cómo cada vez, así que escribí instrucciones para mí en mi página web http://pj.freefaculty.org/blog/?p=301