Почему порт 22 стал стандартом для SSH

История портов: от Telnet на 1-м порту до SSH на 22-м и как хакеры стучатся во все двери

Почему SSH работает именно на 22-м порту

Каждый, кто хоть раз подключался к серверу, набирал команду вроде:

text
ssh -p 22 user@server

Или просто ssh user@server — потому что 22-й порт стоит по умолчанию.

Но почему именно 22? Кто это решил? И вообще, что такое порты и почему они стали «дверьми» в сервер?

Собрал для вас краткую историю — от 1970-х до наших дней. Без занудства, с понятными примерами.


Когда порты умели только слушать

В начале 1970-х интернета ещё не было, был его предок — ARPANET. И работал он через протокол NCP (Network Control Protocol). Проблема: этот протокол был однонаправленным.

То есть чтобы передавать данные туда и обратно, нужно было два отдельных соединения.

Инженеры придумали простое правило:

  • нечётные порты — для исходящего трафика
  • чётные — для входящего

Поэтому Telnet получил порт 1, FTP — 3, а всякие Echo и Discard — 7 и 9. Чётные порты (2, 4, 6…) были «зеркальными половинками» и практически не использовались.

Кстати, портов тогда было всего 256. Казалось, что за глаза хватит навсегда.


Джон Постел — «царь интернета», который раздавал порты по электронной почте

В 1972 году аспирант UCLA Джон Постел написал документ RFC 349. Суть: нужен «царь», который будет выдавать официальные номера портов и вести список. И он мягко намекнул, что этим «царём» мог бы быть он сам. Так и случилось.

Постел стал человеком, который решал, какой сервис на каком порту живёт. Работал он быстро и без бюрократии:

Когда Тим Бернерс-Ли в январе 1992 года попросил порт 80 для HTTP, Постел одобрил это в тот же день.

В исходниках первого веб-браузера до сих пор есть комментарий: «порт выделен Джоном Постелом 24 января 1992 года».

Его принцип работы назывался Robustness Principle: «Будь консервативен в том, что отправляешь, и либерален в том, что принимаешь». Это касалось и протоколов, и людей.


Сокеты Беркли: как порт стал «дверью»

Примерно в то же время в Беркли программист Билл Джой работал над операционкой BSD. Ему нужно было сделать сетевой стек TCP/IP. Компания BBN прислала свой код — он еле тянул на 50 кбит/с. Джой переписал всё сам и добился скорости 3 Мбит/с.

В 1983 году вышла BSD 4.2 с Berkeley sockets API — теми самыми сокетами, которыми мы пользуемся до сих пор: socket()bind()listen()accept(). Джой сделал так, что сокет стал похож на файл, а порт — на его адрес.

А 1 января 1983 года ARPANET окончательно перешёл с NCP на TCP/IP. Новый протокол был двусторонним, поэтому чётные порты потеряли смысл. Зато количество портов выросло до 65536 (16 бит). Опять казалось, что хватит навсегда.


Как SSH получил порт 22 и почему это случилось за один день

К середине 1990-х стало понятно, что старые протоколы不安全:

  • Telnet передавал пароли открытым текстом
  • rlogin доверял всем IP-адресам
  • FTP требовал отдельный канал для данных

Нужен был новый протокол для безопасного удалённого доступа.

Весной 1995 года финский исследователь Тату Илонен закончил программу Secure Shell (SSH). Оставалось только получить порт.

Читать ещё  Генерация изображений в WordPress: обзор лучших AI-плагинов и сервисов 2025 года

10 июля 1995 года, 11:45 по Хельсинки — Илонен отправил письмо в IANA. Он написал, что сделал программу для безопасного входа через недоверенные сети, будет распространять её бесплатно и просит выделить привилегированный порт. И добавил, что во время тестов SSH уже использовал порт 22, который тогда числился как «неназначенный».

Ответ пришёл в тот же день, в 15:35 по Тихоокеанскому времени: «Хорошо, порт 22 ваш».

Так одно короткое письмо навсегда закрепило 22-й порт за SSH.


Когда порты стали маской: NAT и PAT

В середине 1990-х стало понятно, что IPv4-адресов на всех не хватит. Решение нашли в NAT (преобразование IP-адресов).

С этого момента порт перестал быть просто адресом сервиса. Он стал ещё и идентификатором конкретного клиента за роутером.

Чуть позже появилась технология PAT: роутер начал переписывать порты исходящих соединений, и сотни устройств в офисе могли выходить в интернет через один внешний IP-адрес.

Оборотная сторона: узел за NAT стал недоступен извне без ручного проброса портов.


Когда начали стучаться во все двери: SYN flood и Nmap

Если порт — это дверь, рано или поздно кто-то начнёт проверять, какие двери открыты.

В сентябре 1996 года провайдер PANIX из Нью-Йорка обнаружил, что его почтовые серверы перестали отвечать. Кто-то слал поток SYN-пакетов, заполняя очередь полуоткрытых соединений. Это была одна из первых SYN flood-атак.

Как работает SYN flood: сервер выделял ресурсы под каждое входящее соединение ещё до того, как рукопожатие завершалось. Атакующий слал тысячи SYN-пакетов с поддельных адресов — и сервер задыхался.

Через неделю после атаки появился механизм SYN cookies: сервер перестал выделять память для каждого SYN. Вместо этого он кодировал параметры соединения в специальное поле и отправлял ответ. Если клиент настоящий — он ответит правильно, и сервер восстановит состояние. Если нет — сервер не потратил ресурсы.

А в 1997 году парень под псевдонимом Фёдор Васкович (отсылка к Достоевскому) выпустил Nmap — инструмент для сканирования портов. Nmap отправляет пакеты на разные порты и по ответам определяет, какие сервисы открыты, а какие — нет.

Кстати, в «Матрице: Перезагрузке» Тринити использует Nmap, находит открытый SSH на 22-м порту и подключается к SCADA-системе. Это один из немногих технически правдоподобных моментов в голливудском кино.


Что останется от портов через 10 лет?

Многие инженеры считают, что порты постепенно исчезнут. Их место займут:

  • service discovery — когда программа сама находит нужный сервис
  • mesh-сети — сложные маршрутизации внутри кластеров
  • serverless — где вы вообще не думаете о серверах и портах

Но пока — и, думаю, ещё долго — когда что-то ломается, сисадмин открывает терминал и пишет:

text
netstat -tlnp   # посмотреть, кто занял 80-й порт
nmap -p-        # проверить, не оставил ли прошлый админ открытых дверей
ssh -p 22       # подключиться к серверу

Порты пережили NCP, TCP/IP и NAT. Потому что они гениально просты: 16 бит, 65536 значений — и вся сложность интернета укладывается в это число.


Сколько портов открыто на вашем сервере прямо сейчас? Напишите в комментариях — будет интересно сравнить.

RuWEB хостинг

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»

Получайте новости ПЕРВЫМИ!

X