Различия между iptables и обработкой ip6tables пакетов

Я рассмотрел множество netfilter, iptables, и ip6tables ресурсы. Я искал Google, включая веб-сайты StackExchange для получения информации, и, я не могу найти легкие или четкие ссылки на информацию относительно различий между тем, как iptables и ip6tables обрабатывают пакеты.

Вот является мой стандарт iptables правилами:

* filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --sport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 22 -m state --state ESTABLISHED -j ACCEPT

Подобные правила также на месте и для входящего и исходящего HTTP, и для разрешения DNS, а также основного ICMP (v4 0, 3, 8, 11, 12).

Когда я использую ip6tables для помещения тех же правил на месте, мой ответ сервера и на HTTP, соединения SSH и на ICMP с "хостом снижаются".

Я могу установить предварительные правила к:

-P INPUT ACCEPT
-P OUTPUT ACCEPT

И это открывает сервер назад снова. Но это не фильтрует пакеты (произвольные правила для всех пакетов, меньше ВПЕРЕД).

Я попытался добавить:

-A INPUT -i eth0 -j DROP

Но, снова, это начинает вызывать проблемы.

Дважды и трижды сверился с telnet среди другой пакетной проверки (журналы сервера просто отбрасывают соединения, если ОТБРАСЫВАНИЕ используется, то же для ОТКЛОНЕНИЯ).

С другой стороны, я также видел наборы правила, которые просты, ПРИНИМАЮТ (все) с dport и спортивными диапазонами за исключением необходимых правил.

Короче говоря я привык к типичному iptables (ipv4) правила, которые ОТБРАСЫВАЮТ все, кроме следующих правил.

Идеально, я ищу ссылки или информацию, которые предоставляют всестороннюю, подробную техническую информацию о различиях между тем, как iptables и процесс ip6tables (и отбрасывают или принимают), пакеты по-другому.

Казалось бы, что ip6tables ОТБРОСИТ все произвольно, если они будут основными первичными правилами, НО, то, где не принятый в первом подшипнике, последнее правило я попытался ОТБРОСИТЬ весь интерфейс INPUT, продолжает вызывать проблемы (учитывая начальный подшипник, должен ПРИНЯТЬ, но некуда пойти).

FWIW: Это - Debian Jessie (v8) на dist-обновлении от Debian Wheezy (v7) на капельке DigitalOcean. Все остальное работает кошерный за исключением правил ip6tables (сервер становится недоступным к ipv6 ресурсам).

Исходный отправленный на StackOverflow, удаленном, копируют/вставляют здесь на ServerFault (предложил более релевантный).

0
задан 14 February 2015 в 07:15
2 ответа

Ваши правила отбрасывают ICMP. Это неверно как для IPv4, так и для IPv6, и это заметно нарушит обнаружение PMTU; однако большинство стеков IPv4 реализуют обходные пути для этого (очень распространенного) вида неправильной конфигурации. Однако для IPv6 многие вещи будут нарушены, в частности доступ с хостов Teredo.

Простым решением является добавление правил, разрешающих ICMP:

iptables -A INPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT
iptables -A FORWARD -p icmp -j ACCEPT

ip6tables -A INPUT -p icmpv6 -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 -j ACCEPT
ip6tables -A FORWARD -p icmpv6 -j ACCEPT

Потенциально более безопасным решением является разрешение только тех типов сообщений ICMP, которые являются необходимо для правильной работы, следуя рекомендациям RFC 4890 .

1
ответ дан 4 December 2019 в 17:02

Ответ таков, как Майкл Хэмптон сказал в комментариях ... Почти такая же проблема, как и :

Настройка правил Debian ip6tables для IPv6

Мои последние правила ip6tables следующие:

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -m state --state NEW -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 443 -m state --state NEW -j ACCEPT
-A INPUT -p ipv6-icmp -j ACCEPT
-A INPUT -j REJECT --reject-with icmp6-port-unreachable
-A FORWARD -j REJECT --reject-with icmp6-port-unreachable
COMMIT

Все это говорит:

  • ПРИНЯТЬ все.
  • ПРИНЯТЬ УСТАНОВЛЕННЫЕ И СВЯЗАННЫЕ подключения (следуя следующим 3 правилам порта ).
  • ПРИНЯТЬ соединения на портах назначения 22 (ssh), 80 (http), 443 (https)
  • ПРИНИМАТЬ любой тип ICMP ipv6 (отличный от v4)
  • ОТКЛОНЯТЬ любые другие входы
  • ОТКАЗАТЬ любые пересылки

И я могу использовать SSH через ipv6, и wget -6 http ...

В общем, формирование правил ip6tables немного отличается от правил iptables. Следующий шаг: проверьте, будет ли то же самое для iptables (v4), и сохраните все как можно более похожим. (Спасибо, Майкл.)

0
ответ дан 4 December 2019 в 17:02

Теги

Похожие вопросы