¿Es posible "ocultar" una cuenta de /etc/passwd?

¿Es posible "ocultar" una cuenta de /etc/passwd?

Un sistema Linux típico no sólo tiene cuentas para los usuarios reales del sistema, sino también varias cuentas del sistema.

¿Existe algún archivo como /etc/passwdpara demonios u otros recursos de medios donde se pueda definir una cuenta?

Escuché que es posible camuflar una cuenta como una cuenta de servicio. Estoy tratando de encontrar cuentas como estas en una computadora.

Respuesta1

Los usuarios de demonios y los usuarios de carne y hueso se enumeran en los mismos archivos. El “archivo como /etc/passwdpara demonios” es /etc/passwd.

No existe una definición formal entre usuarios humanos y usuarios del sistema. Al kernel no le importa (aparte de otorgar muchos privilegios al usuario con UID 0). A la mayoría de los comandos de administración tampoco les importa. Algunas diferencias típicas son:

  • Un usuario humano tiene un nombre real como "John Doe", mientras que un usuario del sistema tiene un nombre descriptivo como "Nasal daemon" o ninguno.
  • Un usuario humano tiene un shell de inicio de sesión real (por ejemplo, /bin/sho /bin/basho /bin/csh. Algunos usuarios del sistema tienen un shell (casi siempre /bin/sh), otros no, dependiendo de cómo deben usarse (por ejemplo, su foorequiere footener un shell).
  • Un usuario humano a menudo tiene una contraseña, pero ese no es siempre el caso; por ejemplo, un usuario remoto podría tener solo una clave SSH. Tenga en cuenta que en los Unices modernos, la contraseña no está /etc/passwdsino en algún otro archivo como /etc/shadow.
  • El directorio de inicio de un usuario humano generalmente se encuentra en /home(o en alguna ubicación específica del sitio), mientras que el directorio de inicio de un usuario del sistema generalmente no se encuentra en /homey puede que no exista (pero hay excepciones).
  • La mayoría de los sitios designan un rango de ID de usuario para los usuarios del sistema y un rango disjunto para los usuarios humanos. Lo habitual es reservar 100–65533 o 500–65533 o 1000–65533, y la mayoría de las distribuciones están configuradas para comenzar a asignar ID de usuario reales a partir de 500 o 1000.

En los sitios donde las cuentas se comparten entre varias máquinas, normalmente hay un servidor central que contiene listas de usuarios, accesibles a través deEstadounidenseoLDAP. la passwdentrada en/etc/nsswitch.confespecifica dónde encontrar información del usuario. Es común tener usuarios del sistema en la /etc/passwdbase de datos local y usuarios reales de la base de datos de toda la red, pero a veces hay usuarios del sistema en la base de datos de toda la red (para aplicar UID consistentes, lo que facilita la replicación de datos y servidores), y a veces hay usuarios humanos en el archivo local (para permitirles iniciar sesión incluso cuando la red está bloqueada).

Una cuenta accesible para humanos disfrazada de usuario del sistema normalmente no tendría un nombre real, pero sí un shell de inicio de sesión y una contraseña establecida o una clave SSH, además de tener una ID de usuario en el rango del sistema. De hecho, sería un mejor disfraz utilizar una cuenta real del sistema cuya eliminación provocaría que algún servicio dejara de funcionar. Pero no se pueden tener reglas estrictas para detectar ataques potenciales: por definición, los atacantes no siguen reglas.

Respuesta2

No hay ningún motivo para tener un archivo de definición de usuario independiente. Los usuarios del sistema y los usuarios reales no están separados técnicamente sino organizativamente: por el rango del que se toman sus UID. echa un vistazo al archivo /etc/login.defs. Mi openSUSE tiene estas entradas:

SYSTEM_UID_MIN            100
SYSTEM_UID_MAX            499
UID_MIN                  1000
UID_MAX                 60000

Las herramientas de distribución utilizan estos valores para diferenciar los dos grupos. Pero si creó una cuenta de usuario con UID 300, probablemente no se mostrará en el menú de inicio de sesión, pero podrá usar esa cuenta como cualquier otra.

Respuesta3

Si realmente desea dividir las cuentas de usuario y del sistema (al leer algunos de los comentarios en otras publicaciones, parece que tiene curiosidad sobre esto), puede dejar a todos los usuarios del sistema en la filesbase de datos (es decir, /etc/passwd) y colocar a los usuarios de personas. en una segunda base de datos (algo así como si estuvieras haciendo ldap).

Para esto, puede utilizar el módulo Berkeley DB NSS (disponible en muchos sistemas a través de un paquete glibc adicional llamado nss_db). No estoy seguro de qué sistema operativo estás usando, pero este sitio ofrece información sobre Linux:http://www.linuxfromscratch.org/hints/downloads/files/nss_db.txt

Esto no es para los débiles de corazón ya que la documentación no es exactamente abundante, pero puede ser divertido jugar con él si buscas aprender más sobre cómo funciona este tipo de cosas. La sugerencia de (@Hauke ​​Laging sobre implementar la tuya propia es genial también).

Respuesta4

La mayoría de los demonios se ejecutan como root, algunos (por razones de seguridad, para limitar su capacidad de causar daño) se ejecutan como sus propios usuarios. Están listados en el /etc/passwdarchivo. La mayoría de las distribuciones limitan el UID del "usuario del sistema" a algún valor, como 500 o 1000, lo que da una pista. Algunos demonios tienen entradas GECOS (descripción de usuario) que dicen "daemon", otros tienen caparazones extraños. Pero también existen usuarios fantasmas para NFS y otros usos.

información relacionada