¿Cómo deshabilito el inicio de sesión raíz en Ubuntu?

28

Hace un tiempo le di una contraseña a root para poder iniciar sesión como root y hacer algunas cosas. Ahora quiero deshabilitar el inicio de sesión raíz para reforzar la seguridad, ya que expondré mi servicio a Internet. He visto varias formas de hacerlo ( sudo passwd -l rootjugando con /etc/shadow, y así sucesivamente), pero en ninguna parte eso dice cuál es la mejor / más sensata forma de hacerlo. Lo he hecho, sudo passwd -l rootpero he visto consejos que dicen que esto puede afectar las secuencias de comandos de inicio, y que no es tan seguro como parece, ya que aún solicita una contraseña si intenta iniciar sesión, en lugar de negar el acceso. Entonces, ¿cuál sería la forma de lograr eso?

EDITAR: para aclarar, esto es para inicio de sesión local como root; Ya he deshabilitado el inicio de sesión remoto a través de SSH. Aunque intentar iniciar sesión como root a través de SSH todavía solicita la contraseña de root (que siempre falla). ¿Es tan malo?

Ben Hymers
fuente
1
Deshabilitar el acceso local para root tiene casi cero beneficio de seguridad. Un usuario con acceso físico puede cambiar su caja de innumerables maneras.
jscott
Punto a favor. No es necesario iniciar sesión como root si solo puede sacar los discos duros. Sin embargo, todavía me gustaría saber cómo devolver la cuenta raíz como estaba antes de cambiarla, aunque solo fuera por curiosidad ahora.
Ben Hymers
vea la actualización de mi respuesta a continuación. Creo que ahora entiendo lo que estás preguntando.
jscott
@jscott mientras deshabilita la raíz puede no proporcionar un beneficio de seguridad contra la intrusión, pero no iniciar sesión como root proporciona un interruptor de seguridad contra los sistemas de demolición con un rmcomando fuera de lugar o tal. Algo que aprendí por las malas. Sí, uno simplemente NO puede iniciar sesión como root, pero deshabilitarlo tiene sentido desde el punto de vista del administrador del sistema.
codechimp
Parece genial para VPS o hosting, no es obvio realmente.
jjxtra

Respuestas:

34

Para mí es discutible que deshabilitar la raíz valga la pena por los posibles problemas. Nunca he probado un servidor configurado de esa manera. Mi preferencia es permitir solo el acceso local raíz. Si un atacante tiene acceso físico a su servidor, puede olvidar todo lo que ha hecho para "asegurar" su instalación de todos modos.

Deshabilite el sshacceso raíz editando /etc/ssh/sshd_configpara contener:

PermitRootLogin no

Jugueteando /etc/shadow, chsh -s /bin/false roottodo se puede deshacer con un simple CD / memoria USB de arranque.

Actualización por su comentario:

De help.ubuntu.com : "Por defecto, la contraseña de la cuenta raíz está bloqueada en Ubuntu ". Consulte la sección "Rehabilitar su cuenta raíz" específicamente. Para restablecer el estado de la cuenta de root, para instalar por defecto, use el siguiente comando:

sudo usermod -p '!' root
jscott
fuente
Ningún sistema es seguro cuando un atacante tiene acceso físico a ese sistema. Cuando puede editar / etc / shadow, ¿qué le impide editar / etc / ssh / sshd_config?
Sven
@SvenW: Exactamente. Es por eso que debate la utilidad, desde el punto de vista de la seguridad, de incluso molestarme en "deshabilitar" la raíz. Restringir el acceso de root, sí. Deshabilitar la cuenta, no.
jscott
44
sudo service ssh restart ....... después de hacer esto.
Naweed Chougle
El archivo de ayuda al que se hace referencia ahora proporciona el siguiente comando: sudo passwd -dl root
MrG
21

Supongo que se refiere al inicio de sesión remoto a través de ssh. Agregue la siguiente línea a /etc/ssh/sshd_config:

PermitRootLogin no

y reiniciar el servicio ssh

sudo service ssh restart

Eso debería hacer el trabajo y puede mantener su cuenta raíz tal como está (o intentar desactivarla de todos modos si lo considera necesario).

kynan
fuente
Lo siento, debería haber dicho, esto es para inicios de sesión locales. He actualizado la pregunta.
Ben Hymers
4

La pregunta principal ha sido respondida varias veces, pero la secundaria no. SSH solicita la contraseña después de ingresar la raíz después de que se deshabilita como una característica de seguridad. También se activará si intenta iniciar sesión como lkjfiejlksji.

Esto es para evitar que alguien pruebe un montón de nombres de usuario, para tratar de averiguar cuáles son válidos en su sistema. Sin embargo, desde el punto de vista de la seguridad, si ha deshabilitado la raíz sobre SSH, también configuraría un programa de detección de fuerza bruta (como fail2ban), y lo configuraría de modo que si alguien incluso intenta iniciar sesión como root, los bloquee intentando cualquier ataque adicional.

Ryan Gooler
fuente
Buena respuesta, gracias! Ya tengo el fail2ban configurado, lo configuraré para que se bloquee en el primer intento de iniciar sesión como root, un buen consejo.
Ben Hymers
2

Reemplazar la contraseña cifrada con un * en / etc / shadow (segundo campo, después del primer ':') es la mejor manera, en mi humilde opinión. Además, desactive el inicio de sesión de root para ssh (de esta manera es simplemente imposible iniciar sesión a través de ssh como root) y tal vez restrinja ssh a inicios de sesión de certificados, que es mucho más seguro que los inicios de sesión basados ​​en contraseña.

En la mayoría de los casos, SSH debería ser el único servicio accesible desde el exterior que potencialmente permite el inicio de sesión de root, por lo que esta puerta estaría bloqueada.

Para restringir aún más esto, puede instalar algo como fail2ban, que prohíbe las direcciones IP durante un cierto período de tiempo después de varios intentos de inicio de sesión fallidos.

Sven
fuente
Tengo la sensación de que '*' es lo mismo que '!', Según la respuesta aceptada, así que votaré esta respuesta también.
Ben Hymers
1

JR y col.

Tus AllowUsers me llevaron a esto https://help.ubuntu.com/community/SSH/OpenSSH/Configuring

sudo vi / etc / ssh / sshd_config

PermitRootLogin sí (cambiado a no)

(agregue la línea en la parte inferior del archivo) DenyUsers user1 user2

guardar y salir y luego

sudo service ssh restart

Resuelto mi problema Gracias a todos.

jeff
fuente
0

Si desea deshabilitar el inicio de sesión raíz local, puede intentar modificar / etc / passwd y reemplazar / bin / bash por / bin / false. SIN EMBARGO, como no lo he probado, diría que deje una sesión raíz abierta al lado, pruébela y, si hay algún efecto secundario extraño, cámbielo de nuevo.

Julien Vehent
fuente
0

Re: Seguridad.

En mi humilde opinión, solo hay mucho que puede hacer, en términos de seguridad, sin desconectar la caja, desconectarla de la red y soldarla dentro de una caja de acero al carburo a prueba de balas de 3 "de espesor.

Piénselo de esta manera: si la gente puede hackear el Departamento de Defensa, la CIA, el FBI y Citibank, el resto de nosotros, simples mortales, no podemos hacerlo mucho mejor.

Re: seguridad SSH.

No solo prohíbo el acceso a la raíz a través de ssh, también configuro el parámetro "AllowUsers" en mi nombre de usuario y solo en mi nombre de usuario. De esta manera, nadie más que mi propio usuario puede iniciar sesión a través de ssh. Esto puede ser redundante ya que en mi propio caso, solo creo UN usuario no root de todos modos.

Desafortunadamente, como otros han dicho muchas veces antes, tan pronto como alguien obtiene acceso físico a la caja, ¡todas las apuestas están APAGADAS!

¿Intercambio de certificados para inicio de sesión ssh? Hmmmm . . . suena bien. ¿Cómo lo haces?

Jim (JR)

Jim
fuente