nftables препятствует разрешению служб на IPv6

$ jq -r '.[] |
      [ "name:",.name ], [ "groups:",.grp[].name ]
      | @tsv' file.json
name:   cust1
groups: BA2     GA1     NA1     TR3     TS1

То есть дайте @tsvдва массива, один с именем, а другой с группами. Каждый массив станет отдельной строкой.

В случае, если массив grpможет быть пустым и вы хотите вместо него вставить -:

$ jq -r '.[] |
      [ "name:",.name ], [ "groups:", (.grp // [])[].name // "-" ]
      | @tsv' file.json
name:   cust1
groups: -

Операция x // yвозвращает x, если только xне дает nullили false, и в этом случае она возвращает y.

Это также будет обрабатывать случай, когда grpполностью отсутствует (а не просто пустой массив ).

1
17.06.2020, 00:46
2 ответа

Оказывается, правила, которые я разместил, не были виновниками, как я отметил в обновлении вопроса. Реальная проблема была связана с трафиком ICMP и, в частности, несколькими типами, связанными непосредственно с IPv6. Мои правила ICMP были...

add rule inet filter INPUT ct state new icmp type { echo-request, echo-reply } accept
add rule inet filter INPUT ct state new icmpv6 type { echo-request, echo-reply } accept

Но для правильной работы IPv6 требуется ряд Neighbor Discovery связанных правил(nd-*). Я включил их, а также несколько других типов, которые являются частью «хорошего сетевого гражданина». Те, которые, по моему мнению, были проблемой, на самом деле важны для смягчения атак и теперь работают нормально, когда я исправил свой ICMP-трафик.

Новые правила ICMP...

add rule inet filter INPUT ip protocol icmp icmp type { destination-unreachable, echo-reply, echo-request, source-quench, time-exceeded } accept
add rule inet filter INPUT ip6 nexthdr icmpv6 icmpv6 type { destination-unreachable, echo-reply, echo-request, nd-neighbor-solicit, nd-router-advert, nd-neighbor-advert, packet-too-big, parameter-problem, time-exceeded } accept

Первоначальные правила, которые, как мне казалось, были проблемой, на самом деле предназначены для смягчения злонамеренного поведения...

Атака XMAS Это правило предназначено для смягчения атаки XMAS или той, которая включает биты пакетов для всех типов tcp . tree", чтобы проанализировать небольшие различия в ответах ОС на такой запрос, чтобы определить дальнейшие пути атаки злоумышленника...

add rule inet filter INPUT tcp flags & (fin|syn|rst|psh|ack|urg) == fin|syn|rst|psh|ack|urg drop

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

add rule inet filter INPUT tcp flags & (fin|syn|rst|ack) != syn ct state new drop

Этот пост помог мне закрепиться и начать искать лучшее понимание.

Надеюсь, это поможет найти ответ для кого-то еще!:)

1
18.03.2021, 23:27

Вы можете упростить правила nftables. Вот мои, которые работают:

table inet Filter {
        chain Input {
                type filter hook input priority 0
                policy drop
                iif lo accept

                ct state established,related counter accept
                ct state invalid counter drop

                #Your other rules here

                # this rule exists to avoid junk in syslog
                ct state new tcp flags & (fin|syn|rst|ack) != syn counter drop
        }
}

Если вам не нужен counter, вы можете удалить его везде.

0
18.03.2021, 23:27

Теги

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