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-х годов большинство сайтов в Интернете отключили эту службу.