EUR
european

EUR

usa

USD

Russian Ru
Ex. VAT Ex. VAT 0%

Изменение порта SSH

Изменение стандартного порта SSH (22) снижает вероятность автоматизированного сканирования и базовых атак методом перебора, но не заменяет надлежащие меры безопасности.

Warning

Перед внесением любых изменений убедитесь, что у вас открыта активная SSH-сессия. Не закрывайте её, пока не убедитесь, что новый порт работает. Если что-то пойдёт не так, вы потеряете доступ к серверу.

Выбор номера порта

Выберите номер порта выше 1024. Порты в диапазоне 49152–65535 реже конфликтуют с другими известными службами. Избегайте часто используемых альтернатив, таких как 2222 или 22222, поскольку они часто становятся целью автоматизированных сканеров. В этом руководстве в качестве примера используется 22777.

Создание резервной копии файла конфигурации

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

cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup

Изменение порта SSH в Ubuntu и Debian

Начиная с Debian 12 и некоторых более новых версий Ubuntu (22.04+), SSH может по умолчанию использовать активацию сокета systemd. В этом случае одного изменения директивы Port в sshd_config часто недостаточно.

Сначала проверьте, активна ли активация сокета:

systemctl is-active ssh.socket

Если команда возвращает active, настройте сокет SSH для использования нового порта.

Создайте переопределение systemd для сокета SSH:

systemctl edit ssh.socket

Добавьте следующее содержимое:

[Socket] ListenStream= ListenStream=22777

Пустая строка ListenStream= очищает порт по умолчанию (22). Без неё SSH может продолжить прослушивать как порт 22, так и новый порт.

Для большей надёжности также укажите порт в конфигурации SSH. Это помогает генератору systemd и сохраняет настройку после обновлений OpenSSH:

mkdir -p /etc/ssh/sshd_config.d echo "Port 22777" | tee /etc/ssh/sshd_config.d/10-port.conf

Info

Для лучшей совместимости можно вместо этого явно указать адреса:

[Socket] ListenStream= ListenStream=0.0.0.0:22777 ListenStream=[::]:22777

Сохраните конфигурацию и примените изменения:

systemctl daemon-reload systemctl restart ssh.socket systemctl restart ssh

Проверьте, что служба запущена:

systemctl status ssh.socket

Info

В некоторых более новых системах, например Ubuntu 24.04+, генератор systemd может автоматически считывать порт из sshd_config. В этом случае может быть достаточно изменить Port напрямую, а затем выполнить systemctl daemon-reload и systemctl restart ssh.socket. Описанный выше метод с переопределением работает во всех версиях.

Старые версии Ubuntu и Debian

В версиях Ubuntu до 22.04 и Debian до 12 SSH не управляется с помощью активации сокета. Откройте файл конфигурации SSH:

nano /etc/ssh/sshd_config

Найдите следующую строку:

Port 22

Раскомментируйте её и замените 22 на выбранный номер порта:

Port 22777

Сохраните файл и проверьте конфигурацию:

sshd -t

Если команда не найдена, используйте:

/usr/sbin/sshd -t

Если команда не возвращает никаких сообщений, конфигурация корректна. Перезапустите службу SSH:

systemctl restart ssh

Отключение активации сокета

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

systemctl disable --now ssh.socket systemctl enable --now ssh

После этого отредактируйте sshd_config, как описано выше, и перезапустите SSH:

systemctl restart ssh

Изменение порта SSH в AlmaLinux, Rocky Linux и CentOS

Редактирование файла конфигурации SSH

Откройте файл конфигурации SSH:

nano /etc/ssh/sshd_config

Найдите следующую строку:

Port 22

Раскомментируйте её и замените 22 на выбранный номер порта:

Port 22777

Сохраните файл и проверьте конфигурацию:

/usr/sbin/sshd -t

Если команда не возвращает никаких сообщений, конфигурация корректна. Перезапустите службу SSH:

systemctl restart sshd

Проверьте, что служба запущена:

systemctl status sshd

Разрешение порта в SELinux

В системах с включённым SELinux необходимо также разрешить новый порт в политике SELinux. Чтобы проверить, какие порты в настоящее время разрешены для SSH, выполните:

semanage port -l | grep ssh

Затем добавьте или измените новый порт:

semanage port -a -t ssh_port_t -p tcp 22777 || semanage port -m -t ssh_port_t -p tcp 22777

Если semanage не установлен, установите необходимый пакет:

dnf install policycoreutils-python-utils

Настройка брандмауэра

Всегда разрешайте новый порт в брандмауэре до перезапуска SSH. Если сначала перезапустить SSH, можно потерять доступ к серверу.

UFW

ufw allow 22777/tcp ufw reload ufw status

firewalld

firewall-cmd --permanent --zone=public --add-port=22777/tcp firewall-cmd --reload

iptables

iptables -I INPUT -p tcp --dport 22777 -j ACCEPT iptables-save > /etc/iptables/rules.v4

Info

Команда iptables-save сохраняет правила в файл только в том случае, если iptables-persistent установлен и настроен в системе. Для его установки выполните:

apt install -y iptables-persistent

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

Настройка Fail2Ban

Если Fail2Ban настроен на сервере, обновите порт SSH в его конфигурации. Откройте /etc/fail2ban/jail.local или соответствующий файл в каталоге /etc/fail2ban/jail.d/ и установите:

port = 22777

После обновления конфигурации перезапустите Fail2Ban:

systemctl restart fail2ban

Проверка нового порта

Проверьте, прослушивает ли SSH новый порт:

ss -tlnp | grep :22777

Также можно вывести все слушающие процессы, связанные с SSH:

ss -tlnp | grep ssh

В старых системах вместо этого используйте netstat:

netstat -tlnp | grep :22777

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

В Ubuntu и Debian:

systemctl status ssh.socket

В AlmaLinux, Rocky Linux и CentOS:

systemctl status sshd

Не закрывая текущую SSH-сессию, откройте новое окно терминала и подключитесь с использованием нового порта:

ssh root@YOUR_SERVER_IP -p 22777

Если подключение успешно, можно закрыть старую сессию. Затем удалите порт 22 из правил брандмауэра, если он больше не нужен.

Для UFW:

ufw delete allow 22/tcp ufw reload

Для firewalld:

firewall-cmd --permanent --zone=public --remove-port=22/tcp firewall-cmd --reload

Warning

Не удаляйте порт 22 из брандмауэра, пока не убедитесь, что новый порт работает. Если новое подключение не удаётся установить, используйте открытую SSH-сессию для устранения проблемы или отмены изменений:

systemctl revert ssh.socket cp /etc/ssh/sshd_config.backup /etc/ssh/sshd_config rm -f /etc/ssh/sshd_config.d/10-port.conf systemctl daemon-reload systemctl restart ssh.socket

Если активация сокета отключена, замените последние две команды на:

systemctl restart ssh

Заключение

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

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

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA