]> git.ipfire.org Git - people/ms/ipfire-2.x.git/commitdiff
suricata: Track whitelisted traffic and add it to the IPS graph
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 13 Sep 2024 08:12:30 +0000 (10:12 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Sat, 21 Sep 2024 10:25:05 +0000 (12:25 +0200)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
14 files changed:
config/cfgroot/graphs.pl
config/collectd/collectd.conf
doc/language_issues.en
doc/language_issues.es
doc/language_issues.fr
doc/language_issues.it
doc/language_issues.nl
doc/language_issues.pl
doc/language_issues.ru
doc/language_issues.tr
doc/language_missings
langs/de/cgi-bin/de.pl
langs/en/cgi-bin/en.pl
src/initscripts/system/suricata

index ba7887840766a5bc9a8a02cfb9abf5323ae45706..cdfc1a18035ddb1051a5d176c0a903a9ca529888 100644 (file)
@@ -1219,9 +1219,17 @@ sub updateipsthroughputgraph {
                "VDEF:scanned_bytes_min=scanned_bytes,MINIMUM",
                "VDEF:scanned_bytes_max=scanned_bytes,MAXIMUM",
 
+               # Read whitelisted packets
+               "DEF:whitelisted_bytes=$mainsettings{'RRDLOG'}/collectd/localhost/iptables-mangle-IPS/ipt_bytes-WHITELISTED.rrd:value:AVERAGE",
+               #"DEF:whitelisted_packets=$mainsettings{'RRDLOG'}/collectd/localhost/iptables-mangle-IPS/ipt_packets-WHITELISTED.rrd:value:AVERAGE",
+
+               "VDEF:whitelisted_bytes_avg=whitelisted_bytes,AVERAGE",
+               "VDEF:whitelisted_bytes_min=whitelisted_bytes,MINIMUM",
+               "VDEF:whitelisted_bytes_max=whitelisted_bytes,MAXIMUM",
+
                # Total
-               "CDEF:total_bytes=bypassed_bytes,scanned_bytes,+",
-               #"CDEF:total_packets=bypassed_packets,scanned_packets,+",
+               "CDEF:total_bytes=bypassed_bytes,scanned_bytes,ADDNAN,whitelisted_bytes,ADDNAN",
+               #"CDEF:total_packets=bypassed_packets,scanned_packets,ADDNAN,whitelisted_packets,ADDNAN",
 
                "VDEF:total_bytes_avg=total_bytes,AVERAGE",
                "VDEF:total_bytes_min=total_bytes,MINIMUM",
@@ -1236,8 +1244,14 @@ sub updateipsthroughputgraph {
                "COMMENT:" . sprintf("%16s", $Lang::tr{'minimum'}),
                "COMMENT:" . sprintf("%16s", $Lang::tr{'maximum'}) . "\\j",
 
+               # Whitelisted Packets
+               "AREA:whitelisted_bytes$color{'color12'}A0:" . sprintf("%-30s", $Lang::tr{'whitelisted'}),
+               "GPRINT:whitelisted_bytes_avg:%9.2lf %sbps",
+               "GPRINT:whitelisted_bytes_min:%9.2lf %sbps",
+               "GPRINT:whitelisted_bytes_max:%9.2lf %sbps\\j",
+
                # Bypassed Packets
-               "AREA:bypassed_bytes$color{'color12'}A0:" . sprintf("%-30s", $Lang::tr{'bypassed'}),
+               "STACK:bypassed_bytes$color{'color11'}A0:" . sprintf("%-30s", $Lang::tr{'bypassed'}),
                "GPRINT:bypassed_bytes_avg:%9.2lf %sbps",
                "GPRINT:bypassed_bytes_min:%9.2lf %sbps",
                "GPRINT:bypassed_bytes_max:%9.2lf %sbps\\j",
index fd548b6cf18ce5a8ec09c4a69720cc6ce1f33d30..a90331f21cb5ae866fa3e424922ab038b23da5f8 100644 (file)
@@ -56,6 +56,7 @@ include "/etc/collectd.precache"
        # IPS
        Chain mangle IPS BYPASSED
        Chain mangle IPS SCANNED
+       Chain mangle IPS WHITELISTED
 </Plugin>
 
 #<Plugin logfile>
index 7daeb078c20b7c4ca74bfdfd1f7a5ddeb1622acc..0e3a3eb74f92f1bacca64c473b41e2ae3d4a1bef 100644 (file)
@@ -2161,6 +2161,7 @@ WARNING: untranslated string: webradio playlist = Webradio Playlist
 WARNING: untranslated string: website = Website
 WARNING: untranslated string: wednesday = Wednesday
 WARNING: untranslated string: weeks = Weeks
+WARNING: untranslated string: whitelisted = Whitelisted
 WARNING: untranslated string: whois results from = WHOIS results from
 WARNING: untranslated string: winbind daemon = Winbind Daemon
 WARNING: untranslated string: wio = unknown string
index e71e774804212b324fb9347a844aa2856bc31dd2..b33ffa2dcb1bac74909970c7242175d86302cc83 100644 (file)
@@ -1062,6 +1062,7 @@ WARNING: untranslated string: timeformat = %Y-%m-%d at %H:%M:%S %Z
 WARNING: untranslated string: total = Total
 WARNING: untranslated string: transport mode does not support vti = VTI is not support in transport mode
 WARNING: untranslated string: warning = Warning
+WARNING: untranslated string: whitelisted = Whitelisted
 WARNING: untranslated string: wio = unknown string
 WARNING: untranslated string: wio checked = unknown string
 WARNING: untranslated string: wio cron = unknown string
index a5f566822044a611e5e2277105c600ac6aa16ee2..93466bd9ec28e6a774751e960b57bec55ac95a6c 100644 (file)
@@ -1000,6 +1000,7 @@ WARNING: untranslated string: system time = System Time (as of last page load)
 WARNING: untranslated string: timeformat = %Y-%m-%d at %H:%M:%S %Z
 WARNING: untranslated string: total = Total
 WARNING: untranslated string: warning = Warning
+WARNING: untranslated string: whitelisted = Whitelisted
 WARNING: untranslated string: wio = unknown string
 WARNING: untranslated string: wio checked = unknown string
 WARNING: untranslated string: wio cron = unknown string
index d72b903352105584c7bc31665d8a4604ac628b69..426df7759b0a8faea26ea95138829da45f34b63b 100644 (file)
@@ -1347,6 +1347,7 @@ WARNING: untranslated string: vpn weak = Weak
 WARNING: untranslated string: vulnerability = Vulnerability
 WARNING: untranslated string: vulnerable = Vulnerable
 WARNING: untranslated string: warning = Warning
+WARNING: untranslated string: whitelisted = Whitelisted
 WARNING: untranslated string: whois results from = WHOIS results from
 WARNING: untranslated string: winbind daemon = Winbind Daemon
 WARNING: untranslated string: wio = unknown string
index 3b926a64ca134e9a3abd79db0d62f7b834de1146..046e5943bf3176825b663cf3e76a7c3c35e71b5c 100644 (file)
@@ -1370,6 +1370,7 @@ WARNING: untranslated string: vpn weak = Weak
 WARNING: untranslated string: vulnerability = Vulnerability
 WARNING: untranslated string: vulnerable = Vulnerable
 WARNING: untranslated string: warning = Warning
+WARNING: untranslated string: whitelisted = Whitelisted
 WARNING: untranslated string: whois results from = WHOIS results from
 WARNING: untranslated string: winbind daemon = Winbind Daemon
 WARNING: untranslated string: wio = unknown string
index 8461f9a27f466730d2448536b406ccb2aeed9076..f0a60ab3044805009706437d29642e194500b1b1 100644 (file)
@@ -1611,6 +1611,7 @@ WARNING: untranslated string: vpn weak = Weak
 WARNING: untranslated string: vulnerability = Vulnerability
 WARNING: untranslated string: vulnerable = Vulnerable
 WARNING: untranslated string: warning = Warning
+WARNING: untranslated string: whitelisted = Whitelisted
 WARNING: untranslated string: whois results from = WHOIS results from
 WARNING: untranslated string: winbind daemon = Winbind Daemon
 WARNING: untranslated string: wio = unknown string
index 6fe35a0edb4396ed6aec43766def722b44924239..a8f2c15493ead1a5e71af2d7e4735b0d0c4e81eb 100644 (file)
@@ -1604,6 +1604,7 @@ WARNING: untranslated string: vpn weak = Weak
 WARNING: untranslated string: vulnerability = Vulnerability
 WARNING: untranslated string: vulnerable = Vulnerable
 WARNING: untranslated string: warning = Warning
+WARNING: untranslated string: whitelisted = Whitelisted
 WARNING: untranslated string: whois results from = WHOIS results from
 WARNING: untranslated string: winbind daemon = Winbind Daemon
 WARNING: untranslated string: wio = unknown string
index cb7b50a52ff78c774fbe38a9e81ca988e31cec68..93619c0a4796600af5ad0688aed7681ef8bd3cd0 100644 (file)
@@ -1231,6 +1231,7 @@ WARNING: untranslated string: vpn wait = WAITING
 WARNING: untranslated string: vulnerability = Vulnerability
 WARNING: untranslated string: vulnerable = Vulnerable
 WARNING: untranslated string: warning = Warning
+WARNING: untranslated string: whitelisted = Whitelisted
 WARNING: untranslated string: whois results from = WHOIS results from
 WARNING: untranslated string: winbind daemon = Winbind Daemon
 WARNING: untranslated string: wio = unknown string
index 603530c74c33208adb4b30ca5e997986808e28c3..2a2333d948abe4013861bbd99d49e4f493d3f352 100644 (file)
 < transport mode does not support vti
 < warning
 < wg
+< whitelisted
 < wireguard
 < wlanap
 < wlanap hide ssid
 < upload fcdsl.o
 < warning
 < wg
+< whitelisted
 < wireguard
 < wlanap hide ssid
 < wlanap psk
 < warning
 < Weekly
 < wg
+< whitelisted
 < whois results from
 < winbind daemon
 < wireguard
 < warning
 < Weekly
 < wg
+< whitelisted
 < whois results from
 < winbind daemon
 < wireguard
 < warning
 < Weekly
 < wg
+< whitelisted
 < whois results from
 < winbind daemon
 < wireguard
 < week-graph
 < Weekly
 < wg
+< whitelisted
 < whois results from
 < winbind daemon
 < wireguard
 < warning
 < Weekly
 < wg
+< whitelisted
 < whois results from
 < winbind daemon
 < wireguard
index 99349758cc8ed023efd0895c8da711321cf0c82d..61288dddf365c8256ba22c2f892e539dc73f3b0f 100644 (file)
 'week-graph' => 'Woche',
 'weekly firewallhits' => 'wöchentliche Firewalltreffer',
 'weeks' => 'Wochen',
+'whitelisted' => 'Ausgenommen',
 'whois results from' => 'WHOIS-Ergebnisse von',
 'wildcards' => 'Wildcards',
 'wins server' => 'WINS-Server',
index 2038f2e769d96471fb2945eb8aad9fac7672f213..d736555602285a6d87a14926206070f00fd3c8d9 100644 (file)
 'weekly firewallhits' => 'weekly firewallhits',
 'weeks' => 'Weeks',
 'wg' => 'WireGuard',
+'whitelisted' => 'Whitelisted',
 'whois results from' => 'WHOIS results from',
 'wildcards' => 'Wildcards',
 'winbind daemon' => 'Winbind Daemon',
index 150984d93007b756390396c57982dfd19a4c998e..a80a32f782ef6244e598d6541797b935e0fe632c 100644 (file)
@@ -40,6 +40,10 @@ IPS_BYPASS_MASK="0x20000000"
 IPS_SCAN_MARK="0x10000000"
 IPS_SCAN_MASK="0x10000000"
 
+# Set if a packet has been whitelisted
+IPS_WHITELISTED_MARK="0x08000000"
+IPS_WHITELISTED_MASK="0x08000000"
+
 # Supported network zones
 NETWORK_ZONES=( "RED" "GREEN" "ORANGE" "BLUE" "WG" "OVPN" )
 
@@ -122,9 +126,14 @@ generate_fw_rules() {
                        # Skip disabled entries
                        [ "${enabled}" = "enabled" ] || continue
 
-                       iptables -w -t mangle -A IPS -s "${network}" -j RETURN
-                       iptables -w -t mangle -A IPS -d "${network}" -j RETURN
+                       iptables -w -t mangle -A IPS -s "${network}" -j MARK --set-mark "$(( IPS_WHITELISTED_MARK ))/$(( IPS_WHITELISTED_MASK ))"
+                       iptables -w -t mangle -A IPS -d "${network}" -j MARK --set-mark "$(( IPS_WHITELISTED_MARK ))/$(( IPS_WHITELISTED_MASK ))"
                done < "/var/ipfire/suricata/ignored"
+
+               # Count and skip the whitelisted packets
+               iptables -w -t mangle -A IPS \
+                       -m comment --comment "WHITELISTED" \
+                       -m mark --mark "$(( IPS_WHITELISTED_MARK ))/$(( IPS_WHITELISTED_MASK ))" -j RETURN
        fi
 
        # Send packets to suricata