Как посмотреть открытые порты в Linux
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Просмотр открытых портов в Linux
В Linux существует несколько мощных инструментов для анализа открытых портов и сетевых соединений. Эти методы позволяют администраторам диагностировать проблемы безопасности, настраивать службы и контролировать сетевую активность системы.
Основные команды и утилиты
1. ss (Socket Statistics)
Современная замена устаревшему netstat. Показывает более подробную информацию и работает быстрее.
# Показать все открытые порты (TCP и UDP)
ss -tuln
# Только TCP порты в состоянии LISTEN
ss -tln
# Только UDP порты
ss -uln
# Показать процессы, использующие порты
ss -tulnp
Ключи:
-t- TCP порты-u- UDP порты-l- только слушающие порты-n- числовые адреса (без DNS-разрешения)-p- показать процессы
2. netstat (Устаревший, но еще используется)
Классическая утилита, присутствующая в большинстве дистрибутивов.
# Все слушающие порты
netstat -tuln
# С именами служб
netstat -tulp
# Статистика по протоколам
netstat -s
3. lsof (List Open Files)
Универсальная команда для просмотра всех открытых файлов, включая сетевые сокеты.
# Все сетевые соединения
lsof -i
# Конкретный порт
lsof -i :80
# TCP соединения определенного процесса
lsof -i TCP -a -p 1234
Практические примеры использования
Поиск конкретного сервиса
# Найти, какой процесс использует порт 443
sudo ss -tlnp | grep :443
sudo lsof -i :443
Мониторинг в реальном времени
# Динамическое отслеживание соединений
watch -n 1 'ss -tun'
Проверка безопасности
# Проверить нестандартные открытые порты
ss -tuln | grep -E ":(1[0-9]{3}|[2-9][0-9]{3})"
Автоматизация проверки
Для регулярного мониторинга можно создать скрипт:
#!/bin/bash
# Скрипт мониторинга открытых портов
DATE=$(date '+%Y-%m-%d %H:%M:%S')
LOG_FILE="/var/log/port_monitor.log"
echo "=== Проверка портов от $DATE ===" | tee -a $LOG_FILE
echo "TCP порты:" | tee -a $LOG_FILE
ss -tln | tee -a $LOG_FILE
echo "UDP порты:" | tee -a $LOG_FILE
ss -uln | tee -a $LOG_FILE
Специализированные инструменты
nmap - для сканирования извне
# Сканирование локальной машины
nmap -sT -O localhost
# Проверка конкретного диапазона портов
nmap -p 1-1000 localhost
sockstat (в FreeBSD) или socklist
Альтернативные утилиты в некоторых дистрибутивах.
Анализ полученной информации
При просмотре открытых портов обращайте внимание на:
- Неожиданные порты в состоянии LISTEN
- Сервисы, слушающие на 0.0.0.0 (все интерфейсы) вместо 127.0.0.1
- Процессы, запущенные от нестандартных пользователей
- UDP-порты без ожидаемых сервисов
Важные соображения безопасности
- Привилегии: Для просмотра информации о процессах (
-pфлаг) обычно требуются права root - Контекст: Учитывайте, что
ssиnetstatпоказывают состояние из ядра, аlsof- информацию о процессах - Ограничения: Некоторые порты могут быть скрыты при использовании определенных методов (например, RAW сокеты)
Рекомендации для DevOps-инженеров
В производственной среде я рекомендую:
- Использовать
ssвместоnetstatдля производительности - Регулярно проверять открытые порты как часть процедур безопасности
- Внедрять мониторинг изменений в конфигурации портов
- Использовать фаерволы для ограничения неиспользуемых портов
- Документировать все необходимые порты для каждого сервиса
Понимание состояния сетевых портов критически важно для поддержания безопасности и производительности Linux-систем, особенно в контейнеризированных и облачных средах, где сетевая изоляция является ключевым аспектом инфраструктуры.