← Назад к вопросам

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

1.2 Junior🔥 221 комментариев
#Linux и администрирование#Сети и протоколы

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Просмотр открытых портов в 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-порты без ожидаемых сервисов

Важные соображения безопасности

  1. Привилегии: Для просмотра информации о процессах (-p флаг) обычно требуются права root
  2. Контекст: Учитывайте, что ss и netstat показывают состояние из ядра, а lsof - информацию о процессах
  3. Ограничения: Некоторые порты могут быть скрыты при использовании определенных методов (например, RAW сокеты)

Рекомендации для DevOps-инженеров

В производственной среде я рекомендую:

  • Использовать ss вместо netstat для производительности
  • Регулярно проверять открытые порты как часть процедур безопасности
  • Внедрять мониторинг изменений в конфигурации портов
  • Использовать фаерволы для ограничения неиспользуемых портов
  • Документировать все необходимые порты для каждого сервиса

Понимание состояния сетевых портов критически важно для поддержания безопасности и производительности Linux-систем, особенно в контейнеризированных и облачных средах, где сетевая изоляция является ключевым аспектом инфраструктуры.

Как посмотреть открытые порты в Linux | PrepBro