По умолчанию SSH работает на порту 22, и именно его в первую очередь проверяют боты, которые ищут серверы для взлома. Если перенести SSH на другой порт, большая часть такого «шума» просто исчезнет из журналов.
Важно понимать, что смена порта – это дополнительная мера, а не замена нормальной защиты. Главное – вход по SSH-ключам, а смена порта хорошо дополняет его.
Не закрывайте текущее подключение
Делайте все шаги, не закрывая сессию, через которую вы подключены. Закрыть её можно только после того, как вход по новому порту заработает в отдельном окне.
1. Выберите новый порт
Подойдёт любое свободное число от 1024 до 65535. В примерах ниже мы используем 2222, но лучше взять что-то менее очевидное, например 48222. Запишите выбранный порт, он понадобится для каждого подключения.
2. Откройте новый порт в брандмауэре
Команды выполняются на сервере.
На Ubuntu и Debian этот шаг можно пропустить, если брандмауэр у вас не включён.
На AlmaLinux, CentOS и Oracle Linux его нужно выполнить в любом случае из-за SELinux.
# Разрешаем подключения к новому порту SSH
sudo ufw allow 2222/tcp# Открываем новый порт в брандмауэре firewalld
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload
# SELinux по умолчанию разрешает SSH только на порту 22.
# Ставим утилиту semanage и добавляем новый порт в список
# разрешённых для SSH
sudo dnf install -y policycoreutils-python-utils
sudo semanage port -a -t ssh_port_t -p tcp 22223. Укажите новый порт в настройках SSH
Команды выполняются на сервере.
# Открываем файл с нашими настройками SSH. Если вы делали
# инструкцию про SSH-ключи,
# он уже существует, если нет – файл будет создан
sudo nano /etc/ssh/sshd_config.d/00-security.confДобавьте в файл строку с новым портом.
# SSH теперь слушает порт 2222 вместо 22
Port 2222Чтобы сохранить файл, нажмите Ctrl + O и Enter, а чтобы выйти из редактора, Ctrl + X.
# Проверяем настройки на ошибки. Если команда ничего не вывела,
# всё в порядке
sudo sshd -t4. Перезапустите SSH
# В новых Ubuntu SSH запускается через systemd-сокет,
# поэтому сначала перечитываем настройки, а потом перезапускаем
# и сокет, и сам SSH
sudo systemctl daemon-reload
sudo systemctl restart ssh.socket
sudo systemctl restart ssh# Перезапускаем SSH, чтобы он начал слушать новый порт
sudo systemctl restart ssh# Перезапускаем SSH, чтобы он начал слушать новый порт
sudo systemctl restart sshdТеперь убедимся, что SSH действительно слушает новый порт.
# В списке должен появиться порт 2222
sudo ss -tlnp | grep ssh5. Подключитесь по новому порту
Эту команду выполните на своём компьютере, в новом окне терминала.
# Флаг -p задаёт порт подключения
ssh -p 2222 admin@SERVER_IPВ Termius порт меняется в настройках подключения, в поле Port.
6. Закройте старый порт 22
Когда вход по новому порту заработал, закройте порт 22 в брандмауэре.
# Удаляем правило для старого порта SSH
sudo ufw delete allow 22/tcp
# Проверяем список правил
sudo ufw status# Убираем стандартный сервис SSH (порт 22) из открытых
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --reload
# Проверяем, что открыто
sudo firewall-cmd --list-allЕсли вы пользуетесь fail2ban
Если вы пользуетесь fail2ban, укажите новый порт и в его настройках, иначе он будет блокировать нарушителей не на том порту. Как это сделать, мы показали в статье о fail2ban.
Если доступ всё-таки пропал
Если доступ всё-таки пропал, откройте сервер кнопкой Консоль в списке серверов в личном кабинете. Там можно удалить строку Port из файла /etc/ssh/sshd_config.d/00-security.conf и перезапустить SSH.
Наши ресурсы
Telegram-канал: https://t.me/f3cloud_news
Сайт хостинга: https://f3cloud.com