Un usuario que tiene un shell válido y no tiene contraseña aún puede iniciar sesión mediante métodos no basados en contraseña, siendo el más común una clave ssh. Se necesita un shell válido para ejecutar trabajos cron. También es necesario un shell válido para su bin -c 'wibble'
para trabajar (al menos en Linux, su bin -s /bin/sh -c 'wibble'
también funcionará).
En el caso de bin
, la mayoría de los sistemas nunca ejecutan un comando como bin
en funcionamiento normal, por lo que establecer el shell en /bin/false
estaría bien.
No hay riesgo de ningún ataque directo que permita bin
para iniciar sesión a través de SSH, porque eso requeriría crear /bin/.ssh/authorized_keys
como usuario bin
o como raíz. En otras palabras, la única forma de ingresar es estar adentro. Sin embargo, tener un shell válido aumenta el riesgo de una configuración incorrecta. También puede permitir algunos ataques remotos con servicios distintos a SSH; por ejemplo, un usuario informa que un atacante podría establecer una contraseña para daemon
de forma remota a través de Samba, luego use esa contraseña para iniciar sesión a través de SSH.
Puede tapar el agujero SSH enumerando los nombres de los usuarios del sistema en un DenyUsers
directiva en /etc/ssh/sshd_config
(desafortunadamente, no puede usar un rango numérico). O, por el contrario, puedes poner un AllowGroups
directiva y solo permitir los grupos que contienen usuarios físicos (por ejemplo, users
si otorga a todos sus usuarios físicos esa membresía de grupo).
Hay errores archivados sobre este problema en Debian (#274229, #330882, #581899), actualmente abiertos y clasificados como "lista de deseos". Tiendo a estar de acuerdo en que estos son errores y los usuarios del sistema deberían tener /bin/false
como su caparazón a menos que parezca necesario hacer lo contrario.
No tienes que preocuparte por ellos como usuarios. Son "usuarios" en el sentido de grupos de seguridad, no usuarios en el sentido de "iniciar sesión y usar" personas. Si miras en "/etc/shadow", verás que todos estos "usuarios" no tienen contraseñas (ya sea "x" o "!" en lugar de un hash largo con sal). Esto significa que estos usuarios no pueden iniciar sesión, pase lo que pase.
Dicho esto, no sé si es una buena idea cambiar "/bin/sh" a "/bin/false" para todos estos usuarios. Debido a que los programas se ejecutan en estos grupos, es posible que no les permita ejecutar los comandos que necesitan. Los dejaría como "/bin/sh".
No es necesario que se preocupe por estos usuarios. Solo preocúpate por los usuarios que creas (y los que tienen hash en "/etc/shadow")