Automatiser l'installation et la configuration de CrowdSec avec Ansible
Pour fêter notre intégration en tant que partenaire CrowdSec
nous avons décidé de vous montrer comment automatiser l'installation et la configuration de CrowdSec à l'aide d'Ansible.
🥳🌎 Meet new CrowdSec partners: @aukfood, @CloudfenceSec, #eranyacloud, @SitesByDesignAU
Our global partners assist our clients with the highest level of support offering services in security setup, custom configuration, and management.
Join us too 👉 https://t.co/AmsGr2KvYK pic.twitter.com/BUKUVbGVXj
— CrowdSec (@Crowd_Security) April 13, 2022
Prérequis
Pour cette démonstration nous aurons besoin :
- d'au moins une machine sous Debian
- d'un compte sur la console de CrowdSec : https://app.crowdsec.net/login afin de gérer CrowdSec depuis celle-ci.
- d'Ansible sur votre poste
Création des fichiers de base pour Ansible
Avant toutes choses vous devez préparer votre arborescence de base à votre projet. Ici ce sera l'arborescence suivante :
project
│ ansible.cfg
│ deploy.yml
│ hosts
└───group_vars
│ │ all.yml
└───roles
└───sys-crowdsec
│ README.md
└───defaults
│ │ main.yml
└───handlers
│ │ main.yml
└───tasks
│ │ main.yml
└───templates
│ │ crowdsec_-crowdsec.j2
│ │ whitelists.j2
└───tests
│ │ iventory
│ │ test.yml
└───vars
│ main.yml
Fonctionnement du rôle sys-crowdsec
Pour expliquer brièvement, le rôle fonctionne ainsi :
- Il vérifie et met à jour les paquets dont nous allons avoir besoin.
- Il installe l'agent CrowdSec et sa local API.
- Il installe les bouncers que nous avons sélectionnés.
- Il installes les collections que nous avons sélectionnés.
- Il démarre les services de CrowdSec.
Et le tour est joué !
CrowdSec est installé et configuré.
Exemples de tâches
Voici les tâches qui permettent d'ajouter sa clé GPG et d'ajouter le dépôt Crowdsec avant de mettre à jour la ou les machines et d'installer CrowdSec :
- name: Crowdsec Add GPG apt Key
ansible.builtin.apt_key:
url: https://packagecloud.io/crowdsec/crowdsec/gpgkey
state: present
- name: Crowdsec Add Repository
ansible.builtin.apt_repository:
repo: "deb https://packagecloud.io/crowdsec/crowdsec/{{ ansible_distribution | lower }} {{ ansible_distribution_release | lower }} main"
state: present
- name: Crowdsec Apt update and install Crowdsec
ansible.builtin.package:
update_cache: true
name: crowdsec
state: present
Voici la tâche qui permet d'installer les collections (scénarios, parsers...) :
- name: Crowdsec install collections
ansible.builtin.command:
cmd: "cscli collections install {{ item }}"
loop: "{{ collections_list }}"
register: collections_install_result
changed_when: "'overwrite' not in collections_install_result.stderr"
when: collections_list | length > 0
notify: Restart crowdsec
La variable {{ collections_list }} est assez parlante, elle contient la liste des collections que nous désirons installer. Vous pouvez trouvez la liste des collections disponibles ici : https://hub.crowdsec.net/browse/#collections
Ajout du serveur à la console
Lorsque vous aurez créer un compte sur la console CrowdSec vous devriez avoir le choix d'ajouter une instance à l'aide de cette comannde :
Nous avons créer une tâche pour automatiser ce processus via le playbook comme vous pouvez le voir ci-dessous :
- name: Crowdsec enroll console
ansible.builtin.shell: |
cscli console enroll {{ crowdsec_web_console_id }}
changed_when: false
la variable {{ crowdsec_web_console_id }} contient le code de votre console.
Exécution du playbook
Pour ce faire il suffit d'utiliser la commande :
ansible-playbook deploy.yml
Vous devriez avoir un récaptilatif à la fin de l'exécution du playbook :
Enfin il ne faut pas oublier d'accepter l'ajout du serveur à la console :
Résultats
Vous pouvez ensuite consulter sur la console les informations concernant votre instance CrowdSec (Agent, bouncers, alertes...) :
Vous pouvez aussi consulter la liste des alertes :
D'ailleurs à peine nous avons installé CrowdSec et nous avons déjà quelques résultats !