Finger

Finger (англ. Finger) — это простой сетевой протокол, предназначенный для обмена статусной и пользовательской информацией в человекочитаемом виде между компьютерами в сети. Протокол и соответствующие программы позволяют получать информацию о состоянии системы или отдельных пользователях удалённых компьютеров[1].

Name/Finger protocol

Протокол Name/Finger был описан в документе, служит интерфейсом к программам name и finger, предоставляющим отчёты о состоянии конкретной компьютерной системы или пользователя на сетевых узлах. Программа finger была написана в 1971 году Лесом Эрнестом для удовлетворения потребности пользователей получать информацию о других участниках сети: сведения о том, кто вошёл в систему, были полезны для проверки доступности человека для общения или встречи. Это, вероятно, одна из первых форм информации о присутствии для удалённых пользователей сети.

До появления программы finger единственным способом получить такую информацию в системе WAITS была команда WHO, показывающая идентификаторы и номера терминальных линий (внутренние номера серверных коммуникационных линий для подключения терминалов) для вошедших в систему пользователей. По словам Леса Эрнеста, название finger возникло из-за того, что пользователи системы WAITS проводили пальцем по выводу команды WHO, чтобы найти нужного человека[2].

Протокол Finger для передачи пользовательской информации

Служебная программа finger (демон) работает на TCP-порте 79. Клиент устанавливает соединение с этим портом. На удалённой стороне запускается RUIP (Remote User Information Program), который обрабатывает запрос. Локальный хост отправляет RUIP строку запроса в соответствии со спецификацией Finger, затем ждёт ответа. RUIP принимает и обрабатывает запрос, формирует ответ и инициирует закрытие соединения. Локальный хост получает ответ и сигнал о завершении, после чего закрывает соединение со своей стороны.

Протокол Finger описан в «The Finger User Information Protocol». Как правило, серверная часть реализуется программой fingerd или in.fingerd, а клиентская — программами name и finger, которые возвращают удобочитаемый отчёт о текущем состоянии системы или подробную информацию о пользователе. Формат ответа не регламентирован, а протокол заключается, по сути, только в передаче одной командной строки.

Программа может предоставлять данные о том, авторизован ли пользователь в текущий момент, его e-mail адрес, полное имя и другие сведения. Кроме стандартной информации finger часто отображает содержимое файлов .project и .plan из домашнего каталога пользователя. В этих файлах содержится информация о текущей деятельности пользователя (аналогично микроблоггингу) либо всевозможные шутки.

Проблемы безопасности

В первые годы развития сетей подробная информация — такие как e-mail адреса и полные имена — считалась полезной и безобидной, однако позднее это вызвало вопросы безопасности и приватности.

Finger использовался хакерами как инструмент для начала социально-инженерных атак на компьютерные сети. Получив список имен сотрудников, их электронных адресов, телефонных номеров и других сведений через finger, злоумышленник мог выдать себя по телефону или почте за коллегу и запросить дополнительную закрытую информацию.

Демон finger также имел несколько уязвимых мест, которые могли быть использованы для взлома систем. Например, в 1988 году червь Морриса проэксплуатировал ошибку переполнения буфера в fingerd, чтобы распространиться по сети[3].

По этим причинам во второй половине 1990-х годов большинство сайтов в Интернете отключили эту службу.

Поддержка в программном обеспечении

Протокол реализован в Unix (в том числе macOS), UNIX-подобных системах Linux, FreeBSD, а также в современных версиях Windows. Другие программы, поддерживающие Finger:

Примечания