j’ai pris le temps de tester Crowdsec sur mon yunohost brique-internet
Contexte :
- Armbian 5.10.60-sunxi #21.08.2 - armv7l
- golang 1.11
ma brique ne me sert qu’à faire du monitoring d’autre machine, du coup les apps installées sont Kuma, Adguard, Grafana, aucune autre app est installée, c’est important car si je n’ai pas eu d’impact négatif, c’est aussi par rapport au fait que la brique n’a que 3 app installées, ce qui n’est pas un test suffisant.
les étapes que j’ai fait :
- Désinstallation de golang 1.11 et installation de golang 1.17
- téléchargement des sources de crowdsec depuis leur repo github
- éxécution de Make à l’intérieur du dossier source
à ce moment là j’avais cscli dans mon path et donc j’ai procédé comme ceci :
- installation du Firewall bouncer à partir de APT (iptables)
- ensuite j’ai lancé le wizard, qui a détecté tous mes domaines, applications utilisant nginx
ainsi que les différents services tel que mysql, auth, syslog (acquis.yml)
- ipset create crowdsec-blacklists hash:ip timeout 0 maxelem 150000
- ipset create crowdsec6-blacklists hash:ip timeout 0 family inet6 maxelem 150000
- iptables -I INPUT 1 -m set --match-set crowdsec-blacklists src -j DROP
- ip6tables -I INPUT 1 -m set --match-set crowdsec6-blacklists src -j DROP
Une fois ici, j’active les services crowdsec.service et crowdsec-firewall-bouncer.service
ce qui crée une machine (cscli machines list)
ensuite crowdsec met en place la clef API pour le seul bouncer que j’utilise
et via cscli lapi status et cscli capi status, je confirme l’accès API à crowdsec
ensuite j’ai fait le tour dans /etc/crowdsec/
- acquis.yml
- config.yml
- profile.yml
- local_api_credentials.yaml
- bouncers/crowdsec-firewall-bouncer.yaml
pour vérifier que tout est en ordre, clef API générée correctement ajoutée, que l’IP utilisée et le port match sur tous les fichiers yml et que les logs que je veux parser le seront une fois les services activés.
Bouncers :
- pas besoin de bouncers nginx ou autre dans mon cas d’utilisation, en effet, vu que le bouncer firewall est entrain d’opérer avant même que les requêtes atteignent Ngxinx, si un bouncer nginx est installé avec un bouncer firewall, celui ci n’aura rien à faire à moins que le bouncer firewall est désactivé, il suffit d’installer ensuite via cscli, les scenarions, configurations et postoverflows qui font sens par rapport aux apps/contexte utilisé par yunhost (mysql, apache, nginx, sshd, en gros la collection linux)
surveillance de crowdsec :
- multitail -s 3 -c /var/log/crowdsec.log -c /var/log/crowdsec_api.log -c /var/log/crowdsec-firewall-bouncer.log
systemctl status crowdsec.service et crowdsec-firewall-bouncer.service
whitelist ton ip :
installe un postoverflow :
- cscli collections install crowdsecurity/rdns
met le hub à jour :
- sudo cscli hub update (si une des listes est “broken”, faire d’abord un hub upgrade, puis à nouveau hub update)
- sudo cscli hub upgrade (mise à jours des collections/parsers)
Crowdsec propose aussi un dashboard, basé sur metabase, tournant en local (je ne l’ai pas mise en place dans cette mise en place, à la place j’ai utilisé cscli console enroll depuis https://app.crowdsec.net ou encore cette possibilité : How to configure metabase dasbhoard without docker | CrowdSec
et voilà !