Открыть сервис

Файл /etc/hosts.equiv

/etc/hosts.equiv — это системный файл в операционных системах семейства Unix (включая Linux и BSD), используемый для настройки доверительных отношений между хостами в сети. Он определяет список удалённых компьютеров и пользователей, которым разрешён доступ к локальной системе без ввода пароля, на основе протоколов r-команд (rlogin, rsh, rcp, rdist и других). Файл является частью механизма аутентификации на основе имени хоста и IP-адреса, широко применявшегося в ранних версиях Unix, но в современных системах считается устаревшим и небезопасным.

История и происхождение

Файл /etc/hosts.equiv появился в ранних версиях Unix, разработанных в Bell Labs (AT&T) в 1970-х годах. Изначально он был частью набора программ, известных как r-команды (от англ. remote commands), которые обеспечивали удалённый доступ и выполнение команд в локальной сети. Эти утилиты, включая rlogin (удалённый вход), rsh (удалённая оболочка) и rcp (удалённое копирование), были созданы для упрощения администрирования многопользовательских систем, где пользователи часто работали с нескольких терминалов.

В 1980-х годах, с распространением TCP/IP и сетей Ethernet, /etc/hosts.equiv стал стандартным механизмом аутентификации в Unix-системах, особенно в среде BSD (Berkeley Software Distribution). Однако уже в 1990-х годах его недостатки — в первую очередь уязвимость к подмене IP-адресов и DNS-спуфингу — привели к постепенному отказу от использования. В современных дистрибутивах Linux и BSD файл по умолчанию отсутствует или не используется, а его функциональность заменена более безопасными протоколами, такими как SSH (Secure Shell).

Синтаксис и структура

Файл /etc/hosts.equiv представляет собой текстовый файл, в котором каждая строка содержит запись, определяющую доверенный хост или пользователя. Синтаксис строки:

`` [+|-][хост_или_домен] [пользователь] ``

  • Хост — имя удалённого компьютера (полное доменное имя или короткое имя) или IP-адрес. Если указан знак + перед именем, это означает, что доверие распространяется на всех пользователей с данного хоста. Если указан знак -, доступ запрещается.
  • Пользователь — имя пользователя на удалённом хосте. Если поле опущено, доверие применяется ко всем пользователям с указанного хоста.

Примеры записей:

`` host1.example.com +@mygroup -host2.example.com host3.example.com user1 ``

  • Первая строка разрешает доступ всем пользователям с хоста host1.example.com.
  • Вторая строка разрешает доступ всем пользователям, входящим в группу mygroup (если используется механизм групп, например, через NIS).
  • Третья строка явно запрещает доступ с хоста host2.example.com.
  • Четвёртая строка разрешает доступ только пользователю user1 с хоста host3.example.com.

Комментарии в файле начинаются с символа #. Пустые строки игнорируются.

Механизм работы

Когда пользователь на удалённом хосте пытается войти в локальную систему с помощью r-команды (например, rlogin), серверный процесс (например, rlogind) проверяет /etc/hosts.equiv. Алгоритм проверки включает следующие шаги:

  1. Определение источника запроса: сервер получает IP-адрес и имя хоста клиента (обычно через обратный DNS-запрос).
  2. Поиск в файле: сервер последовательно просматривает строки /etc/hosts.equiv в поисках совпадения с именем хоста или IP-адресом.
  3. Проверка пользователя: если запись найдена, сервер проверяет, соответствует ли имя пользователя на удалённом хосте указанному в файле (если поле пользователя задано). Если поле не задано, доступ разрешается любому пользователю с этого хоста.
  4. Принятие решения: если найдено положительное совпадение (без знака -), доступ разрешается без запроса пароля. Если найдено отрицательное совпадение (со знаком -), доступ запрещается. Если совпадений нет, система запрашивает пароль.

Важно отметить, что /etc/hosts.equiv не проверяет подлинность пользователя — он полагается на то, что удалённый хост уже аутентифицировал пользователя. Это делает систему уязвимой для атак, если злоумышленник контролирует удалённый хост или подменяет его IP-адрес.

Отличия от файла .rhosts

Помимо /etc/hosts.equiv, существует пользовательский файл .rhosts, который хранится в домашнем каталоге каждого пользователя (например, /home/user/.rhosts). Он работает по тому же принципу, но позволяет пользователю индивидуально настраивать доверительные отношения для своей учётной записи. Файл .rhosts имеет приоритет над /etc/hosts.equiv: если в .rhosts указан хост, доступ разрешается, даже если в /etc/hosts.equiv этот хост запрещён.

Однако .rhosts также считается небезопасным, и его использование в современных системах не рекомендуется.

Безопасность и критика

Основные проблемы безопасности, связанные с /etc/hosts.equiv:

  • Отсутствие шифрования: r-команды передают данные, включая пароли, в открытом виде, что делает их уязвимыми для перехвата.
  • Подмена IP-адресов (IP spoofing): злоумышленник может подделать IP-адрес доверенного хоста, чтобы получить доступ без пароля.
  • DNS-спуфинг: если система использует обратный DNS-запрос для определения имени хоста, злоумышленник может подменить DNS-запись.
  • Отсутствие аутентификации пользователя: файл не проверяет, действительно ли пользователь на удалённом хосте является тем, за кого себя выдаёт.
  • Распространение доверия: если один доверенный хост скомпрометирован, злоумышленник может получить доступ ко всем системам, где этот хост указан в /etc/hosts.equiv.

Из-за этих недостатков /etc/hosts.equiv считается устаревшим и небезопасным. В современных операционных системах он либо отключён по умолчанию, либо полностью удалён. Например, в OpenBSD файл /etc/hosts.equiv не используется, а r-команды заменены на SSH. В Linux-дистрибутивах, таких как Ubuntu и Debian, пакеты rsh-server и rsh-client могут быть установлены, но их использование не рекомендуется.

Современное состояние

В современных Unix-подобных системах /etc/hosts.equiv практически не применяется. Его функциональность заменена:

  • SSH (Secure Shell): обеспечивает шифрование, аутентификацию по ключам и защиту от подмены.
  • Kerberos: протокол аутентификации, использующий билеты и криптографию.
  • PAM (Pluggable Authentication Modules): модульная система аутентификации, позволяющая гибко настраивать доступ.

Тем не менее, файл может встречаться в старых системах, встроенных устройствах или в учебных целях. В некоторых дистрибутивах Linux (например, в Red Hat Enterprise Linux) /etc/hosts.equiv по-прежнему поддерживается для обратной совместимости, но его использование требует явного включения в конфигурации.

Применение в историческом контексте

В 1980-х и 1990-х годах /etc/hosts.equiv активно использовался в академических и исследовательских сетях, где доверие между хостами было обычной практикой. Например, в локальных сетях университетов или лабораторий администраторы часто настраивали файл так, чтобы пользователи могли свободно перемещаться между рабочими станциями без повторного ввода пароля. Это упрощало совместную работу, но создавало риски безопасности.

С развитием интернета и ростом числа угроз такие практики были признаны неприемлемыми. В 1995 году компания CERT (Computer Emergency Response Team) выпустила предупреждение об уязвимостях r-команд, рекомендовав заменить их на SSH.

Интересные факты

  • Файл /etc/hosts.equiv является частью системы r-команд, которые были разработаны в 1980-х годах для BSD Unix. Эти команды стали предшественниками современных протоколов удалённого доступа.
  • В некоторых системах, таких как Solaris, файл /etc/hosts.equiv может быть заменён или дополнен файлом /etc/hosts.equiv.d/ для поддержки более сложных конфигураций.
  • Несмотря на устаревание, /etc/hosts.equiv иногда используется в изолированных сетях, где безопасность не является критичной, например, в тестовых средах.
  • В документации OpenBSD прямо указано, что файл /etc/hosts.equiv не должен использоваться, и его наличие может быть признаком неправильной конфигурации.

Источники

  • Stevens, W. Richard. TCP/IP Illustrated, Volume 1: The Protocols. Addison-Wesley, 1994.
  • Nemeth, Evi, et al. UNIX System Administration Handbook. 4th ed., Prentice Hall, 2010.
  • CERT Advisory CA-1995-14: Vulnerabilities in r-commands. Carnegie Mellon University, 1995.
  • man-страницы: hosts.equiv(5), rlogin(1), rsh(1), rcp(1) в различных дистрибутивах Unix.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →