Как сменить номер SSH порта на Linux сервере?

Как изменить порт SSH

22-й сетевой порт SSH является на сегодня одним из наиболее популярных для подключения к удаленным виртуальным серверам. Стареньким FTP сейчас практически уже никто не пользуется, ведь он не только устаревший, но и в отличие от Secure Shell (SSH), вообще никак не защищен (в нем нет шифрования TLS/SSL и он содержит многочисленные критические уязвимости в виде спуфинга, перехвата данных и т.д.). Ежедневно хакеры сканируют интернет на наличие серверов с не защищенными открытыми SSH портами — атакуют их, подбирая логин и пароль с помощью метода перебора brute force. И даже если вы используете доступ по ключу, сам факт попасть под эту волну сканирования может причинить вред вашему серверу (иногда в системных журналах десятки, а то и сотни неудачных попыток подключения по SSH). Поэтому, чтобы никто не ломился в ваши «двери» — я рекомендую сменить стандартный SSH-порт. Как это сделать — читайте в моей статье.

Немного истории: что мы знаем о SSH?

Что такое SSH

SSH (Secure Shell — Безопасная оболочка) — это протокол прикладного уровня, который использует TCP-подключение и шифрование (симметрическое, ассиметрическое, хеширование). Существует две версии этого протокола — SSH-1 и SSH-2. Первая версия была разработана в 1995 году исследователем Тату Илоненом из Технологического университета Хельсинки (Финляндия). Как это было — можно прочитать на Хабре. Из-за неустойчивости к MITM-атакам (Man In The Middle, «Человек посередине») в 1996 году была разработана вторая версия этого протокола — SSH-2. В 2000-м его использовали уже более 2-х миллионов компьютеров по всему миру. А в 2006 г. совет IETF (Инженерный Совет Интернета, Internet Engineering Task Force) признал SSH мировым интернет‐стандартом. Но мало кто знает, что кроме бесплатной версии SSH, которая называется OpenSSH и используется по умолчанию на всех UNIX-подобных ОС, еще существует SSH для коммерческого использования — SSH Communications Security, разработанная компанией Tectia.

Как работает SSH

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

Как изменить стандартный SSH порт?

Подключитесь к серверу и откройте файл конфигурации SSH:

nano /etc/ssh/sshd_config

Далее найдите и раскомментируйте строку #Port22 — подставьте вместо 22 свой номер, который хотите использовать для SSH:

Как сменить номер SSH порта на Linux сервере?

Внимание: важно, чтобы указанный вами номер порта для SSH не совпадал с уже существующими TCP-портами на вашем сервере. Иначе потеряете доступ к серверу! Я рекомендую использовать любую пятизначную цифру. Почему именно пятизначную? Большинство онлайн-сканеров сканируют порты в пределах 5000. Таким образом, указав пятизначный номер вы остаетесь за пределами их «внимания». Больше 5-ти знаков вводить нельзя  — порт вызовет сбой TCP-подключения, т.к. выходит за пределы допустимого диапазона 0 — 65535.

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

Чтобы внести изменения в фаервол CSF, нужно набрать команду:

nano /etc/csf/csf.conf

И перезапустить фаервол, чтобы изменения вступили в силу:

csf -r

Если у вас CSF не установлен — используем IPTables. Применяем команду, в ключе dport указываем номер SSH порта:

iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport XXXXX -j ACCEPT

systemctl restart iptables

Теперь самое главное — перезагружаем SSH-сервис:

sudo systemctl restart ssh.service  // для Debian/Ubuntu

sudo systemctl restart sshd.service // для CentOS

Если после этого вновь подключиться по 22-му порту — получите сообщение «Connection refused». Поэтому, не забудьте прописать в настройках своего SSH-клиента новый порт. А если подключаетесь напрямую из консоли Linux, то используйте ключ -p XXXXX. Например:

ssh -p 12345 user@server

Все. Теперь можете спокойно удалять 22-й порт из настроек фаервола. Больше он использоваться не будет. А настоящий порт SSH знаете только вы :).

Проверить открытые порты на сервере можно командой:

netstat -tupln | grep LISTEN

Дополнительные рекомендации по защите SSH-доступа к серверу

  • Отключить доступ по паролю и использовать доступ по ключу. Генерируете зашифрованные (RSA) Public и Private keys (длинной 2048 бит) с помощью PUTTY Gen (или любого другого инструмента, например командой ssh-keygen). Получаете публичный (открытый) и секретный (закрытый) ключи. Публичный вы копируете на удаленный сервер, а секретный сохраняете на своем хосте и используете для подключения к этому серверу. Таким образом, при подключении система проверяет, что владелец открытого ключа также владеет и закрытым. К закрытому ключу не забудьте применить парольную фразу.
  • Запретить подключение по SSH с помощью учетной записи администратора — root. Настраивается в файле конфигурации SSH: PermitRootLogin no. Предварительно нужно создать нового пользователя на сервере с возможностью при необходимости переключаться на root (добавить в группу пользователей sudo).
Оценка:
( 2 оценки, среднее 5 из 5 )
Подписка на KRASHENININ.TECH

Получайте регулярные обновления на почту!    


Author
Виталий Крашенинин/ автор статьи
Digital-жрец блога Krasheninin.tech, публицист, аналитик, исследователь веб-технологий. С 2011 года в IT. Сфокусирован на кибербезопасности, системном администрировании, создании сайтов и SEO. Подробнее>>
Поделиться материалом в соцсетях:
KRASHENININ.TECH - блог о веб-технологиях, и не только
Подписаться
Уведомление о
guest
0 Комментарий
Встроенные отзывы
Просмотреть все комментарии
0
Есть мысли? Прокомментируй!x
()
x