From 84512c269fbdf713ccf03dfa6471db26d8372e7f Mon Sep 17 00:00:00 2001 From: Thibault Koechlin Date: Wed, 18 Sep 2024 16:38:56 +0200 Subject: [PATCH 1/3] up --- .../static/img/firewall-bouncer-metrics.png | Bin 0 -> 58112 bytes .../unversioned/bouncers/firewall.mdx | 25 ++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 crowdsec-docs/static/img/firewall-bouncer-metrics.png diff --git a/crowdsec-docs/static/img/firewall-bouncer-metrics.png b/crowdsec-docs/static/img/firewall-bouncer-metrics.png new file mode 100644 index 0000000000000000000000000000000000000000..6325a2743a95f753fd91db7aef8992d8593b890c GIT binary patch literal 58112 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∋E+=37q=#}g+rVA9l> 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 literal 0 HcmV?d00001 diff --git a/crowdsec-docs/unversioned/bouncers/firewall.mdx b/crowdsec-docs/unversioned/bouncers/firewall.mdx index 7287ecffe..aecdc161d 100644 --- a/crowdsec-docs/unversioned/bouncers/firewall.mdx +++ b/crowdsec-docs/unversioned/bouncers/firewall.mdx @@ -166,6 +166,31 @@ table ip6 crowdsec6 { ``` +## Metrics + +You can check the metrics generated by the firewall-bouncer using the command `cscli metrics show bouncers`. + +![firewall-bouncer-metrics](/img/firewall-bouncer-metrics.png) + +Each line in the output represents a different source of blocked IPs, along with detailed metrics. + +- `Origin` refers to the name of the source, which could be: + - `CAPI` - The community blocklist that you receive in exchange for the information you provide to the network + - `crowdsec (security engine)` - The decisions made by your Security Engine based on triggered scenarios + - `lists:*` - Various lists to which you are subscribed +- `active_decisions IPs` represents the number of IPs contained in the respective list +- `dropped bytes & packets` indicates the number of bytes and packets dropped by the firewall due to the actions of the specified origin +- `processed bytes & packets` is only present for the `Total` line, as it denotes the overall number of bytes and packets processed by your firewall. + + +As the firewall bouncer operates at the network level, most malicious programs will not progress beyond attempting to establish a connection (and being denied). Therefore, metrics cannot reflect the "potentially saved traffic." + +### Ipset only mode + +If you are running ipset only mode, crowdsec-firewall-bouncer tries parsing the output to produce metrics, but: + - "managed" firewalls such ufw might confuse parser and lead to inconsistent metrics. + - "total" counters amount since the machine start, or `iptables -Z` is ran. Running `iptables -Z` when using `ipset` only mode might help keep consistent metrics. + ## Configuration Reference You can find a default configuration hosted on the [Github Repository](https://github.com/crowdsecurity/cs-firewall-bouncer/blob/main/config/crowdsec-firewall-bouncer.yaml) this is provided with the installation package. From a1eee076fa77438b46de3bf7a6704d92abe3863b Mon Sep 17 00:00:00 2001 From: Thibault Koechlin Date: Wed, 18 Sep 2024 16:42:05 +0200 Subject: [PATCH 2/3] up --- crowdsec-docs/unversioned/bouncers/firewall.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crowdsec-docs/unversioned/bouncers/firewall.mdx b/crowdsec-docs/unversioned/bouncers/firewall.mdx index aecdc161d..4e81e47d0 100644 --- a/crowdsec-docs/unversioned/bouncers/firewall.mdx +++ b/crowdsec-docs/unversioned/bouncers/firewall.mdx @@ -189,7 +189,7 @@ As the firewall bouncer operates at the network level, most malicious programs w If you are running ipset only mode, crowdsec-firewall-bouncer tries parsing the output to produce metrics, but: - "managed" firewalls such ufw might confuse parser and lead to inconsistent metrics. - - "total" counters amount since the machine start, or `iptables -Z` is ran. Running `iptables -Z` when using `ipset` only mode might help keep consistent metrics. + - "total" counters amount since the machine start, or iptables counter are reset, wich can lead to inconsistent metrics. ## Configuration Reference From 1ad65d7bd93832aa7beeccf225d7caf564e52482 Mon Sep 17 00:00:00 2001 From: Laurence Date: Mon, 23 Sep 2024 14:46:02 +0100 Subject: [PATCH 3/3] enhance: spellcheck and add a info to specify a min ver --- crowdsec-docs/unversioned/bouncers/firewall.mdx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/crowdsec-docs/unversioned/bouncers/firewall.mdx b/crowdsec-docs/unversioned/bouncers/firewall.mdx index 4e81e47d0..1c41f20f0 100644 --- a/crowdsec-docs/unversioned/bouncers/firewall.mdx +++ b/crowdsec-docs/unversioned/bouncers/firewall.mdx @@ -168,6 +168,10 @@ table ip6 crowdsec6 { ## Metrics +:::info +CrowdSec v1.6.3 and Firewall Remediation Component v0.0.30 are minimum versions required to have metrics. +::: + You can check the metrics generated by the firewall-bouncer using the command `cscli metrics show bouncers`. ![firewall-bouncer-metrics](/img/firewall-bouncer-metrics.png) @@ -189,7 +193,7 @@ As the firewall bouncer operates at the network level, most malicious programs w If you are running ipset only mode, crowdsec-firewall-bouncer tries parsing the output to produce metrics, but: - "managed" firewalls such ufw might confuse parser and lead to inconsistent metrics. - - "total" counters amount since the machine start, or iptables counter are reset, wich can lead to inconsistent metrics. + - "total" counters amount since the machine start, or iptables counter are reset, which can lead to inconsistent metrics. ## Configuration Reference