
Порт 22 по умолчанию используется для подключения к серверу по протоколу SSH. Его открытое состояние создает прямой доступ к системе и повышает риск атак с подбором пароля и сканирования уязвимостей. Закрытие или ограничение порта 22 снижает вероятность несанкционированного доступа и позволяет сконцентрировать защиту на конкретных точках подключения.
Для блокировки порта 22 можно использовать встроенный брандмауэр сервера, такой как iptables, firewalld или ufw. Настройка включает создание правила, которое запрещает входящие соединения на порт 22 и разрешает доступ только с доверенных IP-адресов. Это позволяет сохранить возможность удаленного управления сервером для конкретных устройств.
Альтернативный подход – смена стандартного порта SSH на нестандартный. Перенастройка файла /etc/ssh/sshd_config и указание нового номера порта снижает вероятность автоматических атак. После изменения порта важно убедиться, что новые настройки применены и соединение проверено, чтобы не потерять доступ к серверу.
Дополнительно рекомендуется использовать двухфакторную аутентификацию и ключи SSH вместо пароля. Это повышает уровень безопасности при удаленном доступе и делает закрытие порта 22 более эффективным, минимизируя вероятность компрометации сервера.
Проверка текущего состояния порта 22 на сервере

Для оценки доступности порта 22 используйте утилиты командной строки. На Linux и macOS выполните команду sudo netstat -tulnp | grep :22 или ss -tuln | grep :22. Эти команды отображают активные TCP-порты и процессы, которые их используют.
На Windows используйте netstat -ano | findstr :22, чтобы определить, запущен ли SSH-сервер и какой процесс прослушивает порт.
Для проверки доступности порта из внешней сети применяйте telnet или nc: telnet IP_сервера 22 или nc -zv IP_сервера 22. Если соединение устанавливается, порт открыт и доступен для входящих подключений.
Дополнительно проверяйте правила брандмауэра. На Linux используйте sudo ufw status или iptables -L -n для оценки разрешений на порт 22. На Windows проверьте настройки Windows Firewall в разделе входящих правил.
Регулярная проверка состояния порта 22 помогает своевременно выявлять открытые точки доступа и снижает риск несанкционированного подключения к серверу.
Отключение SSH сервиса временно через systemctl
Для временного отключения SSH сервиса используется команда systemctl stop sshd. Она прекращает работу службы до следующей перезагрузки или ручного запуска.
Команда выглядит так: sudo systemctl stop sshd. После её выполнения сервер перестанет принимать подключения по порту 22, но все текущие сессии останутся активными до завершения работы.
Для восстановления работы SSH без перезагрузки сервера используйте команду sudo systemctl start sshd. Служба снова начнёт принимать подключения на порт 22.
Такой метод удобен при кратковременных административных действиях, требующих блокировки SSH, без изменения конфигурации автозапуска сервиса.
Изменение конфигурации SSH для ограничения доступа

Для ограничения доступа к SSH используется файл конфигурации /etc/ssh/sshd_config. Основные параметры, влияющие на доступ:
Port – изменяет стандартный порт 22 на нестандартный, снижая риск автоматических атак. Например, Port 2222.
PermitRootLogin – запрещает вход под root. Для повышения безопасности установите PermitRootLogin no.
AllowUsers – ограничивает список пользователей, которым разрешён доступ. Пример: AllowUsers admin user1.
AllowGroups – позволяет вход только членам указанных групп. Пример: AllowGroups sshusers.
PasswordAuthentication – отключение аутентификации по паролю и использование ключей повышает безопасность: PasswordAuthentication no.
После внесения изменений конфигурацию необходимо проверить командой sshd -t для выявления синтаксических ошибок и применить перезапуском сервиса: systemctl restart sshd.
Рекомендуется сохранять резервную копию sshd_config перед изменениями, чтобы избежать потери доступа к серверу.
Блокировка порта 22 с помощью iptables

Для закрытия порта 22 с помощью iptables используйте правило, блокирующее входящие соединения на этот порт. Команда имеет вид:
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
Эта команда добавляет правило в конец цепочки INPUT, запрещающее любые TCP-пакеты, направленные на порт 22. Если нужно заблокировать порт только для определённого диапазона IP-адресов, добавьте параметр -s:
sudo iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -j DROP
Для проверки текущих правил используйте:
sudo iptables -L -n -v
Если необходимо сохранить изменения после перезагрузки, выполните:
sudo iptables-save > /etc/iptables/rules.v4
Чтобы удалить правило блокировки порта 22, выполните команду с -D вместо -A:
sudo iptables -D INPUT -p tcp --dport 22 -j DROP
Важно: перед применением убедитесь, что у вас есть альтернативный способ доступа к серверу, иначе вы можете потерять SSH-соединение.
Использование firewalld для закрытия порта 22

Для управления доступом к портам на сервере можно использовать firewalld, который предоставляет динамическую настройку правил без перезагрузки сети. Закрытие порта 22 выполняется через зоны и сервисы.
Сначала проверьте активные зоны и состояние firewalld:
| Команда | Описание |
| sudo firewall-cmd —state | Проверка запущен ли firewalld |
| sudo firewall-cmd —get-active-zones | Список активных зон и подключенных интерфейсов |
Для блокировки порта 22 нужно удалить SSH-сервис из выбранной зоны:
| Команда | Описание |
| sudo firewall-cmd —zone=public —remove-service=ssh | Удаление сервиса SSH из зоны public без перезагрузки |
| sudo firewall-cmd —zone=public —remove-service=ssh —permanent | Сделать правило постоянным после перезагрузки |
Для проверки изменений используйте:
| Команда | Описание |
| sudo firewall-cmd —zone=public —list-services | Список разрешенных сервисов в зоне public |
Если требуется закрыть порт напрямую, а не через сервисы:
| Команда | Описание |
| sudo firewall-cmd —zone=public —add-port=22/tcp —remove | Удаление прямого правила для порта 22 |
| sudo firewall-cmd —zone=public —add-port=22/tcp —remove —permanent | Сделать правило постоянным |
После внесения изменений рекомендуется перезагрузить firewalld для проверки корректности правил:
| Команда | Описание |
| sudo firewall-cmd —reload | Применение постоянных правил и обновление текущих |
Использование firewalld позволяет управлять доступом к порту 22 гибко, контролируя его как через сервис SSH, так и напрямую по номеру порта.
Закрытие порта 22 на уровне маршрутизатора или облачного провайдера
Закрытие порта 22 на уровне маршрутизатора или облачного провайдера предотвращает доступ к SSH снаружи, снижая риск атак и сканирования.
Для локальных маршрутизаторов:
- Откройте веб-интерфейс маршрутизатора и авторизуйтесь под администратором.
- Перейдите в раздел «Firewall», «Port Forwarding» или «Virtual Server».
- Найдите правило переадресации порта 22 на внутренний IP сервера и отключите его или удалите.
- При необходимости добавьте правило блокировки входящих соединений на порт 22.
- Сохраните изменения и перезагрузите маршрутизатор.
Для облачных провайдеров (AWS, Google Cloud, Azure):
- Перейдите в панель управления сетевыми настройками или Security Groups.
- Найдите правило, разрешающее входящий трафик на порт 22.
- Измените правило, указав конкретные IP-адреса с доступом, или полностью удалите правило для закрытия порта.
- Проверьте, что новые правила применены и соединение с сервером через SSH с других адресов блокируется.
После закрытия порта рекомендуется тестировать соединение с сервера снаружи, используя инструменты проверки открытых портов (например, nmap или онлайн-сервисы), чтобы убедиться, что порт 22 недоступен.
Проверка успешного закрытия порта 22 после настроек
С внешнего устройства выполните `nmap -p 22
Если используется облачный провайдер, проверьте правила безопасности в панели управления. Любые активные правила, разрешающие порт 22, должны быть отключены или удалены.
Логи системы можно дополнительно проверить командой `journalctl -u ssh` для убедительности, что попытки подключения на порт 22 больше не регистрируются.
После тестирования рекомендуется сохранить текущие правила firewall, используя `firewall-cmd —runtime-to-permanent` для firewalld или `iptables-save > /etc/iptables/rules.v4` для iptables.
Альтернативные методы доступа к серверу после закрытия порта
После закрытия порта 22 стандартный доступ по SSH становится невозможен. Для управления сервером можно использовать следующие методы:
- SSH через нестандартный порт: Изменение порта SSH в конфигурационном файле
/etc/ssh/sshd_configи настройка клиента на новый порт. Пример:Port 2222. Это снижает риск автоматических атак на стандартный порт. - VPN-соединение: Настройка VPN на сервере позволяет получать доступ к внутренней сети и SSH через защищённый туннель. Рекомендуется использовать протоколы OpenVPN или WireGuard с сильным шифрованием.
- Консоль облачного провайдера: Если сервер размещён в облаке, большинство провайдеров предоставляют веб-консоль или консоль через API. Доступ через неё возможен даже при недоступности SSH.
- Удалённое управление через IPMI или KVM: Для физических серверов использование IPMI, iLO или KVM-over-IP позволяет работать с сервером на уровне консоли, включая перезагрузку и восстановление настроек сети.
- Временное открытие порта через firewall: Если необходимо выполнить разовую задачу, можно временно разрешить доступ к порту SSH через iptables или firewalld, а затем снова закрыть.
Каждый из методов требует настройки и проверки безопасности. Использование VPN или консоли провайдера обеспечивает наибольшую защиту при сохранении возможности управления сервером после закрытия порта 22.
Вопрос-ответ:
Почему нужно закрывать порт 22 на сервере?
Порт 22 используется по умолчанию для SSH-подключений. Если его оставить открытым, злоумышленники могут пытаться подобрать пароли или использовать уязвимости для несанкционированного доступа. Закрытие порта ограничивает возможность внешних атак и повышает безопасность сервера.
Можно ли закрыть порт 22 и при этом продолжать подключаться к серверу?
Да, это возможно через настройку альтернативного порта для SSH или использование VPN. Например, можно изменить стандартный порт на другой и настроить клиентские программы на подключение к новому порту. Также можно использовать ключи аутентификации вместо пароля, что снижает риск взлома.
Как проверить, что порт 22 действительно закрыт?
Для проверки можно использовать команды типа netstat или ss на сервере, которые показывают открытые порты и активные подключения. С внешнего компьютера можно проверить доступность порта с помощью nmap или telnet. Если порт закрыт, соединение будет отклонено, а сканеры покажут, что порт недоступен.
Что безопаснее: полностью закрывать порт 22 или ограничивать доступ через firewall?
Ограничение доступа через firewall позволяет оставить порт открытым для доверенных IP-адресов, при этом блокируя все остальные подключения. Это удобнее для удалённого управления сервером с нескольких известных точек доступа. Полное закрытие порта повышает безопасность, но требует альтернативного способа подключения, иначе доступ к серверу будет невозможен.
