Durante una auditoría de /var/log/auth.log
uno de mis servidores web públicos, encontré esto:
Jan 10 03:38:11 Bucksnort sshd[3571]: pam_unix(sshd:auth): authentication failure;
logname= uid=0 euid=0 tty=ssh ruser= rhost=61.19.255.53 user=bin
Jan 10 03:38:13 Bucksnort sshd[3571]: Failed password for bin from 61.19.255.53
port 50647 ssh2
A primera vista, esto parece un ssh
spam de inicio de sesión típico de hackers aleatorios; Sin embargo, cuando miré más de cerca, noté algo más. La mayoría de las /var/log/auth.log
entradas fallidas dicen invalid user
en ellas, como esta:
Jan 9 10:45:23 Bucksnort sshd[3006]: Failed password for invalid user sales
from 123.212.43.5 port 10552 ssh2
Lo inquietante de ese mensaje de inicio de sesión fallido de bin
es que es un usuario válido en el /etc/passwd
que tiene una cáscara incluso entrada:
[mpenning@Bucksnort ~]$ grep ^bin /etc/passwd
bin:x:2:2:bin:/bin:/bin/sh
Pensé que había cubierto los todos los nombres de usuario predeterminados que podrían conectarse de forma remota cuando he deshabilitado PermitRootLogin
en /etc/ssh/sshd_config
; Descubrir esta entrada abrió nuevas posibilidades en mi mente paranoica. Si los servicios se ejecutaron de alguna manera bin
, entonces es remotamente posible que alguien pueda insertar una clave ssh en el bin
directorio del usuario desde un servicio en ejecución en la caja, por lo que me gustaría deshabilitar completamente el inicio de sesión para el bin
usuario, si es posible.
Preguntas
Este servidor es remoto y costoso de arreglar (es decir, pagaré por las manos remotas para conectar un KVM, más el alquiler de KVM). Estoy tratando de descubrir qué podría romper si cambio la
/etc/passwd
entrada parabin
que se vea así:bin:x:2:2:bin:/bin:/bin/false
Ejecuté los siguientes comandos tratando de averiguar qué
bin
se necesita para ... Sin embargo, estos comandos no tienen archivos y no pude encontrar ningún proceso de propiedadbin
. ¿Qué hace elbin
usuario de todos modos?$ sudo find / -group bin
$ sudo find / -user bin
¿Hay otros usuarios que deberían configurar sus shells de inicio de sesión
/bin/false
? Para su información, ya he tiene/bin/false
enwww-data
.¿Estoy siendo demasiado paranoico?
Estoy ejecutando Debian, si eso importa.
Respuestas:
Un usuario que tiene un shell válido y no tiene contraseña aún puede iniciar sesión por métodos no basados en contraseña, siendo el más común una clave ssh. Es necesario un shell válido para ejecutar trabajos cron. También es necesario un shell válido para
su bin -c 'wibble'
funcionar (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 comobin
en la operación normal, por lo que establecer el shell en/bin/false
estaría bien.No hay riesgo de que un ataque directo permita
bin
iniciar sesión a través de SSH, ya que eso requeriría crearse/bin/.ssh/authorized_keys
como usuariobin
o como root. En otras palabras, la única forma de entrar es estar dentro. Sin embargo, tener un shell válido aumenta el riesgo de una configuración incorrecta. También puede permitir algunos ataques remotos con servicios que no sean SSH; por ejemplo, un usuario informa que un atacante podría establecer una contraseña dedaemon
forma remota a través de Samba, y luego usar esa contraseña para iniciar sesión a través de SSH.Puede conectar el agujero SSH enumerando los nombres de los usuarios del sistema en una
DenyUsers
directiva/etc/ssh/sshd_config
(desafortunadamente, no puede usar un rango numérico). O, por el contrario, puede poner unaAllowGroups
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 se trata de errores y que los usuarios del sistema deberían tener
/bin/false
como caparazón a menos que parezca necesario hacerlo de otra manera.fuente
No tiene que preocuparse por aquellos como usuarios. Son "usuarios" en el sentido de grupos de seguridad, no usuarios en el sentido de "iniciar sesión y usar" personas. Si busca en "/ etc / shadow", verá que todos estos "usuarios" no tienen contraseñas (ya sea "x" o "!" En lugar de un hash salado largo). 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. Como 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 hashes en "/ etc / shadow")
fuente
/etc/shadow
, pero si un servicio se ejecuta como usuario, teóricamente es posible que alguien inserte unassh
clave de inicio de sesión, ¿no?rpcd
puertos abiertos no serían un problema; sin embargo, personalmente presencié los resultados de un exploit remoto en una vieja máquina Solaris donde el atacante obtuvo acceso a través de unrpc
exploit en la caja.rhosts
fue habilitado y escribible por eserpc
usuario (no puedo recordar más detalles ... fue hace años) ... Del mismo modo, si pueden hacer un~/.ssh/authorized_keys
para un usuario que pueda iniciar sesión, entonces esto todavía parece un riesgo (incluso sin un contraseña en/etc/shadow
)Creo que esto no es un problema, ya que para configurar una clave pública SSH en el
bin
directorio de inicio (/bin
), el atacante tendría que tener acceso de root al sistema de archivos, lo que significa que de todos modos está jodido.Si lo desea, puede deshabilitar todos los métodos de autenticación para el
bin
usuario en la configuración de sshd usando elMatchUser
bloque.Dicho esto, parece que el usuario bin no se utiliza en los sistemas modernos derivados de Debian y es simplemente un guiño a la tradición o está allí para cumplir con algunos estándares.
fuente