Среди десятков существующих сетевых протоколов выделяются как относительно новые технические решения, так и проверенные временем. Некоторые сетевые протоколы существуют уже более 40 лет и широко используются практически в неизменном виде. Ими удобно пользоваться, но, увы, сетевая безопасность может оказаться под угрозой.

Как придумали Telnet

Одним из наиболее распространенных и «древних» сетевых протоколов стал протокол Telnet (от teletype network, сеть телетайпной связи). Первая версия протокола была представлена еще в 1969 году. Telnet разрабатывался как универсальный инструмент доступа к командной строке удаленного компьютера. В большинстве используемых операционных систем, начиная с середины 1970-х годов, Telnet использовался для организации удаленного доступа, со временем этот протокол стал де-факто стандартом. Фактически удаленный доступ позволял выполнять все необходимые сетевые соединения на чужом компьютере, что было удобно для администрирования.

Однако в 1970-х годах компьютерами пользовались преимущественно ученые в университетах и специалисты в крупных компаниях (в основном в США), поэтому надобности в дополнительных методах шифрования трафика поначалу просто не было: пользователей было мало, и случаи злонамеренных подключений к рабочим станциям были исключительно редки.

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

Что умеет Telnet?

Telnet все еще используют для многих тривиальных задач. С его помощью можно проверить доступность того или иного хоста, например:

telnet 192.168.1.12 443

С помощью данной команды мы проверяем, отвечает ли адрес 192.168.1.12 по 443 порту. Также можно выяснить, открыт ли какой-то порт на локальном компьютере:

telnet localhost 12345

В данном случае проверяется доступность порта 12345.

С помощью Telnet можно получить содержимое веб-страницы на удаленном ресурсе, подключившись к нужному хосту (например, telnet example.com 80), а затем выполнив GET / . Разумеется, можно тестировать и другие сценарии, например, отправку писем. В этом случае порядок действий будет примерно таким (при условии, что у нас уже установлен и настроен локальный почтовый сервер):

telnet localhost 25 (подключаемся к локальному хосту, к порту 25)

helo localhost (после команды helo пишем адрес сервера, с которого мы подключаемся к почтовому серверу, для примера — тоже localhost, в случае успеха получаем сообщение вида mx.exim.test Hello localhost [127.0.0.1]).

> mail from: <alex@exim.test>

> rcpt to: <news@exim.test> (посылаем письмо от alex@ для news@)

> data

> first test line

> second test line

> . (команда-точка означает, что запись сообщения построчно завершена)

> quit (закрыли соединение)

Так мы послали письмо от имени alex@exim.test на адрес news@exim.test, письмо содержит две строки — first test line и second test line. Разумеется, Telnet можно использовать и с другими сетевыми утилитами популярных операционных систем.

Но лучше все же не Telnet

Как мы уже упоминали, данные, передаваемые по Telnet, не шифруются.

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

Даже если при соединении удаленный сервер запрашивает пароль для авторизации, это далеко не всегда оказывается проблемой: 23 порт, используемый для работы Telnet, нередко открыт при использовании различных сетевых устройств, например, IP-камер. В 2016 году была найдена просто невероятная уязвимость: у сотен тысяч китайских камер от компаний Dahua и XiongMai постоянно был активен Telnet, а пароль администратора, используемый для изменения прошивки камер, нельзя было изменить. В это сложно поверить, но производители так урезали прошивки камер, что просто «выбросили» команду passwd! В России таких уязвимых камер с неизменяемым паролем оказалось более 20 000.

Зная пароль, выставляемый производителями по умолчанию, можно просто подключиться по Telnet к чужой камере и управлять ей. Что еще хуже, можно превратить камеру в часть ботнета, заставив подключаться ее к DNS-серверам крупных провайдеров. Конечно, подключение десятков камер инфраструктура провайдера переживет, но если речь идет о сотнях тысяч устройств, подконтрольных злоумышленникам, такая DDoS-атака может привести к недоступности популярных сайтов.

В связи с этим специалисты рекомендуют использовать для удаленного доступа более современные протоколы, поддерживающие шифрование. Например, SSH умеет шифровать весь трафик, включая передаваемые пароли. Практически во всех случаях SSH предпочтительнее, чем устаревшие сетевые протоколы (такие, как Telnet).