Безопасность сетевых протоколов: уязвимости TCP/IP и защита инфраструктуры | AdminWiki

Безопасность сетевых протоколов: уязвимости TCP/IP и защита инфраструктуры

10 сентября 2026 12 мин. чтения

Безопасность сетевых протоколов строится на четырех базовых мерах: проверке источника трафика, фильтрации соединений, шифровании каналов и постоянном мониторинге. IP-spoofing закрывают фильтрацией адресов и обратной проверкой маршрута, MITM-атаки снижают с помощью TLS и WireGuard, SYN-flood ограничивают на уровне ядра, межсетевого экрана и провайдера, а DNS poisoning предотвращают проверкой DNSSEC и защитой рекурсивных серверов.

Основные риски стека TCP/IP связаны с тем, что отдельные протоколы не проверяют подлинность всех полей пакета. IPv4 позволяет подменить исходный адрес, UDP не устанавливает соединение перед передачей данных, DNS без проверки подписей может принять ложный ответ, а TCP-сервер способен расходовать память на большое число незавершенных рукопожатий.

Практический базовый набор для сервера включает iptables или nftables с политикой запрета по умолчанию, ACL на маршрутизаторах и балансировщиках, административный VPN на базе WireGuard, TLS для прикладных сервисов, SSH с ключевой аутентификацией, ограниченную рекурсию DNS и сбор журналов. Правила нужно проверять на тестовом узле или через консоль провайдера, иначе ошибка в ACL может закрыть доступ к серверу.

Ниже приведена последовательность проверки, которую можно применять к Linux-серверам, виртуальным машинам, сетевому оборудованию, Kubernetes-узлам и внутренним сервисам. Команды требуют адаптации под интерфейсы, подсети и используемый менеджер сети.

отзывы зрителей

Для сетевой защиты субъективных отзывов недостаточно. Качество конфигурации проверяют измеряемыми признаками: списком слушающих портов, счетчиками правил, количеством соединений в состоянии SYN-RECV, результатами DNS-запросов и событиями аутентификации.

  • ss -lntup показывает TCP- и UDP-сервисы, которые слушают локальные адреса.
  • nft list ruleset выводит активные таблицы, цепочки, счетчики и политики фильтрации.
  • iptables -L -n -v помогает увидеть, какие правила реально получают пакеты.
  • ss -ant state syn-recv показывает число незавершенных TCP-рукопожатий.
  • dig +dnssec A app.corp.lan @10.20.0.53 позволяет проверить ответ DNS и наличие признаков валидации.
  • journalctl -u ssh --since '1 hour ago' помогает найти подбор паролей, входы с новых адресов и ошибки ключевой аутентификации.

Аудит следует повторять после каждого изменения внешнего периметра. Запись правила в конфигурационный файл не доказывает, что оно загружено в ядро: это подтверждают счетчик пакетов, тестовое соединение и запись в журнале.

Атака титанов (2013-2023): новости >>

В сетевом контексте угрозы удобно разделять по механизму атаки. Это помогает выбрать конкретную защиту и не пытаться закрыть все риски одним файрволом.

УгрозаМеханизмПризнакиБазовая защита
IP-spoofingПодмена исходного IPv4-адреса в пакетеЧастные или зарезервированные адреса на внешнем интерфейсе, асимметричные ответы, отраженный трафикIngress и egress ACL, фильтрация RFC 1918 на внешнем интерфейсе, rp_filter с учетом маршрутизации
MITM, атака человека посерединеПерехват или изменение трафика между двумя узламиПредупреждение о сертификате, смена MAC-адреса шлюза, новый SSH fingerprint, неожиданный проксиTLS с проверкой сертификата, WireGuard, защищенная сеть управления, контроль ARP и NDP
SYN-floodМассовая отправка SYN без завершения рукопожатияРост SYN-RECV, заполнение backlog, задержки новых подключенийSYN cookies, лимиты на новые соединения, ACL, upstream-фильтрация и защита от DDoS
DNS poisoningПодмена ответа DNS в кэше или на пути к резолверуРазные ответы для одного имени, неожиданный TTL, ошибка DNSSEC, подмена адреса сервисаDNSSEC validation, закрытая рекурсия, сегментация DNS и контроль авторитетных зон

IP-spoofing защита должна работать на границе сети. Сервер не может надежно определить, кто физически отправил пакет с подмененным адресом, поэтому проверку источника выполняют на маршрутизаторе, облачном шлюзе или межсетевом экране. Для исходящего трафика разрешают только адреса, принадлежащие конкретному интерфейсу или VLAN.

MITM появляется при контроле канала, шлюза, точки доступа, прокси или доверенного центра сертификации. Шифрование без проверки идентичности узла не решает проблему: зашифрованный канал может вести к подмененному endpoint. TLS-клиент должен проверять имя, срок действия и цепочку сертификата, а WireGuard должен использовать заранее проверенные публичные ключи пиров.

SYN-flood атака создает нагрузку еще до запуска прикладного кода. Для публичного сервиса одного правила iptables недостаточно: трафик может заполнить канал раньше, чем попадет на сервер. Практические уровни защиты разобраны в сравнении методов защиты от DDoS-атак.

Что такое паническая атака и чем она отличается от сильной тревоги

При анализе сетевого инцидента нужно отделять краткий всплеск от устойчивого нарушения. Один пик загрузки CPU еще не доказывает атаку, как и единичная ошибка DNS не доказывает poisoning. Нужны временная шкала, базовая линия и сопоставление событий на нескольких узлах.

Для каждого публичного сервиса зафиксируйте нормальные значения:

  • число новых TCP-соединений в секунду;
  • долю соединений, завершивших TLS handshake;
  • количество ответов DNS с кодами NOERROR, SERVFAIL и NXDOMAIN;
  • среднее и пиковое число активных SSH-сессий;
  • объем входящего и исходящего трафика по интерфейсам;
  • число срабатываний ACL и правил ограничения скорости.

Сильная нагрузка обычно меняет несколько показателей одновременно: растет число полуоткрытых TCP-соединений, увеличивается длина очереди, появляются retransmit, а пользователи получают тайм-ауты. Локальная проблема сервиса чаще затрагивает один порт или один процесс, тогда как сетевой инцидент проявляется на нескольких узлах и направлениях.

Что происходит с телом во время панической атаки

Для сетевого администратора аналогичный вопрос звучит так: что происходит с узлом во время атаки? При SYN-flood ядро создает записи о неполных соединениях, тратит память на очереди и отвечает на повторные пакеты. При переполнении backlog новые легитимные клиенты получают задержку или отказ.

При MITM прикладной сервис может продолжать работать, но данные проходят через промежуточный узел. Поэтому проверка доступности недостаточна. Нужны контроль сертификата, проверка SSH fingerprint, сравнение ARP-таблиц и анализ маршрута. Команда ping подтверждает доступность адреса, но не подлинность конечного узла.

При DNS poisoning приложение получает корректный с точки зрения формата ответ, однако адрес ведет на неправильный сервер. Пользователь видит рабочее соединение с подмененной системой. DNSSEC проверяет криптографическую подпись данных, но не шифрует запрос и не защищает от компрометации самого авторитетного сервера. Для внутренней сети нужны отдельные ACL, контроль зон и ограничение рекурсии.

При IP-spoofing серверная статистика может содержать адреса, которые невозможно использовать для обратного соединения. TCP с подмененным источником часто не завершает handshake, а UDP-сервис может принять пакет без предварительной проверки. Поэтому UDP-эндпоинты требуют отдельной аутентификации на уровне приложения.

Что делать во время приступа: 4 эффективных шага

1. Зафиксировать активную поверхность

Сначала соберите список интерфейсов, маршрутов, открытых портов, разрешенных источников и публичных DNS-записей. Не меняйте правила вслепую на единственном удаленном сервере. Сохраните конфигурацию и подготовьте доступ через консоль, второй канал управления или заранее проверенный VPN.

ip -br addr
ip route
ss -lntup
nft list ruleset > /root/nft-ruleset.backup
journalctl --since '30 minutes ago' > /root/security-events.log

Сопоставьте вывод с ожидаемой схемой. Если SSH слушает на 0.0.0.0:22, а доступ нужен из одной подсети управления, сначала добавьте ACL для этой подсети, затем ограничьте bind-адрес и внешний периметр.

2. Включить фильтрацию с минимально необходимыми разрешениями

Политика по умолчанию должна запрещать входящий трафик, разрешая established-соединения, loopback, управление из доверенной сети и опубликованные сервисы. Для IPv4 включите защиту от адресов, которые не должны приходить с конкретного интерфейса. Исключения нужны для балансировщиков, контейнерных сетей и асимметричных маршрутов.

table inet filter {
    chain input {
        type filter hook input priority filter; policy drop;
        ct state established,related accept
        iif 'lo' accept
        ip saddr 10.20.0.0/16 tcp dport 22 accept
        tcp dport { 80, 443 } accept
        ip protocol icmp accept
        counter drop
    }
}

Пример для iptables:

iptables-save > /root/iptables.backup
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -s 10.20.0.0/16 --dport 22 -m conntrack --ctstate NEW -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
iptables -A INPUT -j DROP

Не запускайте независимые наборы правил iptables и nftables без понимания того, какие цепочки и hooks задействованы в конкретной системе. После изменения проверьте доступ к SSH, HTTP, DNS и служебным портам из разрешенных и запрещенных подсетей.

Для блокировки отдельных адресов и подсетей используйте счетчики, временные наборы и автоматическое истечение правил. Готовые варианты для iptables, nftables, Mikrotik, Nginx, fail2ban и CrowdSec собраны в руководстве по блокировке IP-адресов и автоматизации защиты.

3. Защитить каналы управления и приложения

SSH должен быть доступен через VPN или ACL, а для входа используйте ключи с passphrase. Базовые параметры сервера могут выглядеть так:

PasswordAuthentication no
PermitRootLogin no
MaxAuthTries 3
AllowGroups ssh-admin

Перед перезапуском SSH проверьте конфигурацию командой sshd -t и сохраните активную сессию до успешного тестового входа. Для TLS отключите незашищенные endpoints, включите проверку сертификата на клиентах и разделите сертификаты для публичных и внутренних имен.

WireGuard подходит для административного доступа, связи площадок и приватных сервисов. В конфигурации каждого пира задавайте узкие AllowedIPs, ограничивайте UDP-порт на периметре и меняйте ключи при увольнении сотрудника, компрометации устройства или смене роли. VPN не заменяет ACL: подключенный узел все равно должен получать доступ только к нужным подсетям и портам.

4. Включить наблюдение и проверку восстановления

Собирайте firewall counters, системные журналы, события SSH, изменения DNS и метрики TCP. Синхронизация времени через надежные внутренние NTP-серверы нужна для корректной временной шкалы. Без нее трудно связать запись на маршрутизаторе с событием на сервере.

Проведите тест отказа: заблокируйте один разрешенный порт в тестовой среде, проверьте срабатывание оповещения, откатите изменение и убедитесь, что сервис восстановился. Для публичного приложения отдельно проверьте сценарии роста SYN-очереди и потери DNS-резолвера.

Когда стоит насторожиться

Ниже перечислены признаки, которые требуют проверки, а не автоматического вывода о компрометации:

  • на внешнем интерфейсе появляются источники из приватных, loopback или multicast-подсетей;
  • число соединений SYN-RECV в несколько раз превышает обычную базовую линию;
  • растут retransmit и задержка handshake, хотя загрузка прикладного процесса остается низкой;
  • один домен возвращает разные адреса через разные резолверы;
  • DNSSEC-проверка возвращает bogus или SERVFAIL после изменения зоны;
  • SSH показывает попытки входа с адресов и в часы, которые не соответствуют рабочей активности;
  • клиенты получают предупреждение о TLS-сертификате после изменения маршрута или прокси;
  • MAC-адрес шлюза меняется без запланированного переключения оборудования.
ss -ant state syn-recv | wc -l
nft list chain inet filter input
tcpdump -ni any 'tcp[tcpflags] & tcp-syn != 0'
dig +dnssec A api.corp.lan @10.20.0.53
ip neigh show

Порог тревоги задают по собственной статистике. Для одного небольшого сервиса 500 незавершенных соединений за минуту может быть критическим уровнем, а для крупного балансировщика это штатная нагрузка. Фиксированный порог без базовой линии даст много ложных срабатываний.

Когда это повод пойти к врачу

Для инфраструктуры аналогом срочного обращения за помощью служит подтвержденная цепочка атаки: несанкционированный доступ, успешная подмена DNS, утечка ключа WireGuard или SSH, массовый SYN-flood с заполнением канала, изменение правил на маршрутизаторе. При таких признаках действуйте по плану реагирования.

  1. Ограничьте источник атаки на внешнем фильтре, сохранив копию правила и время изменения.
  2. Изолируйте скомпрометированный узел от доверенных сегментов, но не удаляйте его сразу.
  3. Сохраните логи, дампы сетевых соединений, таблицы маршрутов и активные правила.
  4. Отзовите скомпрометированные SSH-ключи, VPN-ключи, токены и учетные записи.
  5. Проверьте DNS-зоны, сертификаты, cron-задачи, systemd units и новые сетевые сервисы.
  6. Восстановите систему из проверенного состояния и повторите аудит после возврата в сеть.

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

Если это повторяется: что помогает системно

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

Сегментация и ACL

Разделите пользовательскую, серверную, резервную, управляющую и гостевую сети. ACL описывают конкретные потоки: источник, назначение, порт, протокол и направление. Правило вида «разрешить весь трафик из офисной сети» затрудняет расследование и увеличивает радиус компрометации.

Для Kubernetes проверьте RBAC, доступ к API, секреты, сетевые политики, права контейнеров и защиту узлов. Порядок проверки результатов аудита Kubernetes собран в практическом руководстве по аудиту кластеров и контейнерной инфраструктуры.

Защита ядра и сетевых интерфейсов

Для типового Linux-сервера можно проверить следующие параметры:

sysctl -w net.ipv4.tcp_syncookies=1
sysctl -w net.ipv4.conf.all.rp_filter=1
sysctl -w net.ipv4.conf.all.accept_source_route=0
sysctl -w net.ipv4.conf.all.accept_redirects=0

rp_filter проверяет обратный маршрут, но строгий режим может ломать асимметричную маршрутизацию, policy routing, некоторые VPN-схемы и контейнерные сети. Сначала проверьте таблицы маршрутов и тестовый трафик. Для IPv6 настройте отдельные правила: IPv4-параметры не защищают IPv6 автоматически.

DNS и прикладные протоколы

Рекурсивный резолвер должен принимать запросы от известных сетей, ограничивать размер кэша и журналировать необычные ответы. Авторитетные зоны защищают DNSSEC, строгий контроль изменений и резервные копии. Внутренние имена лучше обслуживать отдельной зоной с ACL, а публичные записи менять через процесс с проверкой и откатом.

HTTP-сервисы публикуйте через TLS, SSH ограничивайте управляющей сетью, а чувствительные API защищайте взаимной аутентификацией или короткоживущими токенами. Секреты не должны храниться в командной строке, открытых конфигурациях контейнеров и публичных репозиториях.

Регулярная проверка

Раз в месяц сверяйте открытые порты, ACL, сертификаты, DNS-зоны, ключи доступа и правила egress. После обновления ядра, сетевого агента, контейнерного runtime или VPN повторяйте функциональные тесты. Для отдельного изолированного стенда подойдет облачная VDS с управляемыми ресурсами, например Timeweb Cloud. Тестовый стенд не должен иметь маршрута в продуктивную сеть без явного разрешения.

FAQ

Защищает ли iptables от IP-spoofing?

iptables может отбрасывать запрещенные источники и проверять состояние соединения, но надежная защита начинается на границе сети. Настройте ingress ACL на маршрутизаторе, запретите приватные адреса на внешнем интерфейсе и добавьте egress-фильтрацию. Для сложной маршрутизации проверьте совместимость rp_filter с реальными обратными маршрутами.

Что выбрать, iptables или nftables?

nftables дает единый синтаксис для IPv4, IPv6, ARP и bridge-фильтрации, поддерживает наборы адресов и удобные счетчики. iptables часто встречается в старых системах и автоматизации. Выбор зависит от дистрибутива и существующих инструментов. Смешивать правила без карты hooks и приоритетов рискованно.

Защищает ли WireGuard от MITM?

WireGuard аутентифицирует пиров по публичным ключам и шифрует трафик между ними. Защита не сработает при утечке приватного ключа, ошибочном AllowedIPs, компрометации endpoint или подмене конфигурации на самом устройстве. Ключи сверяйте по доверенному каналу, а доступ после подключения ограничивайте firewall и ACL.

Достаточно ли SYN cookies против SYN-flood?

Нет. SYN cookies помогают серверу пережить переполнение очереди незавершенных соединений, но не освобождают канал и CPU от всего входящего трафика. При большой атаке нужны rate limiting, фильтрация на маршрутизаторе и помощь провайдера или DDoS-сервиса.

Защищает ли DNSSEC от всех атак на DNS?

DNSSEC подтверждает целостность подписанных данных и подлинность зоны. Он не шифрует запросы, не закрывает взлом авторитетного сервера и не заменяет ACL для рекурсивного резолвера. Контролируйте ключи, сроки подписей, делегирование и результат validation на клиентах.

Какие журналы нужны для расследования?

Минимальный набор включает firewall counters, системный журнал, события SSH, DNS-запросы, изменения маршрутов, TLS-ошибки и метрики интерфейсов. Логи отправляйте на отдельный сервер, ограничьте доступ к ним и синхронизируйте время. Храните записи дольше обычного окна обнаружения инцидентов.

Главное

  1. Составьте карту интерфейсов, маршрутов, портов и потоков данных.
  2. Закройте входящий трафик по умолчанию и разрешите конкретные источники.
  3. Настройте ingress и egress-фильтрацию для защиты от IP-spoofing.
  4. Разделите пользовательскую, серверную, управляющую и резервную сети.
  5. Ограничьте SYN-нагрузку на сервере и подготовьте upstream-защиту от DDoS.
  6. Перенесите SSH и панели управления в WireGuard или отдельную сеть управления.
  7. Используйте TLS с проверкой сертификатов и SSH с ключевой аутентификацией.
  8. Закройте публичную рекурсию DNS и включите DNSSEC validation там, где это поддерживается.
  9. Собирайте журналы, счетчики firewall, DNS-события и метрики TCP в единую систему.
  10. Проверяйте правила после изменений и регулярно тестируйте откат и восстановление.

Такой порядок снижает вероятность успешного MITM, ограничивает последствия IP-spoofing, помогает пережить SYN-flood и обнаруживает DNS poisoning раньше, чем подмена затронет пользователей. Начинайте с инвентаризации и ACL, затем добавляйте шифрование, сегментацию, мониторинг и регулярные контрольные проверки.

Поделиться:
Сохранить гайд? В закладки браузера