From 8269c8319ccb9e78c8c48a4218396621d5a156e3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Peter=20M=C3=BCller?= Date: Fri, 18 Feb 2022 22:40:55 +0000 Subject: [PATCH] firewall: Make logging of conntrack INVALIDs configureable MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit In theory, logging of dropped packets classified by conntrack as being INVALID should never be disabled, since one wants to have a paper trail of what his/her firewall is doing. However, conntrack seems to drop a lot of (at the first glance legitimate) packets, hence bloating the logs, making spotting the important firewall hits more difficult. This patch therefore adds the option to disable logging of packets being dropped by conntrack due to INVALID state. Please note: - This patch does not add this category to the firewall hits graph. - The variables in this patch ("LOGDROPCTINVALID") should make it clear that it is about toggling _logging_, not the actual _dropping_. Other variables are still in need of being renamed to clarify this, which will be done in a dedicated patch. - Also, the changes made to update.sh need to take place in config/rootfiles/core/164/update.sh for "master", since this patch has been developed against "next". Kindly cherry-pick the necessary changes. Partially fixes: #12778 Reported-by: Arne Fitzenreiter Signed-off-by: Peter Müller --- config/rootfiles/oldcore/164/update.sh | 3 +++ html/cgi-bin/optionsfw.cgi | 12 +++++++++++- langs/de/cgi-bin/de.pl | 1 + langs/en/cgi-bin/en.pl | 1 + lfs/configroot | 1 + src/initscripts/system/firewall | 4 +++- 6 files changed, 20 insertions(+), 2 deletions(-) diff --git a/config/rootfiles/oldcore/164/update.sh b/config/rootfiles/oldcore/164/update.sh index e6847359c0..05f2a03e47 100644 --- a/config/rootfiles/oldcore/164/update.sh +++ b/config/rootfiles/oldcore/164/update.sh @@ -107,6 +107,9 @@ fi if [ "$(grep "^DROPSPOOFEDMARTIAN" /var/ipfire/optionsfw/settings)" == "" ]; then echo "DROPSPOOFEDMARTIAN=on" >> /var/ipfire/optionsfw/settings fi +if [ "$(grep "^LOGDROPCTINVALID" /var/ipfire/optionsfw/settings)" == "" ]; then + echo "LOGDROPCTINVALID=on" >> /var/ipfire/optionsfw/settings +fi # Apply sysctl changes /etc/init.d/sysctl start diff --git a/html/cgi-bin/optionsfw.cgi b/html/cgi-bin/optionsfw.cgi index 481d5bdbd2..5611b71b7e 100644 --- a/html/cgi-bin/optionsfw.cgi +++ b/html/cgi-bin/optionsfw.cgi @@ -2,7 +2,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2014-2021 IPFire Team # +# Copyright (C) 2007-2022 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -116,6 +116,9 @@ $checked{'DROPSPOOFEDMARTIAN'}{$settings{'DROPSPOOFEDMARTIAN'}} = "checked='chec $checked{'DROPHOSTILE'}{'off'} = ''; $checked{'DROPHOSTILE'}{'on'} = ''; $checked{'DROPHOSTILE'}{$settings{'DROPHOSTILE'}} = "checked='checked'"; +$checked{'LOGDROPCTINVALID'}{'off'} = ''; +$checked{'LOGDROPCTINVALID'}{'on'} = ''; +$checked{'LOGDROPCTINVALID'}{$settings{'LOGDROPCTINVALID'}} = "checked='checked'"; $checked{'DROPPROXY'}{'off'} = ''; $checked{'DROPPROXY'}{'on'} = ''; $checked{'DROPPROXY'}{$settings{'DROPPROXY'}} = "checked='checked'"; @@ -211,6 +214,13 @@ END $Lang::tr{'off'} + + $Lang::tr{'log dropped conntrack invalids'} + + $Lang::tr{'on'} / + $Lang::tr{'off'} + + $Lang::tr{'drop input'} diff --git a/langs/de/cgi-bin/de.pl b/langs/de/cgi-bin/de.pl index 7a4b30ad57..a9b4dadd8e 100644 --- a/langs/de/cgi-bin/de.pl +++ b/langs/de/cgi-bin/de.pl @@ -1603,6 +1603,7 @@ 'locationblock enable feature' => 'Location-basierte Filterung aktivieren:', 'locationblock flag' => 'Flagge', 'log' => 'Protokoll', +'log dropped conntrack invalids' => 'Verworfene, von der Verbindungsverfolgung als INVALID eingestufte Pakete protokollieren', 'log enabled' => 'Protokoll aktiviert', 'log level' => 'Protokollierungsniveau', 'log lines per page' => 'Zeilen pro Seite', diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl index 644eb05741..ed0d756f52 100644 --- a/langs/en/cgi-bin/en.pl +++ b/langs/en/cgi-bin/en.pl @@ -1651,6 +1651,7 @@ 'locationblock enable feature' => 'Enable Location based blocking:', 'locationblock flag' => 'Flag', 'log' => 'Log', +'log dropped conntrack invalids' => 'Log dropped packets classified as INVALID by connection tracking', 'log enabled' => 'Log Enabled', 'log level' => 'Log Level', 'log lines per page' => 'Lines per page', diff --git a/lfs/configroot b/lfs/configroot index b836767c13..111ab67876 100644 --- a/lfs/configroot +++ b/lfs/configroot @@ -131,6 +131,7 @@ $(TARGET) : echo "DROPWIRELESSFORWARD=on" >> $(CONFIG_ROOT)/optionsfw/settings echo "DROPSPOOFEDMARTIAN=on" >> $(CONFIG_ROOT)/optionsfw/settings echo "DROPHOSTILE=on" >> $(CONFIG_ROOT)/optionsfw/settings + echo "LOGDROPCTINVALID=on" >> $(CONFIG_ROOT)/optionsfw/settings echo "POLICY=MODE2" >> $(CONFIG_ROOT)/firewall/settings echo "POLICY1=MODE2" >> $(CONFIG_ROOT)/firewall/settings echo "USE_ISP_NAMESERVERS=on" >> $(CONFIG_ROOT)/dns/settings diff --git a/src/initscripts/system/firewall b/src/initscripts/system/firewall index 5fef07a00f..14f93d9c77 100644 --- a/src/initscripts/system/firewall +++ b/src/initscripts/system/firewall @@ -122,7 +122,9 @@ iptables_init() { # Connection tracking chains iptables -N CTINVALID - iptables -A CTINVALID -m limit --limit 10/second -j LOG --log-prefix "DROP_CTINVALID " + if [ "$LOGDROPCTINVALID" == "on" ]; then + iptables -A CTINVALID -m limit --limit 10/second -j LOG --log-prefix "DROP_CTINVALID " + fi iptables -A CTINVALID -j DROP -m comment --comment "DROP_CTINVALID" iptables -N CONNTRACK -- 2.39.2