Порты: какие открыть и как проверить
Какие порты нужны типовым службам, как посмотреть, что слушает машина, как проверить доступность снаружи и что делать, если порт закрыт.
Обновлено 23 августа 2026 г.
Порт — это номер, по которому система понимает, какой службе отдать пришедшее подключение. Правило простое: открытым должно быть только то, чем вы действительно пользуетесь. Каждый лишний открытый порт — это ещё одна дверь, которую кто-то будет проверять на прочность.
Типовые номера
| Порт | Служба | Открывать наружу |
|---|---|---|
| 22 | SSH | Да, лучше с ограничением по адресу |
| 80 | HTTP | Да, если есть сайт |
| 443 | HTTPS | Да, если есть сайт |
| 25, 465, 587 | Почта | Входящие — только если сами держите почтовый сервер. Исходящие закрыты у нас и открываются по заявке |
| 3306 | MySQL | Нет, только локально |
| 5432 | PostgreSQL | Нет, только локально |
| 6379 | Redis | Нет, только локально |
| 27017 | MongoDB | Нет, только локально |
| 25565 | Minecraft | Да, если это игровой сервер |
Отдельно про почту: входящие соединения не ограничены, а исходящие на 25, 465 и 587 закрыты на стороне узла, пока вы не попросите их открыть. Правила внутри машины этого не меняют — подробности в статье Почтовый сервер: почему это сложно и что нужно учесть.
Базы данных наружу не публикуют почти никогда. Если доступ нужен вам с рабочего компьютера, правильный путь — туннель поверх SSH, а не открытый порт:
ssh -L 5432:127.0.0.1:5432 artem@<адрес>
Что слушает машина
ss -tulpn
ss -tlpn | grep 443
lsof -i -P -n | grep LISTEN
Смотрите на адрес перед номером порта. 127.0.0.1:5432 означает, что служба доступна только изнутри — снаружи её нет, сколько бы правил вы ни добавляли. 0.0.0.0:5432 — служба открыта всем сетевым интерфейсам, и её должен прикрывать брандмауэр.
Проверка снаружи
С вашего компьютера:
nc -vz <адрес> 443
curl -I http://<адрес>
Проверять пингом бессмысленно: ICMP и TCP — разные вещи, порт может работать при закрытом пинге и наоборот.
Порт закрыт: разбор по шагам
- Служба запущена?
systemctl status <служба> - Слушает нужный адрес?
ss -tulpn— не127.0.0.1 - Пропускает брандмауэр?
ufw status verboseилиnft list ruleset - Не мешает ли Docker? Проброшенные порты контейнеров обходят ufw
- Смотрите логи службы:
journalctl -u <служба> -n 50
Порядок именно такой: чаще всего проблема на втором шаге, а не в брандмауэре.
Сменить порт службы
Например, перенести SSH:
sed -i "s/^#\?Port 22/Port 2222/" /etc/ssh/sshd_config
ufw allow 2222/tcp
sshd -t
systemctl restart ssh
Проверьте вход на новый порт в отдельном окне, и только потом убирайте правило для 22. Подробности — укрепление SSH.
Частые ошибки
| Симптом | Причина | Решение |
|---|---|---|
Connection refused | Служба не запущена | systemctl status, смотреть логи |
Connection timed out | Пакет отбрасывается брандмауэром | Проверить правила |
| Работает локально, не работает снаружи | Привязка к 127.0.0.1 | Изменить адрес в конфиге |
Address already in use | Порт занят другой службой | ss -tulpn и остановить лишнее |
Открывайте порт только вместе с проверкой, кто на нём отвечает. Забытый порт от старого эксперимента — типичная точка входа при взломе, см. признаки взлома.