Открытый порт — порт, на котором приложение активно ожидает входящих подключений (состояние LISTEN). Это отличается от закрытого порта (хост отвечает RST) и фильтруемого порта (брандмауэр блокирует пакеты без ответа). Утилиты netstat, ss и nmap позволяют просматривать открытые порты.
Как работает
Приложение вызывает системные функции socket() → bind(port) → listen() — и порт переходит в состояние LISTEN. При попытке подключения ядро выполняет TCP three-way handshake (SYN → SYN-ACK → ACK) и передаёт соединение приложению.
Стандартные порты известных сервисов: 22 (SSH), 80 (HTTP), 443 (HTTPS), 3306 (MySQL), 5432 (PostgreSQL), 6379 (Redis), 27017 (MongoDB). Открытый порт 3306 из интернета без авторизации — критическая уязвимость: автоматические сканеры находят базы данных за секунды.
Команды: ss -tlnp — все LISTEN-порты TCP; nmap -sV 127.0.0.1 — локальные открытые порты с версиями сервисов; ufw status — правила файрвола Ubuntu. Проверить с внешней стороны: nmap -p 1-65535 <server-ip>.
История
Порты определены в RFC 793 (TCP, 1981) и RFC 768 (UDP, 1980). IANA ведёт реестр well-known портов с 1992 года. Port scanning как техника описан в середине 1990-х. Nmap выпущен в 1997 году Гордоном Лионом.
На что обращать внимание
Минимизируйте число открытых портов из интернета: каждый — потенциальная точка атаки. Стандартная практика для VPS: открыты только 22 (или нестандартный SSH), 80, 443. Базы данных, Redis и внутренние API — только на localhost или приватной сети. Используйте UFW или iptables для ограничения доступа.
Управление открытыми портами
Проверить изнутри: ss -tlnp (TCP listening). Проверить снаружи: nmap -p 1-65535 IP. Принцип минимума: открыты только порты работающих сервисов. SSH (22), HTTP (80), HTTPS (443) — минимум для веб-сервера.
Безопасность открытых портов
Для SSH: смените порт с 22 на нестандартный, настройте Fail2ban, используйте ключевую авторизацию. Порты баз данных (3306 MySQL, 5432 PostgreSQL) не должны быть открыты в интернет.
Firewall и управление портами
UFW: ufw allow 443/tcp, ufw deny 3306. iptables — низкоуровневый инструмент. nftables — замена iptables в Debian 10+ и Ubuntu 20.10+. CSF Firewall — популярное решение для управляемых серверов.
Ephemeral порты
Клиентские соединения используют случайный ephemeral порт (32768–60999 по умолчанию в Linux). При тысячах одновременных соединений с одного IP (NAT) ephemeral порты заканчиваются. sysctl net.ipv4.ip_local_port_range = "1024 65535" — расширение диапазона. Актуально для прокси-серверов и нагрузочного тестирования.
Проверка портов изнутри и снаружи
Изнутри: ss -tlnp (listening TCP), ss -ulnp (UDP). nmap сканирование с внешнего IP: nmap -sV -O TARGET_IP. Разница: сервис может быть открыт изнутри, но закрыт фаерволом снаружи. Оба теста нужны для полноты картины безопасности.