Почему UDP-порт 443 не принимает соединения, когда установлены правила iptables?

Вопрос или проблема

Почему UDP порт 443 не принимает соединения, когда установлены правила iptables?

Среда

  • Операционная система: Linux 6.8.0-47-generic #47-Ubuntu, aarch64
  • Облачная ВМ: Да (Hetzner)

Текущая конфигурация

Я пытаюсь настроить UDP связь на порту 443, но сталкиваюсь с проблемами, несмотря на то, что я настроил правила брандмауэра.

Принятые меры

  1. Добавил правила брандмауэра:

    sudo iptables -A INPUT -p udp --dport 443 -j ACCEPT
    sudo netfilter-persistent save
    
  2. Текущие правила iptables:

    # IPv4 правила
    iptables -L -v -n | grep 443
    35318 4093K f2b-nginx-limit-req  6    --  *      *       0.0.0.0/0            0.0.0.0/0            multiport dports 80,443
    210K   25M f2b-nginx-php-accessrules  6    --  *      *       0.0.0.0/0            0.0.0.0/0            multiport dports 80,443
    209K   25M f2b-wordpress  6    --  *      *       0.0.0.0/0            0.0.0.0/0            multiport dports 80,443
    209K   25M f2b-nginx-bad-request  6    --  *      *       0.0.0.0/0            0.0.0.0/0            multiport dports 80,443
    302 88281 ACCEPT     17   --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:443
    
    # IPv6 правила
    ip6tables -L -v -n | grep 443
    61618 9650K f2b-wordpress  6    --  *      *       ::/0                 ::/0                 multiport dports 80,443
    61600 9649K f2b-nginx-bad-request  6    --  *      *       ::/0                 ::/0                 multiport dports 80,443
    61600 9649K f2b-nginx-php-accessrules  6    --  *      *       ::/0                 ::/0                 multiport dports 80,443
    1467  316K ACCEPT     17   --  *      *       ::/0                 ::/0                 udp dpt:443
    
  3. Результаты сканирования порта:

    sudo nmap -sU -p 443 <server-ip>
    Начало Nmap 7.94SVN ( https://nmap.org ) в 2024-10-26 20:14 CEST
    Отчет о сканировании Nmap для <server-ip>
    Хост активен (0.0027s задержка).
    
    PORT      STATE          SERVICE
    443/udp   open|filtered  https
    
    Nmap завершен: 1 IP адрес (1 хост активен) просканирован за 0.49 секунды
    
  4. Попытка теста netcat:

    • Сторона сервера:
      sudo nc -lu 443
      
    • Сторона клиента:
      echo 'test' | nc -u <server-ip> 443
      

Проблема

Никакой трафик не проходит к прослушивающему процессу netcat, несмотря на то, что порт отображается как “open|filtered” в сканировании nmap.

Вопросы

  1. Почему порт может отображаться как “open|filtered”, а не однозначно “open”?
  2. Какие дополнительные настройки могут понадобиться для того, чтобы UDP трафик пошел через порт 443?
  3. Есть ли какие-либо диагностические шаги, которые я должен предпринять, чтобы выяснить, где блокируется трафик?

Что я уже проверил

  • Правила брандмауэра установлены и сохранены как для IPv4, так и для IPv6
  • Порт не заблокирован согласно nmap
  • Существует базовая связь между клиентом и сервером
  • Облачный брандмауэр Hetzner настроен на разрешение UDP порта 443
  • fail2ban имеет несколько правил для портов 80,443, но они, похоже, предназначены для TCP (связанные с nginx)

Дополнительная информация

Если кому-то нужны дополнительные сведения о моей конфигурации или дополнительная информация для отладки, пожалуйста, дайте мне знать.

Ответ или решение

Почему UDP порт 443 не принимает соединения при установленных правилах iptables?

Описание Проблемы

Ваша проблема заключается в том, что вы пытаетесь установить UDP-соединение на порту 443, но несмотря на наличие соответствующих правил в фильтре iptables, трафик не проходит. В данной ситуации вы столкнулись с тем, что при сканировании порта с использованием nmap он показывает состояние "open|filtered", что указывает на потенциальные проблемы с приемом UDP-трафика.

Причины, по которым порт показывает состояние "open|filtered"

  1. Фильтрация пакетов: Порт может быть определен как "filtered", если пакеты сбрасываются или игнорируются межсетевым экраном (firewall) или маршрутизатором. Это может происходить из-за правил iptables, настроенных на блокировку определенного трафика или отсутствие явного разрешения на UDP-проход на данном порту.

  2. Отсутствие активно работающего сервиса: Если служба, прослушивающая порт 443, неактивна или неправильно сконфигурирована, это также может привести к тому, что port scan обнаружит его как "filtered". Ваша команда nc -lu 443 должна быть запущена и слушать на порту 443, чтобы это работало как ожидается.

  3. Настройки облачного фаервола: Вы упомянули, что используете облачный фаервол Hetzner. Возможно, он еще не настроен должным образом на пропуск UDP-трафика на порту 443, даже если ваши локальные правила iptables настроены правильно.

Дополнительные настройки для обеспечения передачи UDP-трафика

  1. Проверьте настройки облачного фаервола: Убедитесь, что фаервол у вашего провайдера настроен для разрешения UDP-трафика на порту 443. Это требует отдельной конфигурации и может не зависеть от ваших локальных iptables.

  2. Настройка правил iptables: Возможно, хотя вы добавили правило на прием UDP-трафика, необходимо проверить, не блокируется ли этот трафик какими-либо другими правилами, находящимися выше в цепочке (chain). Например, если у вас есть правило, запрещающее все входящие соединения, оно должно быть ниже правила на разрешение.

  3. Логи iptables: Рассмотрите возможность добавления правил для логирования заблокированных пакетов. Это даст вам возможность видеть, какие пакеты блокируются. Вы можете добавить:

    sudo iptables -A INPUT -p udp --dport 443 -j LOG --log-prefix "UDP DROP: "

Рекомендации по диагностике

  1. Используйте утилиты для мониторинга сетевого трафика: Воспользуйтесь такими инструментами, как tcpdump, чтобы проверить, действительно ли пакеты приходят на ваш сервер:

    sudo tcpdump -i any udp port 443
  2. Тестирование между локальными хостами: Попробуйте запустить nc или аналогичную утилиту на другом сервере в той же сети (или VM), чтобы исключить проблемы с маршрутизацией между клиентом и сервером.

  3. Проверка наличия NAT: Если у вас включен NAT в вашей сети, убедитесь, что он настроен правильно, и пакеты не теряются из-за некорректной маршрутизации.

Заключение

Несмотря на то, что вы уже сделали много шагов для устранения проблемы с подключением UDP на порту 443, важно проверить все возможные узкие места, начиная с конфигурации iptables и заканчивая параметрами облачного фаервола. Регулярный мониторинг и анализ сетевого трафика помогут вам выявить проблему и оперативно ее устранить. Если вы не можете получить желаемые результаты, обратитесь за помощью к сообществу или техподдержке вашего облачного провайдера для дальнейшей диагностики.

Оцените материал
Добавить комментарий

Капча загружается...