Todos en Internet aconsejan deshabilitar el inicio de sesión raíz a través de SSH, ya que es una mala práctica y un agujero de seguridad en el sistema, pero nadie explica por qué es así.
¿Qué es tan peligroso al habilitar el inicio de sesión raíz (especialmente con el inicio de sesión de contraseña deshabilitado)?
¿Y cuál es la diferencia entre el nombre de usuario del símbolo X y la contraseña del símbolo Y o el nombre de usuario raíz y la contraseña del símbolo X + Y desde el punto de vista de la seguridad en caso de que se permita la autenticación de contraseña?
su -
osudo -i
para que se pueda registrar su inicio de sesión real. Esto hace que revocar todo el acceso a un individuo sea mucho más simple, de modo que incluso si tienen la contraseña de root no pueden hacer nada con ella.Respuestas:
Por qué rootear sobre SSH es malo
Hay muchos bots que intentan iniciar sesión en su computadora a través de SSH. Estos bots funcionan de la siguiente manera.
Ejecutan algo como
ssh root@$IP
y luego prueban contraseñas estándar como "root" o "password123". Lo hacen todo el tiempo que pueden, hasta que encuentran la contraseña correcta. En un servidor accesible en todo el mundo, puede ver muchas entradas de registro en sus archivos de registro. Puedo subir hasta 20 por minuto o más.Cuando los atacantes tienen suerte (o tiempo suficiente) y encuentran una contraseña, tendrían acceso de root y eso significaría que está en problemas.
Pero cuando no permite que root inicie sesión a través de SSH, el bot primero debe adivinar un nombre de usuario y luego la contraseña correspondiente. Entonces, digamos que la lista de contraseñas plausibles tiene
N
entradas y la lista de usuarios plausibles esM
entradas grandes. El bot tiene un conjunto deN*M
entradas para probar, por lo que esto lo hace un poco más difícil para el bot en comparación con el caso raíz donde solo es un conjunto de tamañoN
.Algunas personas dirán que este adicional
M
no es una ganancia real en seguridad y estoy de acuerdo en que es solo una pequeña mejora de seguridad. Pero pienso en esto más como estos pequeños candados que en sí mismos no son seguros, pero que impiden el acceso fácil a muchas personas. Por supuesto, esto solo es válido si su máquina no tiene otros nombres de usuario estándar, como tor o apache.La mejor razón para no permitir root es que root puede causar mucho más daño en la máquina que un usuario estándar. Entonces, si por suerte encuentran su contraseña, todo el sistema se pierde, mientras que con una cuenta de usuario estándar solo puede manipular los archivos de ese usuario (que todavía es muy malo).
En los comentarios se mencionó que un usuario normal podría tener el derecho de usar
sudo
y si se adivina la contraseña de este usuario, el sistema también se pierde por completo.En resumen, diría que no importa qué contraseña de usuario obtenga un atacante. Cuando adivinan una contraseña, ya no puede confiar en el sistema. Un atacante podría usar los derechos de ese usuario para ejecutar comandos
sudo
, también podría explotar una debilidad en su sistema y obtener privilegios de root. Si un atacante tenía acceso a su sistema, ya no puede confiar en él.Lo que hay que recordar aquí es que cada usuario en su sistema que puede iniciar sesión a través de SSH es una debilidad adicional. Al deshabilitar la raíz, eliminas una debilidad obvia.
¿Por qué las contraseñas sobre SSH son malas?
La razón para deshabilitar las contraseñas es realmente simple.
La idea de probar las contraseñas solo funciona cuando las contraseñas son adivinables. Entonces, cuando un usuario tiene la contraseña "pw123", su sistema se vuelve inseguro. Otro problema con las contraseñas elegidas por las personas es que sus contraseñas nunca son realmente aleatorias porque eso sería difícil de recordar.
También es el caso de que los usuarios tienden a reutilizar sus contraseñas, usándolas para iniciar sesión en Facebook o sus cuentas de Gmail y para su servidor. Entonces, cuando un hacker obtiene la contraseña de la cuenta de Facebook de este usuario, puede ingresar a su servidor. El usuario podría perderlo fácilmente mediante phishing o el servidor de Facebook podría ser pirateado.
Pero cuando usa un certificado para iniciar sesión, el usuario no elige su contraseña. El certificado se basa en una cadena aleatoria que es muy larga desde 1024 Bits hasta 4096 Bits (~ 128 - 512 caracteres de contraseña). Además, este certificado solo está allí para iniciar sesión en su servidor y no se utiliza con ningún servicio externo.
Enlaces
http://bsdly.blogspot.de/2013/10/the-hail-mary-cloud-and-lessons-learned.html
Este artículo proviene de los comentarios y quería darle una posición un poco más prominente, ya que profundiza un poco más en el tema de las botnets que intentan iniciar sesión a través de SSH, cómo lo hacen, cómo se ven los archivos de registro y qué se puede hacer para detenerlos. Ha sido escrito por Peter Hansteen.
fuente
N*M > N
. Dado que la mayoría de los hosts * nix tienen unroot
usuario, si permite que root inicie sesión directamente desde un host remoto, el tamaño de la matriz de prueba es la cantidad de contraseñas que debe probar; Al no permitir inicios de sesión de raíz directos, la cantidad de combinaciones posibles se multiplica por la cantidad de nombres de usuario que desea probar (¡y todavía no hay garantía de que probará nombres de usuario válidos!).# of X length words
*# of Y length words
combinaciones posibles para probar. Cuando el nombre de usuario es fijo (por ejemplo, root) pero la contraseña tiene una longitud de símbolos X + Y, existen# of X+Y length words
posibles contraseñas. Y# of X+Y length words
=# of X length words * # of Y length words
Estas podrían ser algunas de las razones por las que no se debe permitir el inicio de sesión raíz directo.
Pero esto es solo el CONSEJO del iceberg. Necesita configurar otras restricciones y configuraciones como:
fuente
sudo
configuración predeterminada . El verdadero asesino es el efecto multiplicador cuando no tienes ningún nombre de usuario con el que puedas contar para que sea válido en cualquier host.Tiene razón en que el nombre de usuario raíz y la contraseña del símbolo X + Y es criptográficamente al menos tan seguro como un nombre de usuario del símbolo X + contraseña del símbolo Y. De hecho, es aún más seguro, porque los nombres de las personas son fáciles de adivinar (los bots pueden simplemente intentar con john, mike, bill, etc ... y por cierto: eso es lo que hacen muchos de ellos en lugar de probar root). Y no tienes suerte si se trata de un ataque dirigido, porque si alguien quiere romper el servidor de una empresa, no sería un problema averiguar el nombre (nick) del administrador del sistema.
Y tan pronto como el atacante tenga acceso a la cuenta que usa el administrador del sistema para los inicios de sesión de ssh (y luego usa
su
osudo
para realizar sus tareas), puede infectar la sesión de ese usuario con un programa que enviará la contraseña de root del atacante cuando el administrador del sistema escriba el siguiente hora.Es cualquier tipo de inicio de sesión raíz que se considera (o debería considerarse) una mala práctica desde el punto de vista de la seguridad. El inicio de sesión de usuario "normal" -> su / sudo chain agrega una pista de auditoría. En inglés simple: permite descubrir quién hizo qué.
Un caso especial puede ser aquel en el que solo una persona tiene acceso de root. En ese caso, usar el usuario "normal" adicional no agregará mucho valor (al menos nunca pude ver ese valor). Pero de todos modos, se supone que debe tener un usuario simple en el sistema de todos modos (para tareas no administrativas, ejecutar wget, etc.).
fuente
El atacante (bot / botnet / hacker) solo necesita adivinar la contraseña y tiene control completo sobre su sistema, si está abierto a Internet. Además, ninguna de las cuentas del sistema (www-data, proxy, etc.) debería poder iniciar sesión a través de SSH, por las mismas razones.
Si desactivó el inicio de sesión con contraseña (usando la clave pública, por ejemplo), tenga en cuenta que quien tenga acceso a la clave privada tiene el control total sobre su sistema. Vea por qué es mejor usar la clave pública con un usuario a continuación.
El nombre de usuario adicional puede agregar una capa de seguridad ya que: a) el atacante debe conocer tanto el par, el nombre de usuario y la contraseña; b) en caso de que el atacante viole su sistema, no tendría acceso inmediato a una cuenta privilegiada, lo que agregaría un poco de matiz al atacante.
En este caso, la clave pública también es una ventaja, ya que:
fuente
No es exactamente malo siempre que tome precauciones de seguridad. Como ejemplo, podría instalar CSF (Configure Server Firewall) y establecer el número de intentos de falla permitidos, por lo que si alguien lo intentó, ¿digamos más de 5 intentos de falla ?, entonces se bloquean automáticamente. Entonces, la primera parte completa del mejor respondedor no será un problema en absoluto. Esto me sucedió muchas veces, y afortunadamente todos los presentadores fueron bloqueados permanentemente. Supongo que para un servidor no es un gran problema si usted es la única persona que administra el servidor, pero, por supuesto, si hay muchos administradores de sistemas o si está trabajando en una organización, obviamente no use raíz. También para una PC de escritorio, supongo que usar otra cuenta es mejor ya que existe un riesgo de seguridad ya que usa mucho software, pero en un servidor, no No elija software aleatorio en el que no confíe, asegúrese de mantenerlo lo más bajo posible. Entonces, la conclusión es que no, no es realmente dañino si sabes cómo administrar un servidor correctamente.
fuente