Переименуйте / etc / passwd и / etc / shadow в целях безопасности [закрыто]

У меня есть сервер. {{ 1}} Мой сервер защищен, но давайте представим себе хорошего хакера, который вошел в него. Теперь он может заглянуть в / etc / passwd и / etc / shadow . Я хочу переименовать эти файлы / etc / passwd во что-то вроде / etc / xxanoda .

Я думал, что могу сделать ссылку, но для хакера будет легко сделать ls -l .

Можно переименовать эти файлы и при этом иметь работающую ОС без проблем с совместимостью, или это совершенно бесполезно? Просто ради знаний.

8
задан 7 February 2014 в 22:30

5 ответов

Стандарт иерархии файловых систем для unix-подобных систем включает в себя /etc/passwd в фиксированном месте, и поэтому инструменты обычно жестко кодируются, чтобы искать его. Хотя теоретически вы можете перекомпилировать все соответствующие утилиты для поиска в новом месте, любой злоумышленник всегда может просто искать строки в этих двоичных файлах, чтобы найти новый файл, или использовать регулярные выражения для поиска файлов с содержимым, подобным passwd. .

Файл shadow должен быть доступен для чтения только для root (и, возможно, для группы под названием shadow). Если злоумышленнику удалось получить root-доступ к вашей системе, он имеет полный контроль, и то, могут ли они читать ваши файлы passwd / shadow, на данном этапе не имеет значения.

Вероятно, есть несколько ситуаций, когда наличие файлов, находящихся не в ожидаемых местах, может помочь, например, если у вас плохо настроенный веб-сервер, который позволяет кому-то запрашивать http://myserver/../../etc/passwd, но в целом такого рода косвенное обращение потребует много работы для минимальной выгоды безопасности.

0
ответ дан 7 February 2014 в 22:30

Лучшее, что можно было бы назвать «совершенно бесполезным», как вы выразились. (Это не создает дополнительного препятствия для злоумышленника)

/etc/passwd содержит имена учетных записей, но любой, кто имеет доступ к системе через оболочку, сможет их найти.

/etc/shadow содержит конфиденциальную информацию (хэши паролей), но она доступна для чтения только для пользователя root. Если злоумышленнику удалось получить права суперпользователя - как вы пишете катастрофа ?

0
ответ дан 7 February 2014 в 22:30

В современных Unices (и Unix-подобных, включая Ubuntu), /etc/passwd не содержит никаких секретов. Переименовать его будет гораздо сложнее, чем стоит, учитывая, сколько утилит придется перестроить, чтобы найти его на новом месте.

/etc/shadow это другой вопрос, так как в этом файле есть секреты, но переименование не поможет. Он доступен для чтения только пользователю root, поэтому даже если хакер войдет в систему как другой пользователь, этого недостаточно для доступа к файлу. Вот почему пароли были удалены из /etc/passwd в первую очередь: каждый должен иметь возможность читать /etc/passwd, но только root должен иметь возможность получить действительные пароли, поэтому пароли были перемещены в файл, который только root мог читать.

Если хакер действительно получит root, то переименование не спасет вас. Простой рекурсив grep может дать хакеру список файлов в формате /etc/shadow, и тогда хакеру нужно только просмотреть их, чтобы найти нужные ему данные. Вы задержали его максимум на несколько часов, а возможно, и меньше: опять же, не стоит того времени, которое потребуется для изменения и перекомпиляции всех утилит, которые зависят от местоположения /etc/shadow.

0
ответ дан 7 February 2014 в 22:30

Вы не можете просто переименовать эти файлы. Многие процессы и программы будут искать их, так как это стандарт в системах Linux. Что вы можете сделать, так это правильно защитить ваш сервер.

0
ответ дан 7 February 2014 в 22:30

Хотя, вероятно, бесполезно переименовывать файлы /etc/passwd и /etc/shadow, если вам нужна дополнительная безопасность, вы можете посмотреть на PAM (подключаемые модули аутентификации) и NSS (Name Service Switch). Как здесь.

PAM может использоваться для добавления модулей аутентификации, которые, вместо того, чтобы читать их аутентификационные данные из стандартных файлов, читают их из другого источника, например из ldap или базы данных. Использование этого означало бы, что /etc/shadow можно почти полностью исключить.

NSS дополняет PAM, делая некоторые разрешения имен (например, к каким группам принадлежит этот пользователь) независимо от стандартных файлов (/etc/passwd, /etc/groups). Его использование будет означать, что ваш файл passwd потенциально будет содержать только запасную опцию для root и ничего более. Использование ключей SSH для проверки входа в систему root также устранит необходимость иметь пароль root внутри теневого файла (хотя это может быть желательно, если соединение SSH разрывается).

В качестве альтернативы, если вы не хотите аутентифицировать своих пользователей через отдельную базу данных или хост ldap, вы также можете создать свои собственные модули PAM и NSS, которые читают их данные из нестандартного файла, хотя я бы не рекомендовал этот вариант.

Если вы хотите попробовать их использовать, никогда не забывайте оставлять какой-нибудь запасной вариант на известном работающем слое аутентификации, в противном случае вы можете заблокировать себя вне системы, даже с помощью root.

Обратите внимание, что не все приложения поддерживают PAM (однако, многие из них поддерживают). Однако NSS можно использовать для реализации аутентификации для приложений, которые не поддерживают PAM, и некоторые сайты, о которых я читал, действительно предлагают такой подход. Это, однако, означает, что модуль NSS предоставит (потенциально) хешированный пароль любому, кто может получить доступ к слою аутентификации NSS, чего почти всегда нужно избегать (в основном это то же самое, что предоставить некорневому доступу на чтение к теневому файлу). )! Поэтому, если вы собираетесь использовать этот подход, всегда убедитесь, что NSS используется только для предоставления пользователю базовых данных (например, содержимого /etc/passwd), а PAM используется в качестве уровня аутентификации.

0
ответ дан 7 February 2014 в 22:30

Другие вопросы по тегам:

Похожие вопросы: