Как сменить порт SSH (22) в Linux (/etc/ssh/sshd_config) для защиты от ботов
Зачем менять стандартный 22-й порт SSH
Порт 22 TCP общеизвестен во всем мире как стандартный порт управления OpenSSH. Автоматизированные боты непрерывно сканируют подсети интернета, обращаясь именно на 22 порт. В логах /var/log/auth.log можно увидеть десятки тысяч попыток подбора паролей к учетной записи root в сутки. Это создает паразитную нагрузку на процессор и забивает системные журналы.
Эффект от смены порта
Перенос службы SSH на нестандартный порт (например, 2222 или 49522) отсекает 99% примитивных интернет-сканеров и ботнетов, делая сервер «невидимым» для массовых атак перебора паролей (Password Spraying).
Пошаговый регламент безопасной смены порта SSH
ВАЖНО: Не закрывайте текущее окно терминала, пока не завершите всю настройку и не проверите вход в новом окне!
Шаг 1: Разрешение нового порта в файрволе UFW
Сначала откройте новый порт (например, 2222) в фаерволе, чтобы система не заблокировала вас:
sudo ufw allow 2222/tcp comment 'New SSH Port'
sudo ufw statusШаг 2: Редактирование конфигурации OpenSSH Server
Откройте главный конфигурационный файл:
sudo nano /etc/ssh/sshd_configНайдите строку #Port 22. Раскомментируйте ее (удалите символ решетки #) и укажите ваш новый номер порта:
Port 2222Сохраните файл (Ctrl + O -> Enter -> Ctrl + X).
Шаг 3: Проверка синтаксиса конфига на ошибки
Обязательно протестируйте конфигурацию перед перезапуском:
sudo sshd -tЕсли команда ничего не вывела — конфиг идеален. Если вывела ошибку — исправьте опечатку в файле.
Шаг 4: Перезапуск службы SSH
sudo systemctl restart ssh
или на CentOS:
sudo systemctl restart sshdШаг 5: Проверка подключения в НОВОМ окне терминала
Не закрывая первое окно, откройте новую вкладку терминала на своем компьютере и подключитесь с флагом -p:
ssh -p 2222 user@IP_вашего_сервераЕсли вход прошел успешно, вернитесь в первое окно и удалите старое правило 22 порта из файрвола: sudo ufw delete allow 22/tcp.
Типовые ошибки администраторов
- Выбор зарезервированного системного порта: Не выбирайте порты, используемые другими сервисами (например, 80 HTTP, 443 HTTPS, 3306 MySQL). Выбирайте свободный порт в диапазоне от 1024 до 65535 (рекомендуется от 20000 до 60000).
- Блокировка SELinux (на CentOS / AlmaLinux / RedHat): В системах с SELinux смена порта в sshd_config вызовет ошибку запуска службы, так как SELinux блокирует биндинг SSH на чужие порты. Решение: разрешите порт через semanage:
sudo semanage port -a -t ssh_port_t -p tcp 2222.
Инженеры ITSTM настроят беспарольный вход по криптографическим ключам Ed25519, двухфакторную аутентификацию (2FA Google Authenticator) и защиту от атак перебора Fail2ban.
Частые вопросы (FAQ)
Как подключиться по нестандартному порту через программу PuTTY?
В главном окне PuTTY (раздел Session) введите IP-адрес сервера, а в поле 'Port' вместо числа 22 введите ваш новый порт (например, 2222).
Является ли смена порта 22 100% защитой от взлома?
Нет. Это мера класса 'Security through obscurity' (безопасность через сокрытие). Она защищает от автоматических ботов, но целенаправленный сканер портов (nmap) легко найдет открытый SSH. Главная защита — вход строго по SSH-ключам с отключением паролей.
Что делать, если в Ubuntu 22.10+ / 24.04 смена порта в sshd_config не работает?
В новейших версиях Ubuntu служба переведена на сокетную активацию systemd (ssh.socket). Нужно отредактировать файл /lib/systemd/system/ssh.socket (параметр ListenStream=2222) и выполнить: sudo systemctl daemon-reload && sudo systemctl restart ssh.socket.
Как указать нестандартный порт при копировании файлов через scp?
В утилите scp флаг порта пишется с заглавной буквы -P: scp -P 2222 file.txt user@ip:/tmp/