* Fwd: proper ICMPv6 syntax for specific daddr
[not found] <dea61421-4ce1-bb68-2a74-88b6f42c299e@foscore.com>
@ 2022-09-07 15:57 ` Tom
2022-09-08 8:46 ` Reindl Harald
2022-09-08 15:13 ` Fwd: " Pablo Neira Ayuso
0 siblings, 2 replies; 7+ messages in thread
From: Tom @ 2022-09-07 15:57 UTC (permalink / raw)
To: netfilter
On 2022-09-07 11:25, Pablo Neira Ayuso wrote:
> On Wed, Sep 07, 2022 at 11:22:24AM -0400, Tom wrote:
>> table ip6 filter {
>> set ping6 {
>> typeof ip6 daddr . meta l4proto
>> limit rate 5/second
>> elements = { xxxx:43:a:83::2 . ipv6-icmp limit rate 5/second,
>> xxxx:43:a:83::3 . ipv6-icmp limit rate 5/second,
>> xxxx:43:a:83::4 . ipv6-icmp limit rate 5/second }
>> }
>> chain input {
>> type filter hook input priority filter; policy drop;
>> ip6 daddr . meta l4proto @ping6 accept
>> }
>>
>> Is this OK?
>
> My recommendation is to use concatenations and sets, not to ratelimit
> _all_ icmpv6 traffic ;-)
Now I'm confused. I'd like to avoid ping floods if possible, but I can't seem to get the syntax right, so:
table ip6 filter {
set ping6 {
typeof ip6 daddr . meta l4proto
elements = { xxxx:43:a:83::2 . ipv6-icmp,
xxxx:43:a:83::3 . ipv6-icmp,
xxxx:43:a:83::4 . ipv6-icmp }
}
chain input {
type filter hook input priority filter; policy drop;
ip6 daddr . meta l4proto @ping6 accept
}
}
... will work for now. If anyone can show me the correct syntax to enable ping6 rate limiting without crippling icmpv6, please do!
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Fwd: proper ICMPv6 syntax for specific daddr
2022-09-07 15:57 ` Fwd: proper ICMPv6 syntax for specific daddr Tom
@ 2022-09-08 8:46 ` Reindl Harald
2022-09-08 13:31 ` Tom
2022-09-08 15:13 ` Fwd: " Pablo Neira Ayuso
1 sibling, 1 reply; 7+ messages in thread
From: Reindl Harald @ 2022-09-08 8:46 UTC (permalink / raw)
To: Tom, netfilter
Am 07.09.22 um 17:57 schrieb Tom:
> Now I'm confused. I'd like to avoid ping floods if possible
but that makes no sense when doing more harm than good - the knee-jerk
reaction kill all icmp is a problem for decades even on IPv4 but will no
longer work with IPv6
> but I can't
> seem to get the syntax right, so:
> enable ping6 rate limiting without crippling icmpv6, please do!
one of the responses contained "Please use 'icmpv6 type { echo-request,
echo-reply}'"
why do you make all that so complicated instead write a simple ratelimit
rule for ping apply to everyone and *before* have a set which ACCEPTs a
specific list of ip's if that's needed at all
"I'd like to avoid ping floods if possible" don't scale at all with a
manually maintained list of source ips and i can't think of anybody with
a justification of more than 5 pings per second
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: proper ICMPv6 syntax for specific daddr
2022-09-08 8:46 ` Reindl Harald
@ 2022-09-08 13:31 ` Tom
2022-09-08 14:23 ` Reindl Harald
0 siblings, 1 reply; 7+ messages in thread
From: Tom @ 2022-09-08 13:31 UTC (permalink / raw)
To: Reindl Harald; +Cc: netfilter
On 2022-09-08 04:46, Reindl Harald wrote:
> Am 07.09.22 um 17:57 schrieb Tom:
>> Now I'm confused. I'd like to avoid ping floods if possible
> but that makes no sense when doing more harm than good - the knee-jerk reaction kill all icmp is a problem for decades even on IPv4 but will no longer work with IPv6
Who said I wanted to kill all ICMP? Isn't it obvious that I'm trying to write a rule that allows it?
>> but I can't seem to get the syntax right, so:
>> enable ping6 rate limiting without crippling icmpv6, please do!
> one of the responses contained "Please use 'icmpv6 type { echo-request, echo-reply}'"
Yes I saw that. As I pointed out, I can't get the syntax right which specifies type in a set and also limits rates. That's why I dropped rate limits.
> why do you make all that so complicated instead write a simple ratelimit rule for ping apply to everyone and *before* have a set which ACCEPTs a specific list of ip's if that's needed at all
OK, sounds good. Perhaps you're under the mistaken impression I'm a NFT expert. Clearly I'm not. Perhaps you could suggest a resource where I might find examples which solve my problem. Better yet, you could provide a practical example. It would be appreciated.
> "I'd like to avoid ping floods if possible" don't scale at all with a manually maintained list of source ips and i can't think of anybody with a justification of more than 5 pings per second
Except they're not source IPs, They are destination IPs. The server has multiple IP addresses. I am not limiting which IPs can ping, I'm limiting which of the server IPs they can ping to.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: proper ICMPv6 syntax for specific daddr
2022-09-08 13:31 ` Tom
@ 2022-09-08 14:23 ` Reindl Harald
0 siblings, 0 replies; 7+ messages in thread
From: Reindl Harald @ 2022-09-08 14:23 UTC (permalink / raw)
To: Tom; +Cc: netfilter
Am 08.09.22 um 15:31 schrieb Tom:
> On 2022-09-08 04:46, Reindl Harald wrote:
>> why do you make all that so complicated instead write a simple
>> ratelimit rule for ping apply to everyone and *before* have a set
>> which ACCEPTs a specific list of ip's if that's needed at all
>
> OK, sounds good. Perhaps you're under the mistaken impression I'm a NFT
> expert. Clearly I'm not. Perhaps you could suggest a resource where I
> might find examples which solve my problem. Better yet, you could
> provide a practical example. It would be appreciated
in a rulset any rule which is final (DROP, JEJECT, ACCEPT) skips
anything below
so you have a chain where you send only ICMP, write first the specific
rules and at last one the "everything else" decision not matter if it's
ACCEPT/DROP/REJECT
i use iptables-nft because i hate the new syntax and have thousands of
lines in scripts for configure and dispaly status of rulesets - but the
principles are the same for every firewall
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Fwd: proper ICMPv6 syntax for specific daddr
2022-09-07 15:57 ` Fwd: proper ICMPv6 syntax for specific daddr Tom
2022-09-08 8:46 ` Reindl Harald
@ 2022-09-08 15:13 ` Pablo Neira Ayuso
2022-09-08 15:43 ` Tom
1 sibling, 1 reply; 7+ messages in thread
From: Pablo Neira Ayuso @ 2022-09-08 15:13 UTC (permalink / raw)
To: Tom; +Cc: netfilter
On Wed, Sep 07, 2022 at 11:57:16AM -0400, Tom wrote:
> On 2022-09-07 11:25, Pablo Neira Ayuso wrote:
> > On Wed, Sep 07, 2022 at 11:22:24AM -0400, Tom wrote:
> > > table ip6 filter {
> > > set ping6 {
> > > typeof ip6 daddr . meta l4proto
> > > limit rate 5/second
> > > elements = { xxxx:43:a:83::2 . ipv6-icmp limit rate 5/second,
> > > xxxx:43:a:83::3 . ipv6-icmp limit rate 5/second,
> > > xxxx:43:a:83::4 . ipv6-icmp limit rate 5/second }
> > > }
> > > chain input {
> > > type filter hook input priority filter; policy drop;
> > > ip6 daddr . meta l4proto @ping6 accept
> > > }
> > >
> > > Is this OK?
> >
> > My recommendation is to use concatenations and sets, not to ratelimit
> > _all_ icmpv6 traffic ;-)
>
> Now I'm confused. I'd like to avoid ping floods if possible, but I can't seem to get the syntax right, so:
> table ip6 filter {
> set ping6 {
> typeof ip6 daddr . meta l4proto
you removed the limit line in the set declaration ?
> elements = { xxxx:43:a:83::2 . ipv6-icmp,
> xxxx:43:a:83::3 . ipv6-icmp,
> xxxx:43:a:83::4 . ipv6-icmp }
> }
> chain input {
> type filter hook input priority filter; policy drop;
> ip6 daddr . meta l4proto @ping6 accept
> }
> }
If you would like to throttle icmpv6 echo-request, the::
table ip6 filter {
set ping6 {
typeof ip6 daddr . icmpv6 type
limit rate 5/second
elements = { aaaa:43:a:83::2 . echo-request,
aaaa:43:a:83::3 . echo-request,
aaaa:43:a:83::4 . echo-request }
}
chain input {
type filter hook input priority filter; policy drop;
ip6 daddr . icmpv6 type @ping6 accept
}
}
Please, see the wiki for more examples on concatenations and sets/maps.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Fwd: proper ICMPv6 syntax for specific daddr
2022-09-08 15:13 ` Fwd: " Pablo Neira Ayuso
@ 2022-09-08 15:43 ` Tom
2022-09-08 15:54 ` Pablo Neira Ayuso
0 siblings, 1 reply; 7+ messages in thread
From: Tom @ 2022-09-08 15:43 UTC (permalink / raw)
To: Pablo Neira Ayuso; +Cc: netfilter
On 2022-09-08 11:13, Pablo Neira Ayuso wrote:
> you removed the limit line in the set declaration ?
Yes, after I failed to get the right syntax to combine it with the ICMP type.
> If you would like to throttle icmpv6 echo-request, the::
>
> table ip6 filter {
> set ping6 {
> typeof ip6 daddr . icmpv6 type
> limit rate 5/second
> elements = { aaaa:43:a:83::2 . echo-request,
> aaaa:43:a:83::3 . echo-request,
> aaaa:43:a:83::4 . echo-request }
> }
> chain input {
> type filter hook input priority filter; policy drop;
> ip6 daddr . icmpv6 type @ping6 accept
> }
> }
Thanks. I wouldn't have found that syntax in a quintillion years.
> Please, see the wiki for more examples on concatenations and sets/maps.
I've gone through it. As someone who's been programming and configuring computers for over forty years, I can tell you that the wiki documentation is not good. It seems to be written by and for nft developers.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Fwd: proper ICMPv6 syntax for specific daddr
2022-09-08 15:43 ` Tom
@ 2022-09-08 15:54 ` Pablo Neira Ayuso
0 siblings, 0 replies; 7+ messages in thread
From: Pablo Neira Ayuso @ 2022-09-08 15:54 UTC (permalink / raw)
To: Tom; +Cc: netfilter
On Thu, Sep 08, 2022 at 11:43:01AM -0400, Tom wrote:
> On 2022-09-08 11:13, Pablo Neira Ayuso wrote:
> > you removed the limit line in the set declaration ?
>
> Yes, after I failed to get the right syntax to combine it with the ICMP type.
>
> > If you would like to throttle icmpv6 echo-request, the::
> >
> > table ip6 filter {
> > set ping6 {
> > typeof ip6 daddr . icmpv6 type
> > limit rate 5/second
> > elements = { aaaa:43:a:83::2 . echo-request,
> > aaaa:43:a:83::3 . echo-request,
> > aaaa:43:a:83::4 . echo-request }
> > }
> > chain input {
> > type filter hook input priority filter; policy drop;
> > ip6 daddr . icmpv6 type @ping6 accept
> > }
> > }
>
> Thanks. I wouldn't have found that syntax in a quintillion years.
It was the same as the example I posted, I just replaced 'meta l4proto' by
'icmpv6 type' ;-)
> > Please, see the wiki for more examples on concatenations and sets/maps.
>
> I've gone through it. As someone who's been programming and
> configuring computers for over forty years, I can tell you that the
> wiki documentation is not good. It seems to be written by and for
> nft developers.
Documentation can always be improved, it got better over time. We have
a good number of contributors that are not developers.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2022-09-08 15:54 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <dea61421-4ce1-bb68-2a74-88b6f42c299e@foscore.com>
2022-09-07 15:57 ` Fwd: proper ICMPv6 syntax for specific daddr Tom
2022-09-08 8:46 ` Reindl Harald
2022-09-08 13:31 ` Tom
2022-09-08 14:23 ` Reindl Harald
2022-09-08 15:13 ` Fwd: " Pablo Neira Ayuso
2022-09-08 15:43 ` Tom
2022-09-08 15:54 ` Pablo Neira Ayuso
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox