Как проверить открытые порты в Linux

Когда вы устраняете сетевые проблемы в Linux или улучшаете безопасность машины, важно знать, какие порты открыты и какие процессы их используют. В этой статье описаны способы просмотра открытых портов, рекомендации по аудиту и базовые приёмы повышения безопасности.
Что такое порт?
Порт — это 16‑битное число от 0 до 65535. Порт помогает идентифицировать приложение или процесс в операционной системе Linux/Unix. Один и тот же хост может обслуживать множество приложений, каждое из которых использует свой порт.
Категории портов:
- 0–1023 — Well Known Ports (системные)
- 1024–49151 — Registered Ports (зарегистрированные)
- 49152–65535 — Dynamic/Private (динамические)
Чтобы увидеть таблицу назначений портов, можно просмотреть файл services:
cat /etc/services
Краткие определения протоколов и сокетов:
- TCP — Transmission Control Protocol. Надёжный протокол с подтверждением доставки.
- UDP — User Datagram Protocol. Быстрее, без подтверждений и коррекции ошибок.
- Сокет — точка обмена данными между процессами, локально или по сети.
1. netstat — классика
Команда netstat даёт информацию о сокетах и портах. Один из распространённых вариантов:
netstat -atuФлаги:
- -a — показывает все сокеты
- -t — TCP
- -u — UDP
Чтобы увидеть имя процесса и PID, добавьте -p:
netstat -atup
Примеры фильтрации:
# Только UDP
netstat -vaun
# Только TCP
netstat -vatnВажно: на современных дистрибутивах netstat может отсутствовать в чистом виде; он входит в пакет net-tools.
2. lsof — какие файлы открыты
lsof показывает процессы, использующие сетевые ресурсы:
lsof -i
Полезные варианты:
# Только слушающие сокеты (LISTEN)
lsof -nP | grep LISTEN
# Все TCP соединения
lsof -i tcp
# Все UDP соединения
lsof -i udp3. nmap — внешний и внутренний сканер
nmap применяется для активного сканирования портов. Пример TCP‑сканирования localhost:
nmap -sT -O localhost
UDP‑сканирование (дольше и требует прав):
nmap -sU localhost
Важно: nmap — мощный инструмент. При сканировании чужих сетей следуйте законам и корпоративным правилам.
Альтернатива: ss и средства брандмауэра
ss — современная замена netstat. Быстро показывает сокеты:
ss -tulnГде флаги:
- -t — TCP
- -u — UDP
- -l — LISTEN (слушающие сокеты)
- -n — не разрешать имена (показывать номера портов)
Инструменты работы с брандмауэром:
- iptables / nftables — управление правилами сетевого фильтра
- firewall-cmd (firewalld) — удобный интерфейс для RHEL/CentOS/Fedora
Пример блокировки порта 8080 с помощью firewall-cmd:
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload(Для удаления используйте –remove-port.)
Практическое руководство: шаги аудита портов
- Соберите текущий список прослушивающих портов: ss -tuln и lsof -nP | grep LISTEN.
- Сопоставьте порты с процессами: netstat -atup или lsof -i.
- Оцените необходимость сервиса: если он не нужен — остановите и отключите автозапуск.
- Закройте порт в брандмауэре или ограничьте доступ IP‑фильтрами.
- Повторно просканируйте систему извне с nmap.
- Введите мониторинг и регламент обновлений.
Когда методы могут не сработать
- Контейнеры (Docker, podman) могут скрывать хостовые порты. Проверяйте порты внутри контейнера.
- Приложения, использующие сетевые неймспейсы, видны не всем инструментам.
- Если служба слушает только на localhost, внешний nmap её не найдёт.
- Фаервол может блокировать ответы, и nmap будет показывать порт как закрытый.
Критерии приёмки
- Все слушающие порты перечислены в одном из инструментов (ss, netstat, lsof).
- На каждый слушающий порт сопоставлен процесс и исполняемый файл.
- Неиспользуемые сервисы отключены и заблокированы брандмауэром.
- Внешний сканер (nmap) не показывает неожиданных открытых портов.
Чеклист по ролям
Администратор:
- Выполнить ss -tuln и lsof -nP | grep LISTEN
- Отключить/удалить ненужный сервис
- Настроить правила брандмауэра
Разработчик:
- Проверить, что сервис слушает на правильном интерфейсе
- Не запускать сервисы на привилегированных портах без необходимости
Инженер по безопасности:
- Провести внешнее сканирование nmap
- Провести контроль доступа и аудит логов
Практики безопасности
- Закрывайте ненужные порты через iptables/nftables или firewalld.
- Ограничьте доступ к сервисам по IP или VPN.
- Запускайте сервисы с минимальными правами.
- Используйте Fail2Ban или аналог для защиты от брутфорса.
- Применяйте SELinux/AppArmor для дополнительной изоляции.
Важно: Не просто закройте порт — убедитесь, что удалённый доступ действительно не нужен.
Факт‑бокс: ключевые номера портов
- 22 — SSH
- 80 — HTTP
- 443 — HTTPS
- 25 — SMTP
- 3306 — MySQL
Эти номера часто используются и обычно первыми проверяются при аудите.
Примеры команд‑шпаргалка
# Быстрый список слушающих портов
ss -tuln
# Посмотреть процессы, связанные с портами
netstat -atup
lsof -i
# Сканирование локального хоста (TCP)
nmap -sT localhost
# Сканирование UDP (медленнее)
nmap -sU localhostЗаключение
Проверка открытых портов — обязательная часть сетевого аудита и обеспечения безопасности. Используйте сочетание инструментов: ss/netstat и lsof для локального просмотра, nmap для внешней проверки. После обнаружения ненужных портов — отключите сервис, закройте порт в брандмауэре и внедрите мониторинг.
Краткие шаги: собрать список портов, сопоставить процессы, оценить необходимость сервисов, закрыть и повторно проверить.
Похожие материалы
Запись экрана iPhone: как включить и использовать
Perl на IIS 7 — Windows Server 2008
Удаление вокала в Audacity
План электропитания Windows 11 постоянно меняется — что делать
Рип DVD на жёсткий диск и воспроизведение