Можно ли «скрыть» учетную запись из /etc/passwd?

Можно ли «скрыть» учетную запись из /etc/passwd?

Типичная система Linux имеет не только учетные записи для фактических пользователей системы, но и различные системные учетные записи.

Есть ли какой-либо файл, например /etc/passwd, для демонов или других ресурсов, где можно определить учетную запись?

Я слышал, что можно замаскировать учетную запись под учетную запись службы, я пытаюсь найти такие учетные записи в компьютере.

решение1

Пользователи демонов и пользователи плоти и крови перечислены в одних и тех же файлах. «Файл, как /etc/passwdдля демонов» — /etc/passwd.

Не существует формального определения пользователей-людей и пользователей-систем. Ядро не заботится (кроме предоставления множества привилегий пользователю с UID 0). Большинству команд администрирования тоже все равно. Вот некоторые типичные различия:

  • У пользователя-человека есть настоящее имя, например «Джон Доу», тогда как у системного пользователя есть описательное имя, например «Nasal daemon» или его вообще нет.
  • У пользователя-человека есть настоящая оболочка входа (например, /bin/shили /bin/bash) /bin/csh. У некоторых пользователей системы есть оболочка (почти всегда /bin/sh), у других ее нет, в зависимости от того, как они будут использоваться (например, su fooтребуется fooиметь оболочку).
  • У пользователя-человека часто есть пароль — но это не всегда так, например, у пользователя только удаленного доступа может быть только ключ SSH. Обратите внимание, что на современных unice-системах пароль находится не в файле, /etc/passwdа в каком-то другом файле, например /etc/shadow.
  • Домашний каталог пользователя-человека обычно находится в папке /home(или в каком-либо специфическом для сайта месте), тогда как домашний каталог пользователя системы обычно не находится в папке /homeи может не существовать (но есть исключения).
  • Большинство сайтов назначают диапазон идентификаторов пользователей для системных пользователей и непересекающийся диапазон для пользователей-людей. Резервирование 100–65533 или 500–65533 или 1000–65533 является типичным, и большинство дистрибутивов настроены на начало выделения реальных идентификаторов пользователей с 500 или 1000.

На сайтах, где учетные записи используются совместно несколькими машинами, обычно имеется центральный сервер, содержащий списки пользователей, доступные черезНИСилиLDAP. passwdЗапись в/etc/nsswitch.confуказывает, где найти информацию о пользователе. Обычно системные пользователи находятся в локальной /etc/passwdбазе данных, а реальные пользователи — в сетевой базе данных, но иногда системные пользователи находятся в сетевой базе данных (чтобы обеспечить согласованность UID, что облегчает репликацию сервера и данных), а иногда в локальном файле есть пользователи-люди (чтобы позволить им входить в систему, даже если сеть перегружена).

Доступная человеку учетная запись, замаскированная под пользователя системы, обычно не имеет настоящего имени, но имеет оболочку входа и либо набор паролей, либо ключ SSH, при этом имея идентификатор пользователя в системном диапазоне. На самом деле, лучшей маскировкой было бы использование реальной системной учетной записи, удаление которой приведет к остановке работы некоторых служб. Но у вас не может быть никаких жестких правил для обнаружения потенциальных атак: по определению злоумышленники не следуют правилам.

решение2

Нет смысла иметь отдельный файл определения пользователя. Системные пользователи и реальные пользователи не разделены технически, а организационно: по диапазону, из которого берутся их UID. Посмотрите на файл /etc/login.defs. В моем openSUSE есть следующие записи:

SYSTEM_UID_MIN            100
SYSTEM_UID_MAX            499
UID_MIN                  1000
UID_MAX                 60000

Инструменты дистрибутива используют эти значения, чтобы различать две группы. Но если вы создали учетную запись пользователя с UID 300, то она, вероятно, не будет отображаться в меню входа, но вы сможете использовать эту учетную запись как любую другую.

решение3

Если вы действительно хотите разделить учетные записи пользователей и системы (читая некоторые комментарии к другим постам, похоже, что вас это интересует), вы можете оставить всех системных пользователей в базе filesданных (например, /etc/passwd) и поместить пользователей people во вторую базу данных (что-то вроде ldap).

Для этого вы можете использовать модуль Berkeley DB NSS (доступный во многих системах через дополнительный пакет glibc под названием nss_db). Я не уверен, какую ОС вы используете, но этот сайт предлагает некоторую информацию для Linux:http://www.linuxfromscratch.org/hints/downloads/files/nss_db.txt

Это не для слабонервных, поскольку документация не очень обширна, но может быть интересно поэкспериментировать, если вы хотите узнать больше о том, как работают подобные вещи (предложение @Hauke ​​Laging о реализации своей собственной идеи тоже замечательное).

решение4

Большинство демонов запускаются как root, некоторые (из соображений безопасности, чтобы ограничить их способность наносить вред) запускаются как собственные пользователи. Они перечислены в файле /etc/passwd. Большинство дистрибутивов ограничивают UID "системного пользователя" некоторым значением, например, 500 или 1000, так что это дает подсказку. У некоторых демонов есть записи GECOS (описание пользователя), говорящие "daemon", у других - странные оболочки. Но есть также фантомные пользователи для NFS и других целей.

Связанный контент