M'étant remis depuis quelques temps sur OPNsense, voici un "quick start" sur l'installation et la configuration de Crowdsec sur cette passerelle avec une connexion à un serveur Remote LAPI.
Si ce n'est pas le cas pour les deux premiers points, vous pouvez vous baser sur cet article afin de préparer le terrain https://blog.raspot.in/fr/blog/crowdsec-installation-et-securisation-du-serveur-local-api
Utilisant un nom de domaine de portée locale pour nommer mes machines, je contourne les DNS soit en renseignant le fichier hosts des machines soit en utilisant le resolver de la passerelle. Ici je vais utiliser le resolver Unbound installé d'office sur OPNsense. Pour cela rendez-vous sur Services > Unbound DNS > Contournements et ajoutez l'enregistrement de votre serveur Crowdsec.
Utilisant également un certificat signé fourni par ma PKI locale, il faut importer le certificat de l'autorité dans Système > Gestion des certificats > Autorités puis cliquer sur ajouter. Sur le formulaire, renseignez un nom, sélectionnez "Importer une Autorité de certification existante", copiez/collez les données du certificat racine dans "Données du certificat" mais pas la clé privée. On utilise ce certificat uniquement pour vérifier le certificat du serveur Crowdsec et non pour signer des certificats.
Pour finir, il faut ouvrir l'accès SSH sur la passerelle.
Une fois la préparation de l'environnement terminée, nous pouvons entrer dans le vif du sujet.
Sur la passerelle
Depuis l'interface web, installez Crowdsec.
Connectez-vous en ssh sur la passerelle.
Lancez la commande :
cscli lapi register -u https://FQDN_SRV_CROWDSEC:8080
Sur le serveur CS
cscli machines list (pour lister les machines dont celle en attente de validation afin de récupérer son ID)
cscli machines validate ID_MACHINE
Sur la passerelle
Interface web -> Configurez Crowdsec comme ci-dessous et sauvegardez :
Connectez-vous en SSH sur la passerelle puis éditez le fichier :
vi /usr/local/etc/crowdsec/config.yaml
pour renseignez l'IP du serveur Crowdsec au niveau de "listen_uri" à la place de 127.0.0.1
Éditez ensuite le fichier...
vi /usr/local/etc/crowdsec/local_api_credentials.yaml
...pour renseignez l'URL : https://FQDN_SRV_CROWDSEC:8080/
Relancez crowdsec sur le client OPNSense :
service oscrowdsec restart
Vérifiez que la machine remonte bien sur le serveur CS :
cscli machines list (vérifiez avec l'horodatage)
Le bouncer est automatiquement installé lors de l'installation de Crowdsec sur OPNsense.
Sur le serveur CS
cscli bouncers add VM(ID)-(hébergeur)-(Nom-du-serveur)
Copiez la clé communiquée puis sur OPNsense, puis renseignez la clé et l'URL https://FQDN_SRV_CROWDSEC:8080/ :
vi /usr/local/etc/crowdsec/bouncers/crowdsec-firewall-bouncer.yaml
Relancez crowdsec sur OPNSense : service oscrowdsec restart
Sur le serveur Crowdsec, vérifiez si le bouncer est bien remonté :
cscli bouncers list
C'est par ce type d'intégration qu'OPNsense m'a séduit (en plus du module qemu-guest-agent, très utile si virtualisé sur Proxmox VE). Quant à Crowdsec sur cette passerelle, l'installation et la configuration sont relativement aisées. Façon de chipoter, j'espère que l'interface web de configuration du module crowdsec intégrera à terme la configuration d'un serveur CS Remote LAPI plutôt que de passer par la ligne de commande. À ce jour et sauf erreur de ma part, il n'existe pas de module officiel équivalent pour pfSense. Cependant on peut utiliser les blacklists de Crowdsec afin de bénéficier de l'intelligence collective de nos agents CS en installant le module crowdsec-blocklist-mirror sur son serveur Crowdsec servant de Remote LAPI et en configurant la connexion à cette liste depuis les "aliases URLs" de pfSense.
Source : https://docs.crowdsec.net/docs/getting_started/install_crowdsec_opnsense/