Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 17 Nov 2017 01:53:54 +1100 (EST)
From:      Ian Smith <smithi@nimnet.asn.au>
To:        Kurt Lidl <lidl@FreeBSD.org>
Cc:        Cos Chan <rosettas@gmail.com>, freebsd-questions <freebsd-questions@FreeBSD.org>, Michael Ross <gmx@ross.cx>
Subject:   Re: How to setup IPFW working with blacklistd
Message-ID:  <20171117005738.V72828@sola.nimnet.asn.au>
In-Reply-To: <e2fdef2f-b1d9-00e6-6ea9-0f1b8d4217ed@FreeBSD.org>
References:  <mailman.87.1509969603.28633.freebsd-questions@freebsd.org> <CAKV%2BxLCizjt5M%2BmJmTZj-cr=D6rhXRwDjCkE=6Q-VQX73iY%2B4A@mail.gmail.com> <20171107033226.M9710@sola.nimnet.asn.au> <CAKV%2BxLBWgU6zmc7tQNA=0%2B=2aF23C1QfJ2i3q1gKYDttwsCTkg@mail.gmail.com> <20171107162914.G9710@sola.nimnet.asn.au> <CAKV%2BxLDQQcG3bvo1b2nUAu7oOVhdNzDDrPWTVp2qOmkWVV89BQ@mail.gmail.com> <20171108012948.A9710@sola.nimnet.asn.au> <CAKV%2BxLCQ9NE6%2BEg6NvHZuEED8Cf6ZX74unvk9ajfLyG-yA2rXA@mail.gmail.com> <CAKV%2BxLAkfiQCLXfgZOtQGUXOW8gYN7sjOD5uWezv-N%2BTBjybMQ@mail.gmail.com> <20171111213759.I72828@sola.nimnet.asn.au> <CAKV%2BxLDicLze3Dvd2i7HGWJUxCdSLjvhuWWZUJ65pMi%2Bx483=A@mail.gmail.com> <CAKV%2BxLAt4Ciqmg2w1iJK42jq6f%2BnumASKMQ=UL6dT%2BCdGYujVQ@mail.gmail.com> <CAKV%2BxLD_KE938JnmjDE=CmfZ7bOJ1CaqvWuQ%2B0jDzQNWM%2B6yLg@mail.gmail.com> <20171115192830.R72828@sola.nimnet.asn.au> <CAKV%2BxLB99A8RxyWh5vCnGweOXrCjmPw5r34-tXj=hhJkKcz1=w@mail.gmail.com> <e2fdef2f-b1d9-00e6-6ea9-0f1b8d4217ed@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 15 Nov 2017 11:02:30 -0500, Kurt Lidl wrote:
 > On 11/15/17 6:46 AM, Cos Chan wrote:
 > 
 > > blacklistd.log:
 > > Nov 15 12:13:42 res blacklistd[22100]: blocked 132.148.128.234/32:22
 > > <http://132.148.128.234/32:22>; for -1 seconds
 > > Nov 15 12:15:40 res blacklistd[22100]: rule exists OK
 > > Nov 15 12:15:40 res blacklistd[22100]: blocked 132.148.128.234/32:22
 > > <http://132.148.128.234/32:22>; for -1 seconds
 > 
 > The "-1 seconds" looks fishy to me.
 > 
 > What is the /etc/blacklistd.conf on this machine?

Whether or not the first block succeeded, which if it had, should have 
precluded another one two minutes later .. just on this point:

-1 here means "never remove" ie duration='*', like nfail='*' is also set 
to -1 for 'never block'.  Noticed in ..

[ here /usr/head/src/contrib/blacklist/ ]
bin/blacklistd.c: update(void)
[..]
                if (c.c_duration == -1 || when >= ts.tv_sec)	<<<----
                        continue;
                if (dbi.id[0]) {
                        run_change("rem", &c, dbi.id, 0);
                        sockaddr_snprintf(buf, sizeof(buf), "%a", ss);
                        syslog(LOG_INFO, "released %s/%d:%d after %d seconds",
                            buf, c.c_lmask, c.c_port, c.c_duration);
                }
                state_del(state, &c);

One of the problems with blocklistd-helper is that return codes from it 
are mostly not checked, in some cases it's run as (void)run_change(..) 
so it's dependant on the helper script succeeding, and simply ignores
any indicated failure - except possibly for an add operation, where it 
returns -1 if it gets a NULL response (empty string I assume) otherwise 
it returns 0 after copying the output string to the id (here always OK) 
.. but it seems nothing cares about the return code eithe rway ..

A bit more about making the script more robust - and more informative 
for debugging, at least re ipfw - is slowly brewing, but I'm running out 
of spare time at the moment, and will have to quit digging this deep 
into code I'm unlikely ever to run myself :)

[ Cos, do you get any different behaviour if you set duration to some 
value other than '*'?  30d should be near enough forever for testing ]

cheers, Ian



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20171117005738.V72828>