Файл /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. Алгоритм проверки включает следующие шаги:
- Определение источника запроса: сервер получает IP-адрес и имя хоста клиента (обычно через обратный DNS-запрос).
- Поиск в файле: сервер последовательно просматривает строки
/etc/hosts.equivв поисках совпадения с именем хоста или IP-адресом. - Проверка пользователя: если запись найдена, сервер проверяет, соответствует ли имя пользователя на удалённом хосте указанному в файле (если поле пользователя задано). Если поле не задано, доступ разрешается любому пользователю с этого хоста.
- Принятие решения: если найдено положительное совпадение (без знака
-), доступ разрешается без запроса пароля. Если найдено отрицательное совпадение (со знаком-), доступ запрещается. Если совпадений нет, система запрашивает пароль.
Важно отметить, что /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 →