Хабрахабр

[Перевод] Как SSH появился на 22 порту

SSH по умолчанию работает на порту 22. Это не совпадение. Вот история, как ему достался этот порт.

Когда я (Тату Илонен) впервые опубликовал эту историю в апреле 2017 года, она стала вирусной: её прочитали около 120 000 читателей за три дня.

Я написал первую версию SSH (Secure Shell) весной 1995 года. В то время широко использовались Telnet и FTP.

Порт 22 был свободен и удобно располагался между портами для telnet и ftp. Но я всё равно разработал SSH для замены и telnet (порт 23) и ftp (порт 21). Но как его получить? Я подумал, что такой номер порта может стать одной из тех маленьких деталей, которые придадут некоторую ауру доверия SSH. Я никогда не распределял порты, но я знал тех, кто этим занимается.

Интернет был меньше, и мы находились на самых ранних стадиях интернет-бума. В то время процесс выделения портов был довольно простым. В то время это означало уважаемых первопроходцев интернета Джона Постела и Джойса К. Номера портов выделяла организация IANA (Internet Assigned Numbers Authority). Среди всего прочего, Джон являлся редактором таких незначительных протоколов, как IP (RFC 791), ICMP (RFC 792) и TCP (RFC 793). Рейнольдса. Возможно, кто-то из вас слышал о них.
Меня откровенно пугал Джон как автор всех основных RFC для Интернета!

0 в июле 1995 года я отправил в IANA такое электронное письмо: Так или иначе, но перед анонсом ssh-1.

From ylo Mon Jul 10 11:45:48 +0300 1995
From: Tatu Ylonen <ylo@cs.hut.fi>
To: Internet Assigned Numbers Authority <iana@isi.edu>
Subject: request for port number
Organization: Helsinki University of Technology, Finland

Уважаемый сэр,

Это значительное улучшение безопасности по сравнению с существующими протоколами telnet и rlogin и их реализациями. Я написал программу для безопасного входа с одной машины на другую по небезопасной сети. Мой план состоит в том, чтобы свободно распространять программу в интернете и обеспечить как можно более широкое её использование. В частности, она предотвращает спуфинг IP, DNS и маршрутизации.

Желательно в диапазоне 1-255, чтобы его можно было использовать в поле WKS на нейм-серверах. Я хотел бы получить зарегистрированный привилегированный номер порта для программы.

Программное обеспечение локально используется несколько месяцев и готово для публикации, за исключением номера порта. Ниже прикладываю проект RFC для протокола. В настоящее время в бета-тестировании я использую порт 22. Если можно оперативно присвоить номер порта, я хотел бы выложить программу уже на этой неделе. Было бы отлично использовать этот номер (в настоящее время в списках он обозначен как «неприсвоенный»).

Название сервиса для программного обеспечения — "ssh" (Secure Shell).

С уважением,

Тату Илонен <ylo@cs.hut.fi>

… затем следуют спецификации протокола ssh-1.

На следующий день в почтовом ящике лежало письмо от Джойса:

EDU
To: ylo@cs.hut.fi
Subject: Re: request for port number
Cc: iana@ISI. Date: Mon, 10 Jul 1995 15:35:33 -0700
From: jkrey@ISI. EDU

Тату,

Мы присвоили порт 22 для SSH, указав вас контактным лицом.

Джойс

У нас получилось! Теперь у SSH порт 22!!!

В 17:23 выслал тестерам пакеты ssh-1. 12 июля 1995 года в 2:32 утра я анонсировал окончательную бета-версию для своих бета-тестеров в Хельсинкском технологическом университете. 0, а в 17:51 отправил объявление о SSH (Secure Shell) в список рассылки cypherpunks@toad.com. 0. Я также продублировал анонс в несколько новостных групп, списков рассылки и непосредственно отдельным людям, которые обсуждали смежные темы в интернете.

По умолчанию сервер SSH по-прежнему работает на порту 22. Однако бывает иначе. Одна из причин — тестирование. Другая — запуск нескольких конфигураций на одном хосте. Редко бывает, что сервер работает без рутовых привилегий, в этом случае он должен размещаться на непривилегированном порту (т. е. с номером 1024 или больше).

Он также указывается параметром -p <port> в sshd. Номер порта можно настроить, изменив директиву Port 22 в /etc/ssh/sshd_config. Клиент SSH и программы sftp тоже поддерживают параметр -p <port>.

Параметр -p <port> можно использовать для указания номера порта при подключении с помощью команды ssh в Linux. В SFTP и scp используется параметр -P <port> (примечание: заглавная P). Указание из командной строки переопределяет любое значение в файлах конфигурации.
SSH является одним из немногих протоколов, которому часто разрешено работать через файрволы на исходящий доступ, особенно в небольших и технических компаниях. Входящий SSH обычно разрешён к одному или нескольким серверам.

Исходящий SSH

Настройка исходящего SSH в файрволе очень проста. Если есть ограничения на исходящий трафик вообще, просто создайте правило, разрешающее исходящие соединения по порту TCP 22. Вот и всё. Если требуется ограничить адреса назначения, можно создать соответствующее правило, разрешив доступ только к серверам вашей организации в облаке или к jump-серверу, который защищает доступ к облаку.

Обратное туннелирование — это риск

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

Разработчики и системные администраторы часто используют туннелирование, чтобы получить удалённый доступ из дома или с ноутбука во время путешествий. В некоторых случаях это удобно.

Например, оно может нарушать правила PCI, HIPAA или NIST SP 800-53. Но обычно туннелирование нарушает политику безопасности и отнимает контроль у администраторов файрвола и команды ИБ. Его могут использовать хакеры и спецслужбы, чтобы оставить бэкдоры в локальной сети.

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

Входящий SSH

Для входящего доступа есть несколько вариантов:

  • Настройте файрвол для пересылки всех подключений к порту 22 на определённый IP-адрес во внутренней сети или DMZ. Запустите по этому IP-адресу CryptoAuditor или jump-сервер, чтобы контролировать и проверять дальнейший доступ в организацию.
  • Используйте разные порты на файрволе для доступа к разным серверам.
  • Разрешайте доступ по SSH только после входа в систему с помощью VPN, обычно по протоколу IPsec.

Iptables — это файрвол хоста, встроенный в ядро Linux. Обычно он настроен для защиты сервера, предотвращая доступ ко всем портам, которые не были явно открыты.

Их следует запускать из-под рута. Если на сервере включен iptables, следующие команды могут разрешить входящий доступа SSH.

iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT

Если хотите сохранить правила навсегда, то в некоторых системах это можно сделать командой:

service iptables save

Показать больше

Похожие публикации

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

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

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