estenrye.cis_ubuntu_2004
Rôle Ansible : cis_ubuntu_2004 :computer:
Rôle Ansible pour appliquer le CIS Benchmark pour Ubuntu Linux 20.04 LTS.
Les versions actuellement prises en charge et disponibles sont :
- CIS Benchmark pour Ubuntu Linux 20.04 LTS v1.1.0
- CIS Benchmark pour Ubuntu Linux 20.04 LTS v1.0.0
Versionnement
Le tableau ci-dessous précise les versions du rôle disponibles sur Ansible Galaxy et GitHub Releases, en termes de CIS Benchmark pour Ubuntu Linux 20.04 LTS.
Version Benchmark CIS Ubuntu 20.04 | Version Ansible Galaxy | Version Tag du Dépôt |
---|---|---|
1.0.0 | 1.0.0, 1.0.1, 1.0.2 | 1.0.0, 1.0.1, 1.0.2 |
1.1.0 | 2.0.0, 2.0.1, 2.1.0, 3.0.0, 3.1.0 | 2.0.0, 2.0.1, 2.1.0, 3.0.0, 3.1.0 |
1. Instructions d'installation/téléchargement :
Ce rôle est disponible sur Ansible Galaxy. Il existe plusieurs méthodes pour installer/télécharger le rôle cis_ubuntu_2004
sur votre nœud contrôleur Ansible, soit depuis Ansible Galaxy, soit directement depuis le dépôt.
Sans fichier requirements.yml :
Installer/télécharger la dernière version (version par défaut) disponible :
ansible-galaxy install darkwizard242.cis_ubuntu_2004
Installer/télécharger une version tag spécifique (en utilisant 3.1.0 comme exemple) :
ansible-galaxy install darkwizard242.cis_ubuntu_2004,3.1.0
Installer/télécharger une version de branche spécifique depuis le dépôt (en utilisant la branche
master
comme exemple) :ansible-galaxy install darkwizard242.cis_ubuntu_2004,master
Installer/télécharger une version de branche spécifique depuis le dépôt (en utilisant la branche
feature/cis_version_1.1.0
comme exemple) :ansible-galaxy install darkwizard242.cis_ubuntu_2004,feature/cis_version_1.1.0
Avec un fichier requirements.yml :
Ajoutez-le à un fichier requirements.yml existant avec vos autres rôles ou créez un nouveau pour installer cis_ubuntu_2004
.
Dernière version directement depuis Ansible Galaxy.
- name: darkwizard242.cis_ubuntu_2004
Version spécifique directement depuis Ansible Galaxy.
- name: darkwizard242.cis_ubuntu_2004 version: 3.1.0
Branche spécifique depuis le dépôt.
- name: cis_ubuntu_2004 src: https://github.com/darkwizard242/cis_ubuntu_2004 version: master
Installer/télécharger après l'ajout au requirements.yml :
ansible-galaxy install -r requirements.yml
REMARQUE : Installer un rôle comme mentionné ci-dessus ne fait que télécharger le rôle pour qu'il soit disponible pour utilisation dans vos playbooks Ansible. Vous pouvez lire les instructions d'installation/téléchargement des rôles ici.
2. Quelques considérations :
Les benchmarks concernant le partitionnement des disques et leurs points de montage de la Section 1 ne sont pas appliqués dans ce rôle. La raison est que l'architecture système et la configuration des disques peuvent varier d'une personne à l'autre ou d'une organisation à l'autre. Je vous recommande de les appliquer vous-même. Voici une liste de ces benchmarks :
- 1.1.10 Assurez-vous qu'une partition séparée existe pour /var (Automatisé)
- 1.1.11 Assurez-vous qu'une partition séparée existe pour /var/tmp (Automatisé)
- 1.1.12 Assurez-vous que la partition /var/tmp inclut l'option nodev (Automatisé)
- 1.1.13 Assurez-vous que la partition /var/tmp inclut l'option nosuid (Automatisé)
- 1.1.14 Assurez-vous que la partition /var/tmp inclut l'option noexec (Automatisé)
- 1.1.15 Assurez-vous qu'une partition séparée existe pour /var/log (Automatisé)
- 1.1.16 Assurez-vous qu'une partition séparée existe pour /var/log/audit (Automatisé)
- 1.1.17 Assurez-vous qu'une partition séparée existe pour /home (Automatisé)
- 1.1.18 Assurez-vous que la partition /home inclut l'option nodev (Automatisé)
- 1.1.19 Assurez-vous que l'option nodev est définie sur les partitions de médias amovibles (Manuel)
- 1.1.20 Assurez-vous que l'option nosuid est définie sur les partitions de médias amovibles (Manuel)
- 1.1.21 Assurez-vous que l'option noexec est définie sur les partitions de médias amovibles (Manuel)
Les benchmarks suivants de la Section 4 n'ont également pas été implémentés :
- 4.2.1.5 Assurez-vous que rsyslog est configuré pour envoyer les journaux à un hôte de journalisation distant (Automatisé)
- 4.2.1.6 Assurez-vous que les messages rsyslog distants ne sont acceptés que sur des hôtes de journalisation désignés. (Manuel)
- 4.3 Assurez-vous que logrotate est configuré (Manuel)
3. Exigences
Aucune.
4. Variables du rôle
Les variables par défaut du rôle utilisées dans les tâches du rôle sont situées dans defaults/main/
.
defaults/main/main.yml contient des variables se rapportant à l'ensemble des sections CIS comme suit et des variables critiques pour le système :
ubuntu_2004_cis_section1: true
ubuntu_2004_cis_section2: true
ubuntu_2004_cis_section3: true
ubuntu_2004_cis_section4: true
ubuntu_2004_cis_section5: true
ubuntu_2004_cis_section6: true
Le but de ces variables est d'indiquer que toutes les tâches liées à ces sections doivent être appliquées via le rôle cis_ubuntu_2004
.
Les variables pour chaque section sont situées dans leurs propres fichiers.
- Les variables de la section 1 se trouvent dans defaults/main/section_01.yml
- Les variables de la section 2 se trouvent dans defaults/main/section_02.yml
- Les variables de la section 3 se trouvent dans defaults/main/section_03.yml
- Les variables de la section 4 se trouvent dans defaults/main/section_04.yml
- Les variables de la section 5 se trouvent dans defaults/main/section_05.yml
- Les variables de la section 6 se trouvent dans defaults/main/section_06.yml
Les valeurs par défaut du rôle pour tout le contenu dans le rôle cis_ubuntu_2004
peuvent être remplacées en les transmettant via un playbook ou toute autre méthode de priorité de variable.
5. Dépendances
Aucune.
6. Exemples de playbooks :
Des exemples de playbooks ont été fournis dans le dossier playbook-examples. Il contient des playbooks avec des paramètres par défaut et personnalisés.
REMARQUE : Étant donné que certains des contrôles CIS concernant le réseau peuvent désactiver le système et empêcher l'utilisateur de se reconnecter, je recommande d'appliquer ou d'expérimenter avec le playbook playbook-examples/playbook_with_custom_firewall_changes.yml en premier. Modifiez le type de connexion et les hôtes dans le playbook pour répondre à vos besoins.
Application des exemples :
Si vous utilisez l'un des playbooks fournis dans le dossier playbook-examples, vous pouvez choisir l'un d'entre eux et exécuter la commande suivante pour les appliquer :
ansible-playbook playbook_with_defaults.yml
ansible-playbook playbook_with_custom_firewall_changes.yml
ansible-playbook playbook_with_ipv6.yml
ansible-playbook playbook_with_ufw.yml
En supposant que vous avez créé votre propre playbook personnalisé nommé myplaybook.yml, vous pouvez simplement l'exécuter avec la commande suivante.
ansible-playbook myplaybook.yml
Application des exemples en utilisant des tags :
Toutes les tâches dans le rôle ont des balises qui leur sont attribuées en fonction de la classification CIS, du numéro de règle et du numéro de section. Par défaut, les contrôles des niveaux 1 et 2 seront appliqués. Ainsi, si vous souhaitez exécuter des applications personnalisées pour les niveaux, les numéros de règle ou les sections, vous pouvez utiliser les exemples suivants :
Exemple d'application uniquement des contrôles de niveau 1 :
ansible-playbook <nom-du-playbook-ici>.yml --tags "level_1"
Exemple d'application uniquement des contrôles de niveau 2 :
ansible-playbook <nom-du-playbook-ici>.yml --tags "level_2"
Exemple d'application des contrôles d'une section spécifique (par exemple, la section 4 du CIS Ubuntu 20.04) :
ansible-playbook <nom-du-playbook-ici>.yml --tags "section4"
Exemple d'application d'un contrôle spécifique (par exemple, le contrôle 6.2.2 du CIS Ubuntu 20.04) :
ansible-playbook <nom-du-playbook-ici>.yml --tags "rule_6_2_2"
7. Développement local et CI/CD :
Pour le développement local du rôle cis_ubuntu_2004, veuillez effectuer les étapes suivantes :
Forkez le dépôt.
Clonez-le localement.
Installez Vagrant sur votre machine. Les instructions d'installation sont disponibles ici ou, si nécessaire, utilisez le rôle darkwizard242.vagrant pour l'installer - mais veuillez confirmer qu'il prend en charge votre système d'exploitation.
Installez Virtualbox sur votre machine. Les instructions d'installation sont disponibles ici ou, si nécessaire, utilisez le rôle darkwizard242.virtualbox pour l'installer - mais veuillez confirmer qu'il prend en charge votre système d'exploitation.
Installez les modules requis en utilisant :
# Pour installer des modules pip globalement en tant qu'utilisateur non-root. sudo -H python3 -m pip install -U molecule ansible-lint flake8 pytest-testinfra molecule-vagrant
OU
# Pour installer des modules pip localement au répertoire utilisateur en tant qu'utilisateur non-root. python3 -m pip install -U molecule ansible-lint flake8 pytest-testinfra molecule-vagrant
Effectuez les modifications et exécutez
molecule test
oumolecule converge
.
La commande molecule test exécutera l'ensemble de la suite de tests configurés.
La commande molecule converge créera uniquement l'instance vagrant et appliquera toutes les opérations définies dans le rôle.
Bien sûr, vous pouvez aussi simplement télécharger le code pour le rôle cis_ubuntu_2004, effectuer des modifications et l'exécuter via ansible-playbook sur une machine de test si vous n'êtes pas familiarisé avec molecule.
Lors de la création d'une Pull Request, cela déclenchera automatiquement une build TravisCI ici. La configuration de la build TravisCI se trouve dans .travis.yml. Cela effectuera diverses tâches :
- Cloner le code de la pull request.
- Mettre à jour le cache du dépôt.
- Installer les paquets pré-requis.
- Installer Vagrant et Virtualbox.
- Effectuer une vérification de qualité du code sur SonarCloud pour l'ensemble du code du dépôt.
- Exécuter le test moléculaire (qui provisionnera une box vagrant, appliquera le code du rôle et exécutera la suite de tests TestInfra pour le rôle cis_ubuntu_2004).
8. Contribuer :
Les contributions sont les bienvenues. Les instructions pour contribuer sont mentionnées ici.
Inspiration
Inspiré par le travail formidable accompli par plusieurs membres de la communauté Ansible (Florian Utz et ansible-lockdown pour en nommer quelques-uns parmi tant d'autres). Continuez à déchirer :metal:
Licence
Informations sur l'auteur
Ce rôle a été créé par Ali Muhammad.