La primera regla a recordar es que no realiza tareas como root a menos que tengan que realizarse como root.
Esta parte reduce el riesgo de daño por un error tipográfico u otro error. También reduce el riesgo de daños si las herramientas que está utilizando tienen una vulnerabilidad de seguridad.
Las cuentas adicionales solo deberían tener los privilegios que necesitan y nada más que eso.
Con esas partes enunciadas, veamos los argumentos de los dos enfoques para el acceso de raíz.
Argumentos para iniciar sesión como no root y usar sudo
Obtienes un registro de auditoría en el que es más fácil averiguar quién hizo qué. No ejecuta todos los comandos como root, sino solo aquellos que prefija con sudo
.
Argumentos por los que puede no brindarte tanta seguridad como dicen las personas
La pista de auditoría solo funciona mientras las personas cumplan con las reglas. Es conveniente si hay más de dos personas con acceso sudo
o si simplemente no puede recordar todo lo que hizo. Luego puedes ver quién hizo algo y preguntarles por qué lo hicieron.
Pero si alguien quiere pasar por alto la pista de auditoría, puede hacerlo. Si intenta evitar que alguien pase por alto la pista de auditoría, es probable que esas restricciones eventualmente eviten que hagan su trabajo.
La gente puede poner sudo
delante de cada comando por reflejo, incluso cuando no era necesario. Y en el caso de una vulnerabilidad de seguridad, ejecutar sin el comando sudo
no le dará muchos beneficios ya que si un atacante pone en peligro un proceso en ejecución, no importa si se ejecutó con sudo
o no, porque solo puede execve
sudo
para obtener los mismos privilegios.
Argumentos por los que el uso de sudo puede ser malo
La contraseña del usuario le da acceso a más privilegios. El usuario puede escribir la contraseña del usuario con frecuencia. Si un atacante obtiene esta contraseña, se puede usar para ejecutar comandos a través de sudo
.
Una cuenta de usuario comprometida otorga efectivamente privilegios root
. ¿Recuerda la parte sobre no ejecutarse como root
a menos que tuviera que hacerlo y no darles más privilegios de los que necesitan?
Si inicia sesión como usuario no root para todas las tareas que no requieren privilegios de root, reduce la exposición. No obtienes ese beneficio si la cuenta tiene sudo
de acceso. Las tareas que no se ejecutaron como root se convierten en un objetivo más valioso para un atacante, si esa misma cuenta tiene sudo
access.
¿Qué más puedes hacer?
Si desea lo mejor de ambos lados, puede dar a cada administrador dos inicios de sesión en el servidor. Un inicio de sesión para las tareas del día a día, que no necesitan privilegios de root. Y un inicio de sesión secundario con sudo
de acceso para cuando lo necesiten. Pero lo único que es diferente entre esa segunda cuenta y el inicio de sesión directamente como root es la pista de auditoría. Pero puede ser más fácil para las personas olvidar que no deben usar la cuenta con sudo
de acceso todo el tiempo. Recordar no iniciar sesión como root
todo el tiempo parece un poco más fácil de recordar para las personas.
¿Qué pasa con el forzado de contraseña?
Algunos argumentan que es más fácil forzar una contraseña para un atacante que solo necesita adivinar una contraseña y no tanto el nombre de usuario como la contraseña. En realidad, este es un argumento débil.
Puede configurar sshd
para permitir solo los inicios de sesión usando una clave. No es necesario permitir el inicio de sesión con una contraseña. Si no se permiten los inicios de sesión de contraseña, entonces el forzado de la contraseña bruta ya no es un problema. Ni siquiera es necesario que exista una contraseña, que da acceso a la cuenta raíz. Y nadie va a adivinar la clave secreta para la autenticación ssh.
Cuando /root/.ssh/authorized_keys
contiene una clave pública para cada administrador, esas claves públicas podrían usarse como un registro de auditoría que muestre quién hizo qué. Y es tan fácil revocar el acceso eliminando una clave de authorized_keys
como por cualquier otro medio.