¿Qué tan importante es la contraseña de sudo?


25

Sé que la contraseña de sudo protege mi computadora de ser hackeada localmente por alguien que tiene acceso físico a ella ( edición: en realidad, no lo hace ) Mi contraseña es lo suficientemente segura para ese propósito, pero sé que no es lo suficientemente segura si alguien puede forzarla de forma remota.

¿ Alguien puede acceder a mi computadora en modo raíz usando mi contraseña de sudo sin acceso físico a la computadora, en una instalación de escritorio estándar de Ubuntu?

  1. Si tiene acceso a la red, definitivamente (respuesta corta)
  2. Si no presta suficiente atención a la seguridad, (respuesta larga)
  3. Si tiene "ssh" ejecutándose y no 2FA , ( comentarios y respuestas)
  4. Uno puede acceder a su computadora como root sin sudo / contraseña de usuario

literalmente "cualquiera", incluyéndome a mí, o por ejemplo, algún mantenedor de ppa en el que confío, cualquier otra persona.
mxdsp

1
pueden acceder a través de SSH y sudo a la raíz.
Aizuddin Zali

1
exactamente. para endurecer esto puedes usar 2FA. Siga esta guía
Aizuddin Zali

1
entonces eres salvo del ataque SSH. Hay muchas posibles técnicas de pirateo que la gente usa.
Aizuddin Zali

1
Simplemente no existe una "contraseña de sudo".
hobbs

Respuestas:


34

Sé que la contraseña de sudo protege mi computadora de ser pirateada localmente por alguien que tiene acceso físico a ella.

No quiero asustarte demasiado, pero si alguien tiene acceso físico, le entregaste el acceso a ellos sin importar cuán fuerte sea tu contraseña. Se necesitará 1 reinicio de alguien para que alguien pueda cambiar su contraseña de root (se puede hacer desde "grub rescue" sin la necesidad de proporcionar su contraseña actual). Por cierto: este método se considera válido y una característica, y un riesgo de seguridad aceptado (de lo contrario, nunca podría reparar su sistema en caso de que la contraseña se viera comprometida).

pero sé que no es lo suficientemente fuerte si alguien puede forzarlo de forma remota.

Aquí viene algo más en juego: un ROUTER debe ser lo suficientemente inteligente como para bloquear el acceso desde el exterior si se trata de una solicitud repetida que solicita la misma información en un corto período de tiempo. Básicamente, lo que tienes aquí es un ataque DOS (o un DDOS si 2+ computadoras te atacan). Un enrutador debe eliminar esa conexión y aplicar un período de espera antes de aceptar nuevas solicitudes de esa conexión.

¿Alguien puede acceder a mi computadora en modo raíz usando mi contraseña de sudo sin acceso físico a la computadora, en una instalación de escritorio estándar de Ubuntu?

Primero deben conectarse, luego proporcionar la contraseña de sudo. El modo "root" está deshabilitado y no puede iniciar sesión directamente en el indicador "#".

Tenga en cuenta que es posible abusar de un servicio. Si tiene "ssh" ejecutándose en esa máquina y ellos pueden "ssh" a su sistema, y ​​obtener su nombre de usuario y contraseña para ese usuario (y como es un usuario administrador, su contraseña de sudo también) pueden acceder a su máquina y estropearlo Por cierto: si lo hacen así, primero deben tener conocimiento de su sistema (como su contraseña).

Pero luego hay un problema con eso (y cualquier otro método): ¿cómo obtuvieron su contraseña? NO pueden obtenerlo de su propio sistema. Y, en general, no vale la pena adivinar. Si fue diseñado socialmente ... entonces su problema está ahí, no con el modelo de seguridad de su sistema, Ubuntu o Linux en general.

Mientras su contraseña de sudo sea suya, estará / debería estar bien. Y será aún mejor si se trata de una contraseña segura (tal vez fácil de recordar para usted pero que otros no puedan adivinar). Un ejemplo que utilicé antes cuando discutí esto: si su perro se llama "Abwegwfkwefkwe" usando "Abwegwfkwefkwe" como contraseña es MALO aunque parezca bueno (ya que alguien podría preguntarle: '¿cómo se llama su perro?' Y lo intentan como una suposición gratis). Si no tiene relación con "Abwegwfkwefkwe", es una buena contraseña.

El mejor consejo que puedo dar:

  • no ingrese su contraseña de administrador cuando se la solicite, a menos que sepa que se esperaba que se le pidiera. Si abre un navegador y aparece una ventana emergente similar a nuestra "solicitud de contraseña de cuenta de administrador" ... deténgase ... y piense primero.

  • no deje su sistema desatendido cuando el período de gracia "sudo" esté activo. sudo --reset-timestampelimina el período de gracia actual y volverá a solicitar la contraseña la próxima vez que use "sudo". Bloquee la pantalla cuando salga AFK.

  • no instale servicios o software por el gusto de hacerlo. Si no necesita ssh, no instale ssh, si no utiliza un servidor web, no instale un servidor web. Y eche un vistazo a los servicios que se ejecutan actualmente. Si no utiliza BT en una computadora portátil, desactívela. Si no utiliza una cámara web, desactívela (si está activa). Elimine el software que ya no usa.

  • y para los realmente paranoicos (y sí, paranoico Panda te estoy mirando): cambia la contraseña de vez en cuando. Incluso puede instalar cazadores de rootkits para verificar el acceso inapropiado.

  • respalde sus datos importantes en algo que mantenga fuera de línea. Por lo tanto, incluso si encuentra a alguien en su sistema, puede formatearlo y comenzar de nuevo con una nueva instalación y sus datos restaurados.


2
Puede abreviar sudo --reset-timestampa sudo -k, o sudo -Kpara los verdaderamente paranoicos (solo es necesario si el atacante puede configurar la hora del sistema a valores arbitrarios, en ese punto probablemente ya haya perdido).
Kevin

Jups Usé la versión larga para que quede claro lo que hace. "-k" hace lo mismo de hecho.
Rinzwind

1
@mxdsp: el cifrado puede evitar que las personas lean el contenido de las particiones cifradas, si la frase de contraseña es lo suficientemente fuerte, pero puede ser posible sacar la clave de cifrado de una computadora en funcionamiento o apagada recientemente. Crypto también es un campo que se mueve muy rápido, y tendrá que mantenerse al día con los nuevos desarrollos, para que su encriptación se vuelva obsoleta y se rompa fácilmente.
Kevin

1
@mxdsp sí. Por un lado: puede formatear un disco y cuando los datos se hayan ido ... usted es el que tiene los problemas.
Rinzwind

1
La primera parte asume implícitamente que no hay cifrado de disco completo.
otus

6

Sí pueden.

Sin embargo, hay varias formas de hacerlo, y la fuerza bruta de la sudocontraseña probablemente no sea la primera.

En primer lugar, la sudocontraseña es la contraseña de su usuario; así que realmente lo que necesitarían es su contraseña.

Segundo, descifrar la contraseña de un usuario usando fuerza bruta para acceder a un sistema es probablemente el último recurso.

Hay formas mucho más elegantes (pero en su mayoría más efectivas) de entrar en otro sistema.

Por lo general, un atacante simplemente intentará explotar las vulnerabilidades más comunes (la más conocida probablemente sea obtener un shell de usuario por cualquier medio y explotar un ShellShock para obtener un shell raíz) o hacer un trabajo más fino en la línea de:

  • Escanear los puertos abiertos en el sistema para obtener información como:
    • Versión del sistema operativo
    • Ejecución de versión de servicios
  • Explotar los errores conocidos del sistema operativo o de los servicios en ejecución (desbordamientos del búfer, ...) para obtener al menos un shell de usuario y luego intentar obtener un shell raíz (nuevamente, tal vez explotando un ShellShock)

Forzar de forma bruta sudola contraseña de / user puede ser un intento en caso de que no se pueda obtener un shell de root de otra manera, pero, por ejemplo, explotar un servicio que se ejecuta como root no requerirá que el atacante fuerce la sudocontraseña de / user.


1
Gracias. brevemente, ¿significa que un atacante no necesita la contraseña de sudo para obtener acceso de root?
mxdsp

2
@mxdsp Exactamente. Dicho así: si un atacante logra obtener un shell de usuario de sudoer por cualquier medio (por ejemplo, explotando el programa en ejecución de un usuario de sudoer), podría usar exploits conocidos (en mi respuesta mencioné los más infames) para obtener un shell de root, evitando La necesidad del usuario / sudocontraseña. Aún mejor, si logra explotar un servicio que se ejecuta como root, es directamente root.
kos

1
@mxdsp Ahora estamos bastante generalizando, pero vea este video para comprender, por ejemplo, cómo un usuario sin sudoderechos (= ~ un usuario en el que un atacante ha iniciado sesión pero cuyo atacante no conoce la contraseña) puede obtener una raíz shell simplemente explotando errores conocidos (en este caso el infame ShellShock).
kos

1
@mxdsp Por un lado, no quise decir sudoers usuario, solo usuario. Eso no es necesario, solo estaba pensando en muchas cosas al mismo tiempo.
kos

3
  1. Si he aprendido algo en los últimos años sobre seguridad, entonces una cosa: nada es imposible .

  2. Siempre que tenga acceso a una red, definitivamente. Cada servicio que se ejecuta en su sistema al que se puede acceder a través de la red es teóricamente vulnerable y, por lo tanto, una debilidad potencial.

Y por lo tanto, para un atacante con suficientes ideas es posible. Puede hacer que su sistema sea lo más seguro posible, pero nunca podrá llegar al 100% de seguridad.

Por lo tanto, es importante evaluar lo que es posible con un esfuerzo técnico justificable y lo que lo protege tan bien que usted mismo ya no puede trabajar.


Tengo un acceso a la red. ¿Puede ser más específico acerca de cuán probable podría ser ese tipo de ataque?
mxdsp

1
use autenticación de dos factores. Necesita editar PAM.D y así sucesivamente.
Aizuddin Zali

@Arronical el enlace es de este foro también y una muy buena guía también.
Aizuddin Zali

@Arronical lo he puesto en el comentario de la pregunta. Esta guía
Aizuddin Zali

Lo siento @AizuddinZali ¡No había actualizado la página!
Arronical

2

Sé que la contraseña de sudo protege mi computadora de ser hackeada localmente por alguien que tiene acceso físico a ella (editar: en realidad, no lo hace). Mi contraseña es lo suficientemente segura para ese propósito, pero sé que no es lo suficientemente segura si alguien puede forzarla de forma remota. ¿Alguien puede acceder a mi computadora en modo raíz usando mi contraseña de sudo sin acceso físico a la computadora, en una instalación de escritorio estándar de Ubuntu?

sudo password no es solo para protección local, su propósito es agregar una capa adicional de seguridad al uso de privilegios de root. Una buena discusión se puede encontrar aquí /superuser//a/771523/467316

Su contraseña puede no ser tan fuerte como cree. En este momento estoy descifrando el 20-40% de los hashes de Active Directory de mi cliente para aquellos que he visto antes, aquellos que tienen reglas de contraseña incorrecta se están descifrando en un 70%. Recomiendo contraseñas complejas de 16 caracteres. Las tarjetas gráficas oclHashcat y Radeon pueden causar mucho daño. Agregue todos los volcados de contraseña de cada violación en los últimos 5 años y tiende a obtener un buen diccionario para trabajar.

Si está utilizando SSH, haga algunos ajustes en sshd_config

sudo nano /etc/ssh/sshd_config

Los MUSTS salen de la puerta (el último para deshabilitar el servidor ftp si no lo está usando)

Protocol 2
X11Forwarding no
PermitEmptyPasswords no
MaxAuthTries 5
#Subsystem sftp /usr/lib/openssh/sftp-server

Guárdelo, reinicie ssh

sudo service ssh restart

Use el cifrado de clave pública Comience por crearse una clave en su máquina remota (usando puttygen o cualquier sabor que su sistema operativo tenga disponible). Copie la clave pública en su máquina Ubuntu bajo el usuario con el que desea iniciar sesión como archivo autorizado_keys (probablemente tendrá que crearla)

sudo nano /home/yourdumbusername/.ssh/authorized_keys

copie la clave pública en este formato

ssh-rsa 23r0jfjlawjf342rffjfa89pwfj8ewfew98pfrfj8428pfwa9fupfwfcajwfpawf8rfapfj9pf892jpfjpwafj8a where-ever-you-have-your-private-key-for-your-own-notes

guárdelo y configure su sshd_config para permitir el inicio de sesión con clave pública

sudo nano /etc/ssh/sshd_config

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      %h/.ssh/authorized_keys

guardar y reiniciar ssh

sudo service ssh restart

Intente SSHing a su host ubuntu desde su computadora privada con clave utilizando encriptación de clave pública. Si todo salió bien, regrese al host de ubuntu y desactive la autenticación de contraseña.

sudo nano /etc/ssh/sshd_config

PasswordAuthentication no

Guardar y reiniciar ssh

sudo service ssh restart

Intente sshing desde una computadora privada con clave nuevamente para confirmar.

¿Quieres agregar más? configure una cuenta no privilegiada, desactive PermitRootLogin no, reinicie ssh, agregue su clave pública a las nuevas claves autorizadas de la cuenta, inicie sesión como cuenta no privilegiada, su a su cuenta raíz o privilegiada cuando necesite rootear o privilegiar su camino a través de las cosas.


2

El propósito de sudo no está relacionado con la contraseña, sino que brinda a ciertos usuarios capacidades de root-ish mientras restringe a otros en una máquina sin requerir que presenten el inicio de sesión de root (contraseña / clave / token de seguridad / etc.). Por ejemplo, en mi trabajo, los trabajadores del día a día solo pueden iniciar / cerrar / instalar y actualizar sus estaciones (desde un repositorio vetado por la compañía) a través de sudo. No se les otorgan otras libertades de raíz, como eliminar / formatear dispositivos a propósito, agregar y eliminar usuarios, decidir qué módulos del núcleo deben incluirse en la lista negra o qué se ejecuta en crontab (etc., etc., etc.). Mientras que en su casa, su sudo permite el acceso completo a la máquina. En cuanto a la contraseña, en realidad es la contraseña de su cuenta de usuario lo que requiere sudo (la misma que usaría para iniciar sesión, si el inicio de sesión automático no está habilitado).

Mala sugerencia : si desea hacer root una cuenta regular en un sudo habilitado para unix (linux / apple osx) ejecute lo siguiente

sudo -s
passwd
Enter your unix password:

En este punto, la raíz tiene una contraseña normal, y puede simplemente cerrar sesión e iniciar sesión como raíz con la contraseña mencionada de la "forma tradicional".

En cuanto a la seguridad, si un programa (por ejemplo, servidor web, mysql, php daemon, sshd) se ejecuta como una cuenta elevada ... digamos root y tiene un exploit conocido, entonces los atacantes podrían no necesitar ninguna credencial de seguridad para obtener acceso. Pueden hacer uso de la vulnerabilidad del programa y generar un nuevo shell de este programa que se ejecute como root. Sin embargo, esto es bastante raro ya que los gerentes de distribución son conscientes de problemas similares y hacen un trabajo excepcional en la construcción de un entorno predeterminado bien pensado y generalmente seguro.

En el otro sistema operativo, una operación similar a sudo sería hacer clic derecho y ejecutar como Administrador del sistema (o el privilegio de UAC persistente).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.