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

Файл .rhosts

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

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

Механизм r-команд и файл .rhosts были разработаны в 1980-х годах в рамках операционной системы BSD Unix. Основной целью было упрощение администрирования в локальных сетях, где требовалось частое взаимодействие между несколькими машинами. Вместо ввода пароля при каждом подключении администраторы могли указать список доверенных хостов и пользователей, которым разрешался доступ без аутентификации. Это было удобно для автоматизации задач и работы в кластерных средах, но не учитывало угроз безопасности, связанных с перехватом сетевого трафика или компрометацией одного из доверенных узлов.

В 1990-х годах, с ростом интернета и распространением атак на протоколы r-команд (например, подмена IP-адреса), использование .rhosts стало считаться опасным. Начиная с версии OpenSSH 3.0 (2001 год), появилась поддержка более безопасного аналога — файла ~/.shosts, который работает аналогично, но только с SSH. Во многих современных дистрибутивах Linux и BSD поддержка r-команд по умолчанию отключена или полностью удалена.

Расположение и синтаксис

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

  • Имя хоста (hostname) — полное доменное имя (FQDN) или IP-адрес доверенной машины. Допускается использование символа + для обозначения «любой хост».
  • Имя пользователя (username) — учётная запись на удалённом хосте, которой разрешён доступ. Если поле опущено, то разрешается доступ только от пользователя с тем же именем, что и на локальной машине. Символ + означает «любой пользователь».

Пример содержимого файла .rhosts: `` server.example.com admin 192.168.1.100 + + user ` Первая строка разрешает доступ пользователю admin с хоста server.example.com. Вторая — любому пользователю с IP-адреса 192.168.1.100. Третья — пользователю user` с любого хоста.

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

При попытке удалённого входа с помощью rlogin или rsh на сервере выполняются следующие шаги:

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

Важно, что проверка IP-адреса основана на обратном DNS-запросе, что делает систему уязвимой для атак с подменой DNS или IP-адреса (IP spoofing).

Уязвимости и критика

Основные недостатки использования файла .rhosts связаны с отсутствием шифрования и аутентификации на уровне сети:

  • Перехват трафика — все данные, включая пароли (если они вводятся вручную) и содержимое сессии, передаются в открытом виде.
  • Подмена IP-адреса — злоумышленник, подделавший IP-адрес доверенного хоста, может получить доступ без пароля.
  • Компрометация одного хоста — если злоумышленник получает root-доступ на одном из доверенных узлов, он может подставить его IP и войти на все машины, где этот хост указан в .rhosts.
  • Неверная конфигурация — использование символа + для хоста или пользователя делает систему открытой для всех, что часто приводило к случайным утечкам.

Из-за этих рисков большинство организаций и операционных систем по умолчанию отключают поддержку r-команд и .rhosts. В современных системах (например, RHEL 8+, Ubuntu 20.04+) пакеты rsh-client и rsh-server либо отсутствуют, либо требуют явного включения через PAM-модули.

Современные альтернативы

Для безопасной аутентификации без пароля в современных Unix-системах используются:

  • SSH-ключи — пара из открытого и закрытого ключей, хранящаяся в файлах ~/.ssh/id_rsa.pub и ~/.ssh/authorized_keys. Аутентификация происходит по криптографическому протоколу, исключающему перехват.
  • Файл .shosts — аналог .rhosts для SSH, работающий через файл ~/.shosts или /etc/ssh/shosts.equiv. Поддерживается в OpenSSH, но требует явной настройки и также не рекомендуется из-за рисков, связанных с доверием к хостам.
  • Kerberos — протокол аутентификации, использующий билеты и центр распределения ключей (KDC), обеспечивающий взаимную проверку подлинности.

В подавляющем большинстве современных систем файл .rhosts считается устаревшим и не используется в продуктивной среде.

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

  • В некоторых старых версиях Unix (например, SunOS 4.x) файл .rhosts мог быть прочитан любым пользователем, что позволяло злоумышленнику узнать, какие хосты и пользователи считаются доверенными.
  • Символ + в поле хоста или пользователя интерпретируется как «любой», но в некоторых реализациях (например, в IBM AIX) он может означать «любой, кроме localhost», что создавало путаницу.
  • В 1998 году был выпущен патч для OpenSSH, добавляющий поддержку .rhosts через механизм RhostsRSAAuthentication, который сочетал проверку .rhosts с RSA-аутентификацией, но эта функция также была признана небезопасной и удалена в более поздних версиях.

Источники

  • Stevens, W. Richard. «UNIX Network Programming, Volume 1: Networking APIs — Sockets and XTI». Prentice Hall, 1998.
  • Garfinkel, Simson; Spafford, Gene. «Practical UNIX and Internet Security». O'Reilly Media, 2003.
  • Документация OpenSSH: man sshd_config, раздел «HostbasedAuthentication».
  • RFC 1282 — «BSD Rlogin» (1991).
  • Руководство по безопасности Red Hat Enterprise Linux 8: раздел «Securing r-commands».

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

На главную BFOmetr →