En mi /etc/passwd
archivo, puedo ver que el www-data
usuario utilizado por Apache, así como todo tipo de usuarios del sistema, tiene /usr/sbin/nologin
o /bin/false
como su shell de inicio de sesión. Por ejemplo, aquí hay una selección de líneas:
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin games:x:5:60:games:/usr/games:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin syslog:x:101:104::/home/syslog:/bin/false whoopsie:x:109:116::/nonexistent:/bin/false mark:x:1000:1000:mark,,,:/home/mark:/bin/bash
En consecuencia, si trato de cambiar a alguno de estos usuarios (lo que a veces me gustaría hacer para verificar mi comprensión de sus permisos, y para lo cual probablemente haya otras razones razonables al menos a medias), fallo:
mark@lunchbox:~$ sudo su www-data
This account is currently not available.
mark@lunchbox:~$ sudo su syslog
mark@lunchbox:~$
Por supuesto, no es un gran inconveniente, porque todavía puedo lanzar un shell para ellos a través de un método como este:
mark@lunchbox:~$ sudo -u www-data /bin/bash
www-data@lunchbox:~$
Pero eso me hace preguntar qué propósito se sirve al negar estos usuarios un shell de entrada. Buscando una explicación en Internet, muchas personas afirman que esto tiene algo que ver con la seguridad, y todo el mundo parece estar de acuerdo en que sería de alguna manera una mala idea cambiar los shells de inicio de sesión de estos usuarios. Aquí hay una colección de citas:
Establecer el shell del usuario de Apache en algo no interactivo es generalmente una buena práctica de seguridad (realmente todos los usuarios de servicios que no tienen que iniciar sesión de forma interactiva deben tener su shell configurado en algo que no sea interactivo).
- https://serverfault.com/a/559315/147556
el shell para el usuario www-data está configurado en / usr / sbin / nologin, y está configurado por una muy buena razón.
- https://askubuntu.com/a/486661/119754
[las cuentas del sistema] pueden ser agujeros de seguridad , especialmente si tienen un shell habilitado:
Malo
bin:x:1:1:bin:/bin:/bin/sh
Bueno
bin:x:1:1:bin:/bin:/sbin/nologin
- https://unix.stackexchange.com/a/78996/29001
Por razones de seguridad, creé una cuenta de usuario sin shell de inicio de sesión para ejecutar el servidor Tomcat:
# groupadd tomcat # useradd -g tomcat -s /usr/sbin/nologin -m -d /home/tomcat tomcat
- http://www.puschitz.com/InstallingTomcat.html
Si bien estas publicaciones están en acuerdo unánime de que no darles a los usuarios del sistema verdaderos shells de inicio de sesión es bueno para la seguridad, ninguno de ellos justifica esta afirmación, y no puedo encontrar una explicación en ningún lado.
¿De qué ataque estamos tratando de protegernos al no darles a estos usuarios shells de inicio de sesión reales?