Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 6 Oct 2017 23:31:09 -0700
From:      Doug Hardie <bc979@lafn.org>
To:        Dave Horsfall <dave@horsfall.org>
Cc:        FreeBSD PF List <freebsd-pf@freebsd.org>
Subject:   Re: Rate-limiting in PF
Message-ID:  <ECE71287-0D34-4379-A3FC-E596AFF8A827@mail.sermon-archive.info>
In-Reply-To: <alpine.BSF.2.21.1710071632520.876@aneurin.horsfall.org>
References:  <alpine.BSF.2.21.1710010949380.73049@aneurin.horsfall.org> <alpine.BSF.2.21.1710050853400.73049@aneurin.horsfall.org> <3dc9c2a9-ae68-1e56-d2b1-12530772690f@unsane.co.uk> <alpine.BSF.2.21.1710051116480.73049@aneurin.horsfall.org> <alpine.BSF.2.21.1710071632520.876@aneurin.horsfall.org>

next in thread | previous in thread | raw e-mail | index | archive | help

> On 6 October 2017, at 22:51, Dave Horsfall <dave@horsfall.org> wrote:
>=20
> On Thu, 5 Oct 2017, Dave Horsfall wrote:
>=20
>>> is anything added to the table (pfctl -t woodpeckers -T show)
>>=20
>> I have lots of them because I've been adding them by hand, but this =
time I'll hold back and observe, just to be sure.
>=20
> No, they are not being added; here's an extract from the mail log:
>=20
> Oct  7 15:21:28 aneurin sm-mta[6908]: v974LI1n006908: [37.49.224.104] =
did not issue MAIL/EXPN/VRFY/ETRN during connection to IPv4
> Oct  7 15:21:48 aneurin sm-mta[6909]: v974Lcwj006909: [37.49.224.104] =
did not issue MAIL/EXPN/VRFY/ETRN during connection to IPv4
> Oct  7 15:21:59 aneurin sm-mta[6910]: v974LnTe006910: [37.49.224.104] =
did not issue MAIL/EXPN/VRFY/ETRN during connection to IPv4
> Oct  7 15:22:13 aneurin sm-mta[6923]: v974M2QU006923: [37.49.224.104] =
did not issue MAIL/EXPN/VRFY/ETRN during connection to IPv4
> Oct  7 15:22:24 aneurin sm-mta[6924]: v974MGKm006924: [37.49.224.104] =
did not issue MAIL/EXPN/VRFY/ETRN during connection to IPv4
> Oct  7 15:22:35 aneurin sm-mta[6925]: v974MOQW006925: [37.49.224.104] =
did not issue MAIL/EXPN/VRFY/ETRN during connection to IPv4
> Oct  7 15:22:45 aneurin sm-mta[6926]: v974MZOZ006926: [37.49.224.104] =
did not issue MAIL/EXPN/VRFY/ETRN during connection to IPv4
> Oct  7 15:22:56 aneurin sm-mta[6927]: v974MkO2006927: [37.49.224.104] =
did not issue MAIL/EXPN/VRFY/ETRN during connection to IPv4
> Oct  7 15:23:07 aneurin sm-mta[6928]: v974MvjQ006928: [37.49.224.104] =
did not issue MAIL/EXPN/VRFY/ETRN during connection to IPv4
> Oct  7 15:23:18 aneurin sm-mta[6930]: v974N7c3006930: [37.49.224.104] =
did not issue MAIL/EXPN/VRFY/ETRN during connection to IPv4
> Oct  7 15:23:38 aneurin sm-mta[6931]: v974NRZM006931: [37.49.224.104] =
did not issue MAIL/EXPN/VRFY/ETRN during connection to IPv4
> Oct  7 15:23:49 aneurin sm-mta[6932]: v974NcYF006932: [37.49.224.104] =
did not issue MAIL/EXPN/VRFY/ETRN during connection to IPv4
>=20
> "pfctl -t woodpeckers -T show | grep 37.49.224.104" is empty.
>=20
> But wait...
>=20
> It looks for all the world like they are deliberately stopping after =
5/m without getting blocked, waiting a bit, then starting up again...  =
Either that, or the block is not "sticking" for some reason.
>=20
> Hence my question: can anyone state unequivocally that the rate =
limiting does indeed work (pref. with proof) and that I am doing =
something subtly wrong, and if so what is it?
>=20
> In the meantime, I've enabled logging on the rate-limited packets, to =
see if that sheds a little more light.
>=20
> If/when confirmed as a PF bug I'll report it accordingly, as I prefer =
to eliminate my own stupidity first :-)

mail# pfctl -Ts -twoodpeckers
   54.218.78.120
   64.142.105.165
   67.231.156.214
   74.208.165.59
   117.92.178.86
   117.92.197.203
   169.232.46.186
   223.130.19.71
   223.240.208.137


Using the last entry as it was undoubtedly entered today:

mail# grep 223.240.208.137 maillog | grep " CONNECT"
Oct  6 22:22:06 mail postfix/postscreen[6784]: CONNECT from =
[223.240.208.137]:3583 to [10.0.1.230]:25
Oct  6 22:22:08 mail postfix/postscreen[6784]: CONNECT from =
[223.240.208.137]:2623 to [10.0.1.230]:25
Oct  6 22:22:36 mail postfix/postscreen[6784]: CONNECT from =
[223.240.208.137]:1571 to [10.0.1.230]:25
Oct  6 22:22:39 mail postfix/postscreen[6784]: CONNECT from =
[223.240.208.137]:1154 to [10.0.1.230]:25
Oct  6 22:22:42 mail postfix/postscreen[6784]: CONNECT from =
[223.240.208.137]:4433 to [10.0.1.230]:25
Oct  6 22:22:45 mail postfix/postscreen[6784]: CONNECT from =
[223.240.208.137]:1485 to [10.0.1.230]:25


mail# tcpdump -r pflog -ve host 223.240.208.137
reading from file pflog, link-type PFLOG (OpenBSD pflog file)
22:22:51.546323 rule 2/0(match): block in on bge0: (tos 0x0, ttl 112, id =
14786, offset 0, flags [none], proto TCP (6), length 40)
    223.240.208.137.4737 > mail.smtp: Flags [.], cksum 0x35b0 (correct), =
ack 2194297633, win 65535, length 0
22:22:54.554098 rule 2/0(match): block in on bge0: (tos 0x0, ttl 112, id =
53710, offset 0, flags [none], proto TCP (6), length 40)
    223.240.208.137.4737 > mail.smtp: Flags [.], cksum 0x35b0 (correct), =
ack 1, win 65535, length 0
22:22:57.636227 rule 2/0(match): block in on bge0: (tos 0x0, ttl 112, id =
30650, offset 0, flags [none], proto TCP (6), length 40)
    223.240.208.137.4737 > mail.smtp: Flags [.], cksum 0x35b0 (correct), =
ack 1, win 65535, length 0

The way I read this is that 223.240.208.137 tried 6 times in less than =
one minute.  It was added to woodpeckers around 22:22:45.  The next =
connection was after that at 22:22:51 and it was blocked by pf rule 2 =
which is:

block drop in log quick on bge0 from <woodpeckers> to any

Rule 3 is:
pass in inet proto tcp from any to any port =3D smtp flags S/SA keep =
state (source-track rule, max-src-conn 10, max-src-conn-rate 5/60, =
overload <woodpeckers> flush global, src.track 60)

This is on FreeBSD 11.1.

-- Doug





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?ECE71287-0D34-4379-A3FC-E596AFF8A827>