netfilter-devel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: xt_recent broken in kernel 3.19.0 + PATCH
       [not found] ` <20150211183121.6688aec8@bother.homenet>
@ 2015-02-12  3:15   ` Cong Wang
  2015-02-12  8:35     ` Florian Westphal
  0 siblings, 1 reply; 5+ messages in thread
From: Cong Wang @ 2015-02-12  3:15 UTC (permalink / raw)
  To: Chris Vine
  Cc: Linux Kernel Mailing List, netfilter-devel,
	Linux Kernel Network Developers

(Cc'ing netdev and netfilter-devel lists)

On Wed, Feb 11, 2015 at 10:31 AM, Chris Vine
<chris@cvine.freeserve.co.uk> wrote:
> On Wed, 11 Feb 2015 09:28:34 +0000
> Chris Vine <chris@cvine.freeserve.co.uk> wrote:
>> With kernel 3.19.0, the following iptables rule, where SSH_TRIES is
>> set to 4:
>>
>>   iptables -D SSH_CHAIN -m conntrack --ctstate NEW \
>>     -m recent --update --seconds $SSH_LOGIN_PERIOD --hitcount
>> $SSH_TRIES -j DROP
>>
>> generates this error message in syslog:
>>
>>   kernel: xt_recent: hitcount (4) is larger than packets to be
>>   remembered (4) for table DEFAULT
>>
>> and the rule fails to install in the table.  No error is generated
>> with kernel 3.18.6.
>
> The rule provoking this should of course have been the one appending
> the rule, which is:
>
>   iptables -A SSH_CHAIN -m conntrack --ctstate NEW \
>     -m recent --update --seconds $SSH_LOGIN_PERIOD --hitcount $SSH_TRIES -j DROP
>
> On looking at the code, the changes in the 3.19 kernel seem not to have
> been tested and there is an off-by-one error.  The patch below restores
> behaviour to be identical to that found in the 3.18 kernel.
>
> Chris
>
> --- linux-3.19.0/net/netfilter/xt_recent.c~     2015-02-10 09:18:44.657376355 +0000
> +++ linux-3.19.0/net/netfilter/xt_recent.c      2015-02-11 17:58:33.311608835 +0000
> @@ -378,7 +378,7 @@
>         mutex_lock(&recent_mutex);
>         t = recent_table_lookup(recent_net, info->name);
>         if (t != NULL) {
> -               if (info->hit_count > t->nstamps_max_mask) {
> +               if (info->hit_count > t->nstamps_max_mask + 1) {
>                         pr_info("hitcount (%u) is larger than packets to be remembered (%u) for table %s\n",
>                                 info->hit_count, t->nstamps_max_mask + 1,
>                                 info->name);
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: xt_recent broken in kernel 3.19.0 + PATCH
  2015-02-12  3:15   ` xt_recent broken in kernel 3.19.0 + PATCH Cong Wang
@ 2015-02-12  8:35     ` Florian Westphal
  2015-02-12 10:26       ` Chris Vine
  0 siblings, 1 reply; 5+ messages in thread
From: Florian Westphal @ 2015-02-12  8:35 UTC (permalink / raw)
  To: Cong Wang
  Cc: Chris Vine, Linux Kernel Mailing List, netfilter-devel,
	Linux Kernel Network Developers

Cong Wang <xiyou.wangcong@gmail.com> wrote:
> (Cc'ing netdev and netfilter-devel lists)

Thanks for forwarding.

> > Chris Vine <chris@cvine.freeserve.co.uk> wrote:
> >>   iptables -D SSH_CHAIN -m conntrack --ctstate NEW \
> >>     -m recent --update --seconds $SSH_LOGIN_PERIOD --hitcount
> >> $SSH_TRIES -j DROP
> > --- linux-3.19.0/net/netfilter/xt_recent.c~     2015-02-10 09:18:44.657376355 +0000
> > +++ linux-3.19.0/net/netfilter/xt_recent.c      2015-02-11 17:58:33.311608835 +0000
> > @@ -378,7 +378,7 @@
> >         mutex_lock(&recent_mutex);
> >         t = recent_table_lookup(recent_net, info->name);
> >         if (t != NULL) {
> > -               if (info->hit_count > t->nstamps_max_mask) {
> > +               if (info->hit_count > t->nstamps_max_mask + 1) {

Looks good. Chris, could you formally submit this patch to
netfilter-devel@vger.kernel.org?

Thanks!

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: xt_recent broken in kernel 3.19.0 + PATCH
  2015-02-12  8:35     ` Florian Westphal
@ 2015-02-12 10:26       ` Chris Vine
  2015-02-12 10:54         ` Chris Vine
  0 siblings, 1 reply; 5+ messages in thread
From: Chris Vine @ 2015-02-12 10:26 UTC (permalink / raw)
  To: Florian Westphal
  Cc: Cong Wang, Linux Kernel Mailing List, netfilter-devel,
	Linux Kernel Network Developers

On Thu, 12 Feb 2015 09:35:33 +0100
Florian Westphal <fw@strlen.de> wrote:
> Cong Wang <xiyou.wangcong@gmail.com> wrote:
> > (Cc'ing netdev and netfilter-devel lists)
> 
> Thanks for forwarding.
> 
> > > Chris Vine <chris@cvine.freeserve.co.uk> wrote:
> > >>   iptables -D SSH_CHAIN -m conntrack --ctstate NEW \
> > >>     -m recent --update --seconds $SSH_LOGIN_PERIOD --hitcount
> > >> $SSH_TRIES -j DROP
> > > --- linux-3.19.0/net/netfilter/xt_recent.c~     2015-02-10
> > > 09:18:44.657376355 +0000 +++
> > > linux-3.19.0/net/netfilter/xt_recent.c      2015-02-11
> > > 17:58:33.311608835 +0000 @@ -378,7 +378,7 @@
> > > mutex_lock(&recent_mutex); t = recent_table_lookup(recent_net,
> > > info->name); if (t != NULL) {
> > > -               if (info->hit_count > t->nstamps_max_mask) {
> > > +               if (info->hit_count > t->nstamps_max_mask + 1) {
> 
> Looks good. Chris, could you formally submit this patch to
> netfilter-devel@vger.kernel.org?
> 
> Thanks!

Done.

Chris

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: xt_recent broken in kernel 3.19.0 + PATCH
  2015-02-12 10:26       ` Chris Vine
@ 2015-02-12 10:54         ` Chris Vine
  2015-02-12 11:11           ` Chris Vine
  0 siblings, 1 reply; 5+ messages in thread
From: Chris Vine @ 2015-02-12 10:54 UTC (permalink / raw)
  To: Florian Westphal
  Cc: Cong Wang, Linux Kernel Mailing List, netfilter-devel,
	Linux Kernel Network Developers

On Thu, 12 Feb 2015 10:26:16 +0000
Chris Vine <chris@cvine.freeserve.co.uk> wrote:
> On Thu, 12 Feb 2015 09:35:33 +0100
> Florian Westphal <fw@strlen.de> wrote:
> > Cong Wang <xiyou.wangcong@gmail.com> wrote:
> > > (Cc'ing netdev and netfilter-devel lists)
> > 
> > Thanks for forwarding.
> > 
> > > > Chris Vine <chris@cvine.freeserve.co.uk> wrote:
> > > >>   iptables -D SSH_CHAIN -m conntrack --ctstate NEW \
> > > >>     -m recent --update --seconds $SSH_LOGIN_PERIOD --hitcount
> > > >> $SSH_TRIES -j DROP
> > > > --- linux-3.19.0/net/netfilter/xt_recent.c~     2015-02-10
> > > > 09:18:44.657376355 +0000 +++
> > > > linux-3.19.0/net/netfilter/xt_recent.c      2015-02-11
> > > > 17:58:33.311608835 +0000 @@ -378,7 +378,7 @@
> > > > mutex_lock(&recent_mutex); t = recent_table_lookup(recent_net,
> > > > info->name); if (t != NULL) {
> > > > -               if (info->hit_count > t->nstamps_max_mask) {
> > > > +               if (info->hit_count > t->nstamps_max_mask + 1) {
> > 
> > Looks good. Chris, could you formally submit this patch to
> > netfilter-devel@vger.kernel.org?
> > 
> > Thanks!
> 
> Done.

On further testing I see that that patch only solves the problem if
SSH_TRIES is set to a power of two boundary.  You still get an error
loading the rule if it is anything else.  I think there is something
wrong with the nstamp_mask heuristic which is used here.

Chris

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: xt_recent broken in kernel 3.19.0 + PATCH
  2015-02-12 10:54         ` Chris Vine
@ 2015-02-12 11:11           ` Chris Vine
  0 siblings, 0 replies; 5+ messages in thread
From: Chris Vine @ 2015-02-12 11:11 UTC (permalink / raw)
  To: Florian Westphal
  Cc: Cong Wang, Linux Kernel Mailing List, netfilter-devel,
	Linux Kernel Network Developers

On Thu, 12 Feb 2015 10:54:17 +0000
Chris Vine <chris@cvine.freeserve.co.uk> wrote:
[snip]
> On further testing I see that that patch only solves the problem if
> SSH_TRIES is set to a power of two boundary.  You still get an error
> loading the rule if it is anything else.  I think there is something
> wrong with the nstamp_mask heuristic which is used here.

I now find that that is not right either.  I had to rmmod xt_recent to
get it to drop its previous setting.  With that done, the patch does
indeed seem to work for all values of SSH_TRIES.

Chris

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2015-02-12 11:11 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20150211092834.65f8ae80@bother.homenet>
     [not found] ` <20150211183121.6688aec8@bother.homenet>
2015-02-12  3:15   ` xt_recent broken in kernel 3.19.0 + PATCH Cong Wang
2015-02-12  8:35     ` Florian Westphal
2015-02-12 10:26       ` Chris Vine
2015-02-12 10:54         ` Chris Vine
2015-02-12 11:11           ` Chris Vine

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).