NOPASSWD
no tiene un impacto importante en la seguridad. Su efecto más obvio es brindar protección cuando el usuario deja su estación de trabajo desatendida:un atacante con acceso físico a su estación de trabajo puede extraer datos, realizar acciones y plantar malware con los permisos del usuario, pero no elevar su acceso a la raíz. Esta protección tiene un uso limitado porque el atacante puede plantar un programa de tipo registrador de pulsaciones de teclas que registre la contraseña del usuario la próxima vez que la ingrese en un indicador de sudo o en un protector de pantalla.
No obstante, solicitar la contraseña eleva el listón para el atacante. En muchos casos, la protección contra atacantes poco sofisticados es útil, particularmente en escenarios de estaciones de trabajo desatendidas donde el ataque es a menudo una oportunidad y el atacante puede no saber cómo encontrar y configurar malware discreto en poco tiempo. Además, es más difícil ocultar el malware cuando no tiene permisos de raíz; no puede ocultarse de la raíz si no tiene la raíz.
Hay algunos escenarios realistas en los que la falta de una contraseña protege incluso contra atacantes sofisticados. Por ejemplo, una computadora portátil robada:la computadora portátil del usuario es robada, completa con claves SSH privadas; o el ladrón logra adivinar la contraseña del archivo de claves (quizás por fuerza bruta), o obtiene acceso a ellos desde un volcado de memoria de un agente de claves. Si se detecta el robo, esta es una señal para investigar la actividad reciente en la cuenta de ese usuario, y esto significa que se debe detectar un malware plantado. Si el atacante solo tenía acceso a nivel de usuario, todo lo que hizo dejará rastros en los registros; si el atacante obtuvo la contraseña del usuario y ejecutó sudo, ahora todos los registros están comprometidos.
No sé si las desventajas de NOPASSWD
equilibre las ventajas para su caso de uso. Necesita equilibrar eso con todos los demás factores de su situación. Por ejemplo, parece que usted permite pero no obliga a tener contraseñas diferentes. ¿Puede usar una base de datos de cuentas centralizada? ¿Cuánta contención necesita entre sus sistemas? ¿Está considerando alternativas a Ansible que admitirían diferentes contraseñas de sudo? ¿Ha considerado otros mecanismos de autenticación?
Hay dos casos específicos por los que no desea sudo sin contraseña:
- Este es un mecanismo de defensa contra usuarios maliciosos que obtienen acceso a una cuenta administrativa. Esto puede ser por explotación o debido a que un administrador deja su estación de trabajo desatendida sin bloquear su sesión.
- Tener que volver a emitir la contraseña cuando se usa sudo les da a los usuarios impulsivos tiempo para pensar dos veces antes de realizar la acción.
Acerca de la automatización:
Estoy de acuerdo en que puede hacer esto sin contraseña, pero al no requerir la contraseña de sudo, en realidad está dando TODO el acceso a su herramienta de automatización. Ahora piense qué es lo que realmente se requiere que haga la herramienta. ¿Realmente necesita todos estos accesos? Probablemente no.
Sudo viene con una buena función que le permite configurar comandos específicos con el NOPASSWD
bandera dentro del archivo sudoers:
username myhost = (root) NOPASSWD: /sbin/shutdown
username myhost = (root) NOPASSWD: /sbin/reboot
Una cosa que no parece que alguien haya señalado por alguna razón (corríjame si me equivoco) es que permite que cualquier programa que ejecute se eleve al acceso de root sin que usted lo sepa. Normalmente, si accidentalmente ejecuta un programa o script malicioso como un usuario no root sin sudo, entonces, aunque aún puede causar mucho daño, aún (salvo que se produzca un exploit por separado) no tendrá privilegios de root. Así que al menos no tendrás que preocuparte por un rootkit ni nada por el estilo. Pero con el modo NOPASSWD, no tienes esa protección. Cualquier programa que se ejecute bajo su usuario podrá escalar a root volviéndose a invocar con sudo. El malware aún debe programarse específicamente para hacer esto, y de lo contrario no tendrá acceso de raíz, pero ¿qué pasa con el código malicioso que hace eso?