[Tuto] Installation et Configuration de CrowdSec avec le reverse proxy SWAG

  • Auteur du sujet Auteur du sujet EVO
  • Date de début Date de début
Désolé, j'essaie de répondre depuis 2 jours depuis mon pc mais je n'y parviens pas.

J'ai le même genre d'erreurs aussi après vérification, mais tout à l'air de fonctionner correctement tout de même.
Je ne sais pas s'il faut s'en inquiéter ou pas
 
  • J'aime
Réactions: MilesTEG
Bonjour,

je pense que l'envoi de notifications via Discord ne fonctionne pas. Pourtant lorsque je regarde les logs. Rien d'anormal.
J'ai controlé l 'adresse du webhook. RAS
j'ai bien des blocages dont normalement des notifications devraient passer.

Savez-vous comment je peux faire pour identifier le problème ?
 
Oh ! je viens de tenter de me reconnecter à mon vaultwarden depuis un partage de connexion 4G , et aujourd'hui, Crowdsec décide de bannir mon IP 😅
j'ai du me connecter au NAS via le VPN et débannir l'adresse IP.

J'avais ça comme résultats de commandes :

Bash:
root@Syno-DS920Plus:~# docker exec -t crowdsec cscli decisions list
+---------+----------+------------------+----------------------------+--------+---------+-------------+--------+--------------------+----------+
|   ID    |  SOURCE  |   SCOPE:VALUE    |           REASON           | ACTION | COUNTRY |     AS      | EVENTS |     EXPIRATION     | ALERT ID |
+---------+----------+------------------+----------------------------+--------+---------+-------------+--------+--------------------+----------+
| 9858737 | crowdsec | Ip:xx.xxx.xx.xx  | crowdsecurity/http-probing | ban    | FR      | 3215 Orange |     20 | 3h35m37.910782974s |      740 |
| 9842213 | crowdsec | Ip:xx.xxx.xx.yyy | crowdsecurity/http-probing | ban    | FR      | 3215 Orange |     20 | 3h18m8.673559166s  |      738 |
+---------+----------+------------------+----------------------------+--------+---------+-------------+--------+--------------------+----------+
4 duplicated entries skipped
Là il est claire que les deux IP ont été bannies.
Mais pourquoi ?! Je n'ai pas utilisé différemment l'extension Bitwarden...

La première IP est celle de ma connexion 4G actuelle, et l'autre devait être celle que j'ai eu hier... vu que seul le dernier groupe de 3 chiffres change.

L'autre commande que j'avais lancé avant de débannir était :
Bash:
root@Syno-DS920Plus:~# docker exec -t crowdsec cscli metrics
INFO[30-10-2022 09:34:09 AM] Buckets Metrics:
+--------------------------------------+---------------+-----------+--------------+--------+---------+
|                BUCKET                | CURRENT COUNT | OVERFLOWS | INSTANTIATED | POURED | EXPIRED |
+--------------------------------------+---------------+-----------+--------------+--------+---------+
| crowdsecurity/http-crawl-non_statics | -             | -         | 1.76k        | 4.19k  | 1.76k   |
| crowdsecurity/http-probing           | -             | 18        | 97           | 510    | 79      |
+--------------------------------------+---------------+-----------+--------------+--------+---------+
INFO[30-10-2022 09:34:09 AM] Acquisition Metrics:
+--------------------------------------------+------------+--------------+----------------+------------------------+
|                   SOURCE                   | LINES READ | LINES PARSED | LINES UNPARSED | LINES POURED TO BUCKET |
+--------------------------------------------+------------+--------------+----------------+------------------------+
| file:/var/log/nginx/access.log             | 118.48k    | 118.44k      | 38             | 3.05k                  |
| file:/var/log/nginx/access_adguardhome.log | 138        | 138          | -              | -                      |
| file:/var/log/nginx/access_gitea.log       | 1.47k      | 1.47k        | -              | 58                     |
| file:/var/log/nginx/access_nextcloud.log   | 159.40k    | 159.40k      | -              | 1.40k                  |
| file:/var/log/nginx/access_tautulli.log    | 463        | 463          | -              | -                      |
| file:/var/log/nginx/access_vaultwarden.log | 764        | 764          | -              | 71                     |
| file:/var/log/nginx/error.log              | 2.17k      | 1.94k        | 229            | 104                    |
| file:/var/log/nginx/error_gitea.log        | 4          | -            | 4              | -                      |
| file:/var/log/nginx/error_nextcloud.log    | 54         | 39           | 15             | 16                     |
| file:/var/log/nginx/error_tautulli.log     | 2          | -            | 2              | -                      |
| file:/var/log/nginx/error_vaultwarden.log  | 11         | 3            | 8              | 1                      |
+--------------------------------------------+------------+--------------+----------------+------------------------+
INFO[30-10-2022 09:34:09 AM] Parser Metrics:
+--------------------------------+---------+---------+----------+
|            PARSERS             |  HITS   | PARSED  | UNPARSED |
+--------------------------------+---------+---------+----------+
| child-crowdsecurity/http-logs  | 847.98k | 620.86k | 227.12k  |
| child-crowdsecurity/nginx-logs | 285.24k | 282.66k | 2.58k    |
| crowdsecurity/dateparse-enrich | 282.66k | 282.66k | -        |
| crowdsecurity/geoip-enrich     | 282.66k | 282.66k | -        |
| crowdsecurity/http-logs        | 282.66k | 282.43k | 234      |
| crowdsecurity/nginx-logs       | 282.96k | 282.66k | 296      |
| crowdsecurity/non-syslog       | 282.96k | 282.96k | -        |
| crowdsecurity/whitelists       | 282.66k | 282.66k | -        |
+--------------------------------+---------+---------+----------+
INFO[30-10-2022 09:34:09 AM] Local Api Metrics:
+--------------------+--------+--------+
|       ROUTE        | METHOD |  HITS  |
+--------------------+--------+--------+
| /v1/alerts         | POST   | 6      |
| /v1/decisions      | GET    | 136459 |
| /v1/heartbeat      | GET    | 14187  |
| /v1/watchers/login | POST   | 238    |
+--------------------+--------+--------+
INFO[30-10-2022 09:34:09 AM] Local Api Machines Metrics:
+-----------+---------------+--------+-------+
|  MACHINE  |     ROUTE     | METHOD | HITS  |
+-----------+---------------+--------+-------+
| localhost | /v1/heartbeat | GET    | 14187 |
| localhost | /v1/alerts    | POST   | 6     |
+-----------+---------------+--------+-------+
INFO[30-10-2022 09:34:09 AM] Local Api Bouncers Metrics:
+--------------+---------------+--------+--------+
|   BOUNCER    |     ROUTE     | METHOD |  HITS  |
+--------------+---------------+--------+--------+
| bouncer-swag | /v1/decisions | GET    | 136459 |
+--------------+---------------+--------+--------+
INFO[30-10-2022 09:34:09 AM] Local Api Bouncers Decisions:
+--------------+---------------+-------------------+
|   BOUNCER    | EMPTY ANSWERS | NON-EMPTY ANSWERS |
+--------------+---------------+-------------------+
| bouncer-swag | 135758        | 701               |
+--------------+---------------+-------------------+
INFO[30-10-2022 09:34:09 AM] Local Api Decisions:
+--------------------------------------------+----------+--------+-------+
|                   REASON                   |  ORIGIN  | ACTION | COUNT |
+--------------------------------------------+----------+--------+-------+
| crowdsecurity/http-crawl-non_statics       | CAPI     | ban    | 88    |
| crowdsecurity/http-probing                 | CAPI     | ban    | 3588  |
| crowdsecurity/http-probing                 | crowdsec | ban    | 6     |
| crowdsecurity/ssh-slow-bf                  | CAPI     | ban    | 11393 |
| crowdsecurity/CVE-2022-37042               | CAPI     | ban    | 1     |
| crowdsecurity/f5-big-ip-cve-2020-5902      | CAPI     | ban    | 1     |
| crowdsecurity/http-backdoors-attempts      | CAPI     | ban    | 24    |
| crowdsecurity/http-bad-user-agent          | CAPI     | ban    | 2499  |
| crowdsecurity/http-generic-bf              | CAPI     | ban    | 9     |
| crowdsecurity/jira_cve-2021-26086          | CAPI     | ban    | 2     |
| crowdsecurity/http-cve-2021-41773          | CAPI     | ban    | 29    |
| crowdsecurity/http-open-proxy              | CAPI     | ban    | 159   |
| crowdsecurity/http-sensitive-files         | CAPI     | ban    | 30    |
| crowdsecurity/nginx-req-limit-exceeded     | CAPI     | ban    | 1042  |
| crowdsecurity/thinkphp-cve-2018-20062      | CAPI     | ban    | 57    |
| ltsich/http-w00tw00t                       | CAPI     | ban    | 4     |
| crowdsecurity/CVE-2022-41082               | CAPI     | ban    | 496   |
| crowdsecurity/apache_log4j2_cve-2021-44228 | CAPI     | ban    | 17    |
| crowdsecurity/fortinet-cve-2018-13379      | CAPI     | ban    | 32    |
| crowdsecurity/http-path-traversal-probing  | CAPI     | ban    | 131   |
| crowdsecurity/ssh-bf                       | CAPI     | ban    | 966   |
| crowdsecurity/vmware-cve-2022-22954        | CAPI     | ban    | 1     |
+--------------------------------------------+----------+--------+-------+
INFO[30-10-2022 09:34:09 AM] Local Api Alerts:
+----------------------------+-------+
|           REASON           | COUNT |
+----------------------------+-------+
| crowdsecurity/http-probing | 6     |
+----------------------------+-------+
Bon je ne sais pas trop interpréter toutes ces lignes...

Une idée de ce qui peut déclencher le bannissement ?
 
Souvent un problème reseau, et l'app ou autre spam en 404/403/400 et hop Crowdsec ban ;)
Cela m'arrive parfois également. Meme si c'est en général avec Nextcloud.
J’espère que ça ne se reproduira pas trop 😅
De toutes manières je vais refaire une stack reverse proxy en virant swag et en mettant que nginx (image LS) avec Crowdsec tout seul et acme pour les certificat. Et je ne lancerais pas fail2ban car apparemment ça ne cohabite pas très bien :
https://www.linuxserver.io/blog/blocking-malicious-connections-with-crowdsec-and-swag
(Dernier paragraphe)
 
Regarde ma citation ?
Et bien justement, je ne saisi pas ta remarque...
Ils disent ceci :
One word of warning: We don't recommend running CrowdSec and fail2ban in parallel in a production environment, because you may end up with things falling through the cracks as they fight each other to block malicious connections.
Donc eux ne le recommandent pas, de faire cohabiter Fail2Ban avec CrowdSec...

Du coup, ta phrase, si je la réécrit, pourrait être :
Je ne comprend pas trop pourquoi il recommande de ne pas de le faire.
Ou encore :
Je ne comprend pas trop pourquoi il ne recommande pas de faire cohabiter Fail2Ban avec CrowdSec.

Et tu vois, la signification des deux n'est pas tout à fait la même chose...
D'où ma question ;)
C'est souvent un soucis lorsqu'on écrit un message sur internet, le contexte est clair dans notre tête, mais dans celle du lecteur ce n'est pas forcément le cas. Il faut alors contextualiser un poil ce qu'on dit ^^ J'essaye de le faire le plus souvent possible, ou alors je reformule, afin que ce que je dis ne porte pas à confusion ;)

Du coup, c'est quelle réécriture que tu envisageais ?
 
Rien compris
Pourquoi il ne faut pas faire cohabiter F2B et CrowdSec ? Les deux sont idenpendant, et font leurs jobs de leur côté, donc je comprends pas. Que se soit l'un ou l'autre par exemple aucun ne va écrire dans les logs, .. Ou autre action qui pourrait venir perturber l'autre. A la limite F2B pourrai être plus réactif sur certaines choses, et Crowdsec pourrai ne pas avoir le temps de le ban, (et inversement) mais ou et le problème ? L'IP étant bien bannie
 
Rien compris
Pourquoi il ne faut pas faire cohabiter F2B et CrowdSec ? Les deux sont idenpendant, et font leurs jobs de leur côté, donc je comprends pas. Que se soit l'un ou l'autre par exemple aucun ne va écrire dans les logs, .. Ou autre action qui pourrait venir perturber l'autre. A la limite F2B pourrai être plus réactif sur certaines choses, et Crowdsec pourrai ne pas avoir le temps de le ban, (et inversement) mais ou et le problème ? L'IP étant bien bannie
Ha bah ça je ne sais pas 😅
Je transmet juste ce que j'ai lu ^^
Mais je rejoins ton raisonnement ;)
 
Bonjour EvotK,

Merci pour ton tuto.
Je bloque sur la phase création du dashboard, je rencontre le même pb que MilesTEG1 à savoir ce message d'erreur:
Failure:
failed to deploy a stack: unable to prepare context: path "./crowdsec/dashboard" not found

Je suis sur OMV6/Portainer

Voici ma config crowdsec + dashboard dans Swag
Code:
---
version: "2.1"
services:
  swag:
    image: ghcr.io/linuxserver/swag
    container_name: swag
    volumes:
      - /srv/dev-disk-by-uuid-d710ceb1-028d-468d-b7eb-22b53d74e619/App/Swag/Config:/config
    [...]

  crowdsec:
    container_name: crowdsec
    image: crowdsecurity/crowdsec
    restart: unless-stopped
    environment:
      - COLLECTIONS=crowdsecurity/nginx
      - GID=100
    depends_on:
      - swag
    volumes:
      - /srv/dev-disk-by-uuid-d710ceb1-028d-468d-b7eb-22b53d74e619/App/Swag/Config/log/nginx:/var/log/nginx
      - /srv/dev-disk-by-uuid-d710ceb1-028d-468d-b7eb-22b53d74e619/App/Swag/crowdsec/acquis.yaml:/etc/crowdsec/acquis.yaml
      - /srv/dev-disk-by-uuid-d710ceb1-028d-468d-b7eb-22b53d74e619/App/Swag/crowdsec/crowdsec-db:/var/lib/crowdsec/data/
      - /srv/dev-disk-by-uuid-d710ceb1-028d-468d-b7eb-22b53d74e619/App/Swag/crowdsec/crowdsec-config:/etc/crowdsec/
    security_opt:
      - no-new-privileges=true
  dashboard:
    container_name: crowdsec-dashboard
    build: ./crowdsec/dashboard
    restart: unless-stopped
    depends_on:
      - crowdsec
    ports:
      - 3000:3000
    environment:
      - MB_DB_FILE=/data/metabase.db
      - MGID=100
    volumes:
      - /srv/dev-disk-by-uuid-d710ceb1-028d-468d-b7eb-22b53d74e619/App/Swag/crowdsec/crowdsec-db:/metabase-data

Le fichier Dockerfile est bien dans le dossier /crowdsec/dashboard.

J'ai tenté de nombreux chemins pour renseigner la ligne build sans résultat, aurais-tu une suggestion pour m'aider ?
Merci d'avance
Cdt
 
Salut @granks

Tu as donc bien un dossier /srv/dev-disk-by-uuid-d710ceb1-028d-468d-b7eb-22b53d74e619/App/Swag/crowdsec/dashboard avec dedans un fichier Dockerfile ?

Tu lance bien la commande docker-compose depuis /srv/dev-disk-by-uuid-d710ceb1-028d-468d-b7eb-22b53d74e619/App/Swag ?
 
  • J'aime
Réactions: granks
@EVOTk
Houhaaaa la rapidité ! trop sympa merci ;)

Tu as donc bien un dossier /srv/dev-disk-by-uuid-d710ceb1-028d-468d-b7eb-22b53d74e619/App/Swag/crowdsec/dashboard avec dedans un fichier Dockerfile ?
Oui
Code:
root@monnas:/srv/dev-disk-by-uuid-d710ceb1-028d-468d-b7eb-22b53d74e619/App/Swag/crowdsec/dashboard# ls
Dockerfile
Tu lance bien la commande docker-compose depuis /srv/dev-disk-by-uuid-d710ceb1-028d-468d-b7eb-22b53d74e619/App/Swag ?
En fait, je suis dans l'interface portainer, et je lance Stacks avec le bouton Actions : "Update the Stack"
 
Dernière édition:
Ha, le problème c'est portainer. Je ne l'utilise que pour la supervision.

Donc je ne sais faire que en SSH, je ne sais pas si Portainer gère la construction d'image depuis un compose.

En SSH : ( en root ou avec sudo )

cd /srv/dev-disk-by-uuid-d710ceb1-028d-468d-b7eb-22b53d74e619/App/Swag/crowdsec/dashboard
puis
docker build -t crowdsec_dashboard .
Une fois finie, dans ton compose, tu remplace :

Code:
    build: ./crowdsec/dashboard
Par :
Code:
    image: crowdsec_dashboard
 
@EVOTk
Houhaaaa la rapidité ! trop sympa merci ;)


Oui
Code:
root@monnas:/srv/dev-disk-by-uuid-d710ceb1-028d-468d-b7eb-22b53d74e619/App/Swag/crowdsec/dashboard# ls
Dockerfile

En fait, je suis dans l'interface portainer, et je lance Stacks avec le bouton Actions : "Update the Stack"
Comme moi !
Et j’ai peur que tu ne t’en sortes pas davantage que moi 😅
 
@EVOTk
j'ai passé l'étape grâce à toi (y)
Les 3 sont installés, swag, crowdsec et crowdsec-dashboard
mais lorsque je consulte les logs de crowdsec-dashboard, ils indiquent
Code:
addgroup: gid '100' in use
adduser: unknown group metabase
su: unknown user metabase
et là, pour moi c'est un mystère ???? une idée ?
Ceci dit, il n'y a pas le feu, on peut voir ça demain, tranquille
Merci beaucoup pour ton aide très appréciée ;)
 
@MilesTEG1
Comme moi !
Et j’ai peur que tu ne t’en sortes pas davantage que moi 😅

L'espoir étant le dernier stade avant le renoncement, je garde espoir et peut-être que du coup, tes soucis seront solutionnés en même temps que les miens ! ;)
Message automatiquement fusionné :

@EVOTk
demain... Ou quand tu peux, il n'y a aucune urgence, pas de soucis
A+
 
A qui appartient /srv/dev-disk-by-uuid-d710ceb1-028d-468d-b7eb-22b53d74e619/App/Swag/crowdsec/crowdsec-db ?

ls -alh /srv/dev-disk-by-uuid-d710ceb1-028d-468d-b7eb-22b53d74e619/App/Swag/crowdsec/crowdsec-db

le MGID est bon ?

Pour connaitre celui de l'user :
id mon_user
 
Ha, le problème c'est portainer. Je ne l'utilise que pour la supervision.

Donc je ne sais faire que en SSH, je ne sais pas si Portainer gère la construction d'image depuis un compose.

En SSH : ( en root ou avec sudo )

cd /srv/dev-disk-by-uuid-d710ceb1-028d-468d-b7eb-22b53d74e619/App/Swag/crowdsec/dashboard
puis
docker build -t crowdsec_dashboard .
Une fois finie, dans ton compose, tu remplace :

Code:
    build: ./crowdsec/dashboard
Par :
Code:
    image: crowdsec_dashboard
Ha on peut faire ça !?
Va falloir que j’essaye ça quand j’aurais un moment 😊
👍🏻👍🏻