public inbox for development@lists.ipfire.org
 help / color / mirror / Atom feed
From: Michael Tremer <michael.tremer@ipfire.org>
To: development@lists.ipfire.org
Subject: Re: Logging Locationblock packets
Date: Mon, 25 Nov 2024 10:49:24 +0100	[thread overview]
Message-ID: <1929202F-18F8-4D42-88F9-AEA310189B83@ipfire.org> (raw)
In-Reply-To: <e40888d4-f543-464b-8ebf-5026db5e8f8c@ipfire.org>

[-- Attachment #1: Type: text/plain, Size: 21892 bytes --]

Hello

> On 23 Nov 2024, at 15:47, Adolf Belka <adolf.belka(a)ipfire.org> wrote:
> 
> Hi Rob,
> 
> On 23/11/2024 15:36, Rob Brewer wrote:
>> On Sat, 23 Nov 2024 10:26:07 +0100, Michael Tremer wrote:
>> 
>>> Hello,
>>> 
>>>> On 21 Nov 2024, at 00:08, Rob Brewer <ipfire-devel(a)grantura.co.uk>
>> wrote:
>>>> Hi Michael and Adolf,
>>>> 
>>>> I'll combine my reply to both of you.
>>>> 
>>>> On Wed, 20 Nov 2024 15:21:28 +0000, Michael Tremer wrote:
>>>> 
>>>>> Hello,
>>>>> 
>>>>>> On 20 Nov 2024, at 13:36, Rob Brewer <ipfire-devel(a)grantura.co.uk>
>>>>>> wrote:
>>>>>> 
>>>>>> On Tue, 19 Nov 2024 17:10:24 +0000, Michael Tremer wrote:
>>>>>> 
>>>>>> Hi Michael, thank for your response, I was beginning to think there
>> was
>>>>>> little interest in this topic.
>>>>> I was traveling and so have a little bit of a back log as usual :)
>>>>> 
>>>>> I can’t speak for the others, though.
>>>>> 
>>>> Not a problem, I should have said that I previously raised this a
>> topic
>> on
>>>> the forum and Adolf suggested that I raised it on the mailing list as
>>>> well.
>>> Yes, I really prefer this here, because the forum is very overwhelming
>> sometimes. There is too many threads, too many people… Mailing lists are
>> great for development.
>> 
>> That's fine, one query though you don't seem to snip older parts of the
>> post, is this your preference?
>> 
>>>>>> See below...
>>>>>> 
>>>>>>> Hello Rob,
>>>>>>> 
>>>>>>> Good to hear from you again.
>>>>>>> 
>>>>>>>> On 9 Nov 2024, at 14:00, Rob Brewer <ipfire-devel(a)grantura.co.uk>
>>>>>>>> wrote:
>>>>>>>> 
>>>>>>>> As  a contributor to the SANS ISC,  I email my IPTABLES logs hourly
>>>>>>>> to the Dshield database, however the default IPFire IPTABLES logs
>> are
>>>>>>>> incomplete since packets dropped by Locationblock are not logged to
>>>>>>>> syslog.
>>>>>>> This is correct.
>>>>>>> 
>>>>>>>> As a workaround I edit the locationblock function of rules.pl to
>> add
>>>>>>>> a IPTABLES rule to log the dropped packets. This edit does not of
>>>>>>>> course survive any Core-Updates that upgrade rules.pl and the edit
>>>>>>>> needs to be re-applied.
>>>>>>>> 
>>>>>>>> In addition, unless the Locationblock packets are logged to syslog
>>>>>>>> the data displayed in the Firewall logs sections are incomplete as
>>>>>>>> the packets dropped by Location Block are not displayed.
>>>>>>>> 
>>>>>>>> I understand that the original intension of the Location Block
>>>>>>>> feature was to reduce the amount of log messages on installations
>>>>>>>> running on extremely cheap flash storage. I suspect that these
>>>>>>>> installations are now almost zero especially since IPFire no longer
>>>>>>>> supports 32 bit versions.
>>>>>>>> 
>>>>>>>> The obvious solution to this to make Location Block logging
>>>>>>>> selectable as a firewall option and my quick look at making a
>> patches
>>>>>>>> for this would seem to be fairly simple task to rules.pl and and
>>>>>>>> optionsfw.cgi.
>>>>>>>> 
>>>>>>>> I would be happy to provide the necessary patches should this be
>>>>>>>> acceptable.
>>>>>>> I think a couple of things have changed since we introduced this
>>>>>>> feature and we have also learned a couple of lessons here:
>>>>>>> 
>>>>>>> * Yes it is true that this was introduced to keep the logs smaller,
>>>>>>> but not necessarily to avoid using storage, mainly to keep them
>>>>>>> readable by a human. I was always a bit doubtful about this and
>>>>>>> believe that apart from this, there is no more value in a general
>>>>>>> location blocking feature. The firewall will drop those packets
>>>>>>> anyway.
>>>>>>> 
>>>>>>> 
>>>>>> IPFire does a very good job in protecting the internal network from
>>>>>> unwanted probes from the WAN, and I agree that for most users,
>> location
>>>>>> block does not enhance this protection.
>>>>>> 
>>>>>> As I run a mail server, I use locationblock as part of my filtering
>> to
>>>>>> prevent bad actors from accessing my mail server and I think would be
>>>>>> useful for anyone who are running servers on their networks.
>>>>>> 
>>>>>> I don't like blocking traffic, but I have witnessed over the last few
>>>>>> years a substantial rise in abuse from certain countries from where I
>>>>>> would never expect to receive emails and locationblock works very
>> well
>>>>>> for me in filtering out those unwanted connections.
>>>>>> 
>>>>>> I currently have 21 countries blocked including XD Hostile networks.
>>>>>> All of these blocked countries have been seen to support abusive
>>>>>> networks.
>>>>>> 
>>>>>> It would be possible to generate individual rules for these networks
>>>>>> which in some cases I do with Banish, but it is sometimes easier just
>>>>>> to drop the whole country.
>>>>> Easy yes. I am just not sure what we are actually getting out of this.
>>>>> 
>>>>> I don’t like to become political on this list and so I won’t, but I
>> know
>>>>> that some people hold the following beliefs:
>>>>> 
>>>>> * There are “bad” countries out there. In the western world those are
>>>>> Russia, China, and more that fall into this kind of “category”.
>> Nothing
>>>>> is going to stop them to open up an account on AWS and suddenly they
>>>>> have access to resources anywhere in the world and so actually, if
>> those
>>>>> players were up to anything “bad”, they can come out of any IP space
>>>>> they want. There is also Tor which allows this.
>>>>> 
>>>> I have been submitting my iptables logs to dshield for over 20 years
>> and
>>>> in the early days I would be sending a lot less than 1000 a day (this
>> was
>>>> with IPCop of course).
>>>> 
>>>> Over the last few years the number of firewall iptables logs have
>>>> escalated until it had reached dshield's daily limit of 100,000 /day
>> and
>>>> I started looking at ways to limit the logging of some of the 'bad
>> actors'
>>>> firewall probes.
>>> What do you use to send them the logs? The Python script or one of
>> those
>> alternatives?
>> 
>> I use a modified Perl script (iptables.pl) which is about 20 years old was
>> originally written for Smoothwall and Ipcop1. This was part of the Logsend
>> add-on and I modified for IPCop2 about 15 years ago.
>> 
>> Now modified for IPFire and using DMA email instead of the original
>> sendEmail. I've uploaded my version to people.ipfire.org/~helix/dshield.
>> 
>> I had intended to write an install/uninstall script but is in the todo
>> list. Do you think it may be of interest to anyone if I do?
>> 
>>>>> * Looking at actual data, the bullet proof ISPs that annoy us are not
>>>>> that far away. They are hosted in Europe and very prominently so in
>> the
>>>>> Netherlands - a “good” country.
>>>>> 
>>>> I use Banish for this as it can block by ASN and can target bullet
>> proof
>>>> ISPs not only in NL but also in the USA and elsewhere. Using the
>> 'location
>>>> function' the blocked ASN's are updated when the database is updated.
>>>> 
>>>>> This is just an example to explain that we all have our idea of the
>>>>> world in our head, but the Internet doesn’t know these borders.
>>>>> Geopolitics is complicated and I don’t think that this is a tool that
>>>>> helps to fight this kind of problem. I hope this is clear what I am
>>>>> trying to say.
>>>>> 
>>>> Yes my approach is to use multiple tools and Locationblock is just one
>> of
>>>> the tools I am using. Maybe my approach is over the top though.
>>> Probably not massively, but maybe slightly.
>>> 
>>> Wouldn’t it be nicer to have everything in one place instead of having
>> multiple tools that work together in concert?
>> I think that would be a lot of work, would you consider that for IPFire2
>> or 3?
>> 
>>>>> I personally trust in Spamhaus which is feeding data into our “Hostile
>>>>> Networks” blocker and they are looking at the actual traffic that they
>>>>> see from those subnets that they are blocking. They have a clear set
>> of
>>>>> rules and they don’t look just at the country and say “ah yes, the bad
>>>>> guys again”.
>>>>> 
>>>> For emails I also drop packets if listed in a number of DNS blackhole
>>>> lists using Auto-Dnsbl which I adapted for IPFire. See:
>>>> 
>>>> https://people.ipfire.org/~helix/auto-dnsbl/README
>>>> for info.
>>>> 
>>>> I have been using this for about a year and can confirm that it is
>> very
>>>> effective in removing spammers.
>>>> 
>>>>> I have stated this recently in the RPZ discussion that I feel that we
>>>>> are lacking good sources for this kind of data. For blocking anything.
>>>>> Loads of people believe “more is more” and to be fair… once you get to
>>>>> blocking 90% of the internet you probably have blocked 90% of the
>> noise.
>>>>> However this won’t do anything for targeted attacks. I personally
>> would
>>>>> rather have more quality here.
>>>>> 
>>>> I only use a few blocklists with ipblocklist and rely mainly on my
>> locally
>>>> derived  data from failed smtp connections or from data from dshield's
>>>> daily report.
>>>> 
>>>>>>> * People seem to misunderstand this feature: The block as many
>>>>>>> countries as they can click on and think that this makes things
>> “more
>>>>>>> secure”,
>>>>>>> which of course it doesn’t.
>>>>>>> 
>>>>>>> 
>>>>>> I think this is education and I suspect that very few of these people
>>>>>> are running servers on their system and need location block.
>>>>> I am personally not here to educate people. I am happy to help out and
>>>>> give my opinion, but I suppose considering that people think as I have
>>>>> outlined above, who am I to educate them?
>>>>> 
>>>> Sorry I didn't express my reply well, I agree that IPFire users should
>> be
>>>> responsible for their own actions.
>>> Naturally. But we should also not give them sharp knives when we don’t
>> expect them to use them properly.
>>>>> It is just very regretful to me when people are ab-using a feature
>> just
>>>>> to “feel more safe”.
>>>>> 
>>>>>>> * What I personally like as a feature is to apply location filters
>> to
>>>>>>> individual rules. That allows to apply rate limits in a few places
>> and
>>>>>>> easily select some larger groups of potentially less interesting
>>>>>>> traffic.
>>>>>> I agree and is similar to what I am doing for ports 25 and 587
>> although
>>>>>> with location block.
>>>>>> 
>>>>>> 
>>>>>>> * Back when this was introduced there was also a lot less use of
>>>>>>> botnets as we know them now. Pretty much all recent DoS attacks I
>>>>>>> remember have been coming from all over the world because systems
>>>>>>> where compromised wherever they were. This renders the filter
>>>>>>> absolutely useless.
>>>>>> For this, I am currently testing a dynamic block list on my system
>>>>>> which adds an entry to an ipset when an ip address exceeds a
>> threshold
>>>>>> in the previous 24 hours. Currently there are about 7000 entries in
>>>>>> this set which have been detected over the previous month.  Not for
>>>>>> everyone because it needs a Whitelist to prevent some 'push'
>>>>>> technologies such as Facebook and to protect from bulk inputs such as
>>>>>> mailing lists. I also blacklist a large number of ip addresses which
>>>>>> are associated with port scanners.
>>>>>> 
>>>>>> This would work well as a botnet filter but it needs an understanding
>>>>>> of the blocking process, so it would not be suitable for everyone.
>>>>> We have talked about this on the last team call and came to the
>>>>> conclusion that the whole set of blocking features is a total mess.
>>>>> There are several places where things can be blocked, they all heavily
>>>>> overlap. Not to be going on about Spamhaus again, but the DROP list is
>>>>> in the “Hostile Networks” feature, there is a special country code for
>>>>> it, pretty much every IPS ruleset contains it, the IP blocklist
>> feature
>>>>> supports it. Now there are people throwing this all into DNS as well.
>> I
>>>>> believe this is all getting a little bit out of hand.
>>>>> 
>>>> I don't use the IPS mainly due to bad experiences when trying to use
>> Snort
>>>> with IPCop. I find it difficult to set up and select the appropriate
>>>> Rulsets for my requirements. I suspect the IPS would be very effective
>> if
>>>> I could get it set up correctly.
>>> This has massively improved in recent times. And it is FAST!
>>> 
>> I'll have another look, but my current set-up is working well, so I'm
>> reluctant to change.
>> 
>>>>> I personally would prefer *one* place and we really make this work
>> well.
>>>>> Some people find the IPS has too much overhead - I am beginning to
>>>>> disagree.
>>>>> 
>>>>> Some people add all sorts of blacklists that are clearly for
>>>>> experimental/research use and suddenly complain about things not
>> working
>>>>> anymore. It is hard to figure out what is actually blocking traffic
>> when
>>>>> there are about five places to look for. The result often is to
>> disable
>>>>> the IPS, then something else, and after a while all of this is turned
>>>>> off and the firewall is configured to a bare minimum. We don’t want
>>>>> people to run it like that.
>>>>> 
>>>>>>> * Infrastructure is becoming more centralised. Some people attempt
>> to
>>>>>>> block the US and pretty much nothing works any more. Well…
>>>>>>> 
>>>>>>> 
>>>>>> :)
>>>>>> 
>>>>>>> Therefore I am happy to rethink this feature - personally I would
>> even
>>>>>>> remove it entirely, but I don’t like to handle the stress about this
>>>>>>> now.
>>>>>> No I think you should keep it. Locationblock is very useful, but
>> needs
>>>>>> to be used in a considered way. I could live without it but its
>>>>>> availability makes my life easier. Also being updated on a weekly
>> basis
>>>>>> makes keeping track of abusers easier.
>>>>> We issue a new location database once a day, but the IPFire systems
>>>>> update it only once a week. We deemed that as sufficient as there are
>>>>> not that many changes from one version to another one.
>>>>> 
>>>>>>> I think this should log now. I don’t think there is any legitimate
>>>>>>> reason to disable firewall logging at all. This is the paper trail
>>>>>>> that you want when debugging anything or doing forensics on an
>> attack.
>>>>>>> Certainly bad flash is not a valid reason for me.
>>>>>>> 
>>>>>>> 
>>>>>> I have started generating some patches to make 'locationblock
>> logging'
>>>>>> as a selectable feature and could post them here in the next day or
>> so
>>>>>> if of any use.
>>>>> What would this basically do? Log it as a simple rule for all, or do
>> you
>>>>> include the selected country? I think the latter would make more
>> sense.
>>>> OK - I have modified location-block.cgi to add an additional checkbox
>> at
>>>> the top of the page titled "Log dropped packets", very similar to
>>>> ipblocklist.cgi. This adds a entry to the /var/ipfire/firewall/
>>>> locationblock settings file ON or OFF.
>>>> 
>>>> In /usr/lib/firewall/rules.pl I add an additional Iptables
>> LOCATIONBLOCK
>>>> log rule with the prefix 'LOCBLOCK-$location '. This is selectable
>> from
>>>> the Log dropped packets entry in the locationblock settings file.
>>>> 
>>>> This generates kernel messages such as:
>>>> 
>>>> LOCBLOCK-CN IN=ppp0 OUT=ppp0 MAC= SRC=114.139.42.71 DST=81.187.175.103
>>>> LEN=60 TOS=0x00 PREC=0x00 TTL=47 ID=34664 DF PROTO=TCP SPT=46837
>> DPT=23
>>>> WINDOW=29040 RES=0x00 SYN URGP=0
>>>> 
>>>> As you can see the prefix contains the country code of the dropped
>>>> packets.
>>> Cool. So I think coding-wise this is pretty straight forward.
>>> 
>>> The more crucial question for me is below…
>>> 
>> Do have a look at the patches I posted and let me have any comments. If
>> it's not needed and we can add locationblock logging without selection
>> then that's what I have been doing since LB was first implemented.
>> 
>>>>> What is the rationale to turn this off? Why don’t we turn this on for
>>>>> everybody all of the time?
>>>>> 
>>>> I would be happy with that I was suggesting that we use selectable
>> logging
>>>> to be compatible with earlier IPFire versions.
>>> What do we have to be compatible with? Just IPFire’s behaviour from
>> last
>> year?
>>> I would be happy to break that if we have a good reason, because the
>> world sometimes moves on. What we have released 10 years ago probably
>> doesn’t have good defaults any more. Sometimes we have to revisit those
>> and sometimes we even have to be pushy with some changes if we want some
>> long-standing users to adopt them. IPFire users usually have no reason to
>> do a reinstall and we don’t want to leave the people behind who have been
>> running IPFire perfectly well for the last 10 years or even longer. So at
>> least I would like to discuss what we push a little harder.
>> As Adolf pointed out in the Forum,the WIKI stated the rational for not
>> logging was to protect flash memory from excessive use. I don't think that
>> is appropriate now.
>> 
>>>>>> In fact I think that IPFire's logging environment, which was
>> inherited
>>>>>> from IPCop needs a re-visit.
>>>>> Yes. But this is probably not a thing I would be looking at in IPFire
>> 2.
>>>>> I am also happy to think a little bit more outside of the box and see
>>>>> what we would fundamentally change in the future, but not implement in
>>>>> IPFire 2.
>>>>> 
>>>>>> I was pleased to see that a while back there was a discussion of
>>>>>> replacing sylogd with rsyslogd which I think would be a very useful
>>>>>> upgrade and enable kernel messages, like on most current linux
>> systems,
>>>>>> to be logged to alternative log files instead of everything ending up
>>>>>> in /var/log/ messages.
>>>>> The currentl syslog server could do that. The problem is more that we
>>>>> don’t have good tools to view the logs on the web UI. So there is
>> simply
>>>>> one place where most things go into and we will then filter it out
>> when
>>>>> users use the web UI. This is tremendously slow.
>>>>> 
>>>> I did look at this a while back and believe that with syslog all
>> kernel
>>>> messages must go to the same log file and cannot be filtered off as
>> can
>> be
>>>> done with rsyslog. I use this facility in rsyslog.d on my server to
>> filter
>>>> off SYN Flood logs to a separate log file with ":msg,contains". I
>> don't
>>>> believe that syslog has this option.
>>> Different messages could be sent to different “facilities” and then we
>> can filter them into individual files.
>>> I would not want to split firewall hits into different files though. I
>> just wouldn’t mind if firewall hits were no longer in /var/log/messages.
>> 
>> 
>> You need to be careful with the LOG* menus which would need to look in 2
>> or more places for historical logs and so the cgi's would need to be
>> modified.
>> 
>> I would however welcome kernel message filtering since it would allow my
>> use of a separate log directory for my auto-dnsbl program to monitor for
>> non-dropped incoming SMTP connections without appearing in 'messages' log
>> file.
>> 
>> 
>>>>>> The replacement with rsyslgd could also inhibit the "last message
>>>>>> repeated x times" in syslog and which are ignored by IPFire's Log
>> menu
>>>>>> and causes erroneous results in the 'Count' values.
>>>>> This might be a setting that we can turn off in the current
>>>>> implementation.
>>>>> 
>>>> I understand that this is hard coded into syslogd and can't be
>> changed.
>> In
>>>> rsyslog it defaults to "off".
>>>> 
>>>> https://www.rsyslog.com/doc/configuration/action/
>>>> rsconf1_repeatedmsgreduction.html
>>> What impact does this have for you? I never noticed any problem by
>> summarising the logs.
>> 
>> I came across this and it illustrates the point well:
>> 
>> https://dcid.me/notes/syslog-last-message-repeated-x-times-rant
>> 
>> and makes the point that kernel messages can be delayed by several seconds
>> and could affect any DOS filtering that may be in use.
>> 
>> The dshield iptables.pl script tries to recover the lost repeated messages
>> but looses the time-stamp.
>> 
>> When comparing the dshield logs with IPFire's logs there is invariably a
>> discrepancy with the IPFire's count sometimes considerably less especially
>> with multiple port-scans over a minute or so.
>> 
>> Any chance of looking again at rsyslog? IPFire is the only linux system I
>> know of still using syslog.
>> 
>> I seem to remember that Adolf had completed all the necessary changes to
>> introduce rsyslog a years or so ago but was not implemented,
> 
> It wasn't me. It was Erik Kapfer. I have looked at it to have a go at it but there have been a lot of other things that are on my plate that I am still working through and of course sometimes things come along that have to be addressed and jump ahead in the queue.

Story of my life :)

> Regards,
> 
> Adolf.
> 
>>  
>>>>> We could also think about moving all firewall hits into
>>>>> /var/log/firewall.log or something. That should free up enough in
>>>>> /var/log/messages to make debugging easier.
>>>>> 
>>>> That would be a sensible option, currently I filter out firewall hits
>> from
>>>> the messages.log with a perl regex.
>>>> 
>>>>>>> I would be happy to hear some more opinions on this from the list.
>>>>>>> 
>>>>>>> -Michael
>>>>>> I hope these comments are useful and would be pleased to help where I
>>>>>> can.
>>>>> Of course :)
>>>>> 
>>>>> -Michael
>>>>> 
>>>>> 
>>>>>> Rob
>>> -Michael
>> Rob



      reply	other threads:[~2024-11-25  9:49 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-11-09 14:00 Rob Brewer
2024-11-19 17:10 ` Michael Tremer
2024-11-20 13:36   ` Rob Brewer
2024-11-20 14:13     ` Adolf Belka
2024-11-20 15:21     ` Michael Tremer
2024-11-20 23:08       ` Rob Brewer
2024-11-22 15:36         ` Logging Locationblock packets [PATCH] Rob Brewer
2024-11-22 16:04         ` Rob Brewer
2024-11-23  9:26         ` Logging Locationblock packets Michael Tremer
2024-11-23 14:36           ` Rob Brewer
2024-11-23 14:47             ` Adolf Belka
2024-11-25  9:49               ` Michael Tremer [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1929202F-18F8-4D42-88F9-AEA310189B83@ipfire.org \
    --to=michael.tremer@ipfire.org \
    --cc=development@lists.ipfire.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox