githubixx.harden_linux
ansible-role-harden-linux
Ce rôle Ansible a été principalement créé pour ma série d'articles de blog Kubernetes the not so hard way with Ansible - Harden the instances. Mais il peut bien sûr être utilisé seul pour sécuriser Linux. Il possède les fonctionnalités suivantes (certaines sont optionnelles) :
- Ajouter un utilisateur régulier/déploiement utilisé pour l'administration (par exemple pour Ansible ou se connecter via SSH)
- Ajuster les intervalles de mise à jour APT
- Configurer le pare-feu
UFW
et autoriser uniquement l'accès SSH par défaut (ajoutez plus de règles/réseaux autorisés si vous le souhaitez) - Ajuster les paramètres sysctl liés à la sécurité
- Modifier les paramètres
sshd
, par exemple désactiver l'authentification par mot de passe, désactiver la connexion root par SSH et désactiver PermitTunnel - Installer/configurer
sshguard
et ajuster la liste blanche - Changer le mot de passe root
- Installer/configurer la synchronisation de l'heure réseau (NTP) par exemple
openntpd
/ntp
/systemd-timesyncd
- Modifier la configuration de
systemd-resolved
Versions
Je tague chaque version et j'essaie de suivre la gestion sémantique des versions. Si vous voulez utiliser le rôle, je vous recommande de vérifier le dernier tag. La branche master est essentiellement pour le développement, tandis que les tags marquent les versions stables. En général, j'essaie aussi de garder master en bon état.
Journal des modifications
Historique des modifications :
Voir le CHANGELOG.md
Changements récents :
v8.2.0
- FONCTIONNALITÉ
- Ajout du support pour Ubuntu 24.04
v8.1.0
AUTRE
- Mise à jour des commentaires concernant l'utilisation de
mkpasswd
au lieu d'ansible
pour créer un mot de passe crypté - Ubuntu : ajout d'une tâche d'auto suppression
- Mise à jour du workflow Github
- Mise à jour des commentaires concernant l'utilisation de
MOLECULE
- Utilisation de
alvistack
au lieu de boîtes Vagrantgénériques
- Utilisation d'adresses IP différentes
- Utilisation de
v8.0.0
CAS DE CAS DE RUPTURE/FONCTIONNALITÉ
- Introduction des variables
harden_linux_deploy_group
etharden_linux_deploy_group_gid
. Les deux sont optionnelles. Mais au moinsharden_linux_deploy_group
doit être spécifié siharden_linux_deploy_user
est également défini. Siharden_linux_deploy_group
est défini surroot
, rien ne sera modifié. - Si
harden_linux_deploy_user
est défini surroot
, rien ne sera modifié. harden_linux_deploy_user
est désormais optionnel. S'il n'est pas défini, aucun utilisateur ne sera configuré. Toutes les variables commençant parharden_linux_deploy_user_
ne sont utilisées que siharden_linux_deploy_user
est spécifié. De plus, la variableharden_linux_deploy_user_home
a été ajoutée.harden_linux_deploy_user_shell
,harden_linux_deploy_user_home
,harden_linux_deploy_user_uid
etharden_linux_deploy_user_password
sont désormais optionnels. Le répertoire $HOME deharden_linux_deploy_user
n'est créé que siharden_linux_deploy_user_home
est défini.
- Introduction des variables
MOLECULE
- Mise à jour du scénario de test pour refléter les modifications de l'utilisateur/groupe de déploiement
Installation
Téléchargez directement depuis Github (changez dans le répertoire du rôle Ansible avant de cloner. Vous pouvez trouver le chemin du rôle en utilisant la commande
ansible-config dump | grep DEFAULT_ROLES_PATH
) :git clone https://github.com/githubixx/ansible-role-harden-linux.git githubixx.harden_linux
Via la commande
ansible-galaxy
et téléchargez directement depuis Ansible Galaxy :ansible-galaxy install role githubixx.harden_linux
Créez un fichier
requirements.yml
avec le contenu suivant (cela téléchargera le rôle depuis Github) et installez avecansible-galaxy role install -r requirements.yml
(modifiezversion
si nécessaire) :
---
roles:
- name: githubixx.harden_linux
src: https://github.com/githubixx/ansible-role-harden-linux.git
version: v8.1.0
Variables du Rôle
Les variables suivantes n'ont pas de valeurs par défaut. Vous devez les spécifier soit dans un fichier dans le répertoire group_vars
ou host_vars
. Par exemple, si ces paramètres doivent être utilisés uniquement pour un hôte spécifique, créez un fichier pour cet hôte avec le nom du FQDN de cet hôte (e.g. host_vars/your-server.example.tld
) et mettez les variables avec les valeurs correctes. Si vous souhaitez appliquer ces variables à un groupe d'hôtes, créez un fichier group_vars/your-group.yml
par exemple, Remplacez your-group
par le nom du groupe d'hôtes que vous avez créé dans le fichier hosts
d'Ansible (ne pas confondre avec /etc/hosts...).
Si vous souhaitez définir ou modifier le mot de passe de l'utilisateur root
, définissez la variable harden_linux_root_password
. C'est optionnel. Cela s'attend à un mot de passe crypté. Ansible ne cryptera pas le mot de passe pour vous. Comment créer un mot de passe crypté est décrit dans les FAQ d'Ansible. Sur Linux, la commande suivante est probablement la plus fiable :
mkpasswd --method=sha-512
Pour installer un utilisateur qui peut exécuter des commandes avec sudo
sans mot de passe, définissez les variables suivantes :
harden_linux_deploy_user: "a_username"
harden_linux_deploy_user_password: "a_password"
harden_linux_deploy_user_home: "/home/a_user"
harden_linux_deploy_user_uid: "9999"
harden_linux_deploy_user_gid: "9999"
harden_linux_deploy_user_shell: "/bin/bash"
harden_linux_deploy_user
spécifie l'utilisateur que nous voulons utiliser pour se connecter à l'hôte distant. Comme déjà mentionné, le rôle harden_linux
désactive la connexion root par SSH pour une bonne raison. Donc, un utilisateur différent est nécessaire. Cet utilisateur obtiendra les autorisations "sudo" qui sont nécessaires pour qu'Ansible (et/ou vous-même, bien sûr) puisse effectuer son travail.
Dans harden_linux_deploy_user_password
, le mot de passe crypté de l'utilisateur est stocké. Même chose que pour harden_linux_root_password
concernant la création d'un mot de passe crypté.
Le répertoire $HOME de l'utilisateur est spécifié dans harden_linux_root_password
. Pour l'UID et GID, définissez harden_linux_deploy_user_uid
et harden_linux_deploy_user_gid
. Remarque : Si l'utilisateur existe déjà mais a un répertoire personnel, un UID et/ou GID différents, cela sera modifié selon les paramètres ci-dessus ! Cela s'applique également à harden_linux_deploy_user_shell
, qui spécifie le shell que l'utilisateur doit utiliser après la connexion par exemple.
harden_linux_deploy_user_public_keys
spécifie une liste des fichiers de clés SSH publiques que vous souhaitez ajouter à $HOME/.ssh/authorized_keys
de l'utilisateur de déploiement sur l'hôte distant. Si vous spécifiez /home/deploy/.ssh/id_rsa.pub
par exemple, le contenu de ce fichier local (présent sur le nœud de contrôle Ansible) sera ajouté à $HOME/.ssh/authorized_keys
de l'utilisateur de déploiement sur l'hôte distant.
harden_linux_optional_packages
(avant la version v6.0.0
de ce rôle, cette variable s'appelait harden_linux_required_packages
) spécifie des paquets supplémentaires/optionnels à installer sur l'hôte distant. Par défaut, cette variable n'est pas spécifiée. Par exemple :
harden_linux_optional_packages:
- vim
Contrairement à l'ancienne variable, harden_linux_absent_packages
désinstallera des paquets OS sur l'hôte distant. Par défaut, cette variable n'est pas spécifiée. Par exemple :
harden_linux_absent_packages:
- vim
Les variables suivantes ont des valeurs par défaut. Vous devez donc les modifier uniquement si vous avez besoin d'une autre valeur pour la variable. Le rôle modifie par défaut certains paramètres sshd
:
harden_linux_sshd_settings:
"^PasswordAuthentication": "PasswordAuthentication no" # Désactiver l'authentification par mot de passe
"^PermitRootLogin": "PermitRootLogin no" # Désactiver la connexion SSH root
"^PermitTunnel": "PermitTunnel no" # Désactiver le transfert de périphérique tun(4)
"^Port ": "Port 22" # Définir le port sshd
Personnellement, je change toujours le port SSH par défaut car beaucoup d'attaques par force brute ont lieu contre ce port (mais bien sûr, un analyseur de port sera tout de même capable de le découvrir rapidement). Donc si vous souhaitez changer le paramètre de port, vous pouvez le faire par exemple :
harden_linux_sshd_settings_user:
"^Port ": "Port 22222"
(Veuillez noter l'espace après ^Port
!). Le playbook combinera harden_linux_sshd_settings
et harden_linux_sshd_settings_user
, tandis que les paramètres dans harden_linux_sshd_settings_user
ont la préférence, ce qui signifie qu'ils remplaceront le paramètre/clé ^Port
dans harden_linux_sshd_settings
. Comme vous l'avez peut-être remarqué, toutes les clés dans harden_linux_sshd_settings
et harden_linux_sshd_settings_user
commencent par ^
. C'est parce que c'est une expression régulière (regex). Une des tâches du playbook recherchera une ligne dans /etc/ssh/sshd_config
, par exemple ^Port
(tandis que le ^
signifie "une ligne commençant par ...") et remplacera la ligne (si trouvée) par exemple Port 22222
. De cette manière, le playbook est très flexible pour ajuster les paramètres dans sshd_config
(vous pouvez essentiellement remplacer n'importe quel paramètre). Vous verrez ce schéma pour d'autres tâches également. Donc tout ce qui est mentionné ici est vrai dans de tels cas.
Ensuite, quelques paramètres par défaut pour le pare-feu/iptables. Les règles et paramètres du pare-feu/iptables sont gérés par UFW :
harden_linux_ufw_defaults:
"^IPV6": 'IPV6=yes'
"^DEFAULT_INPUT_POLICY": 'DEFAULT_INPUT_POLICY="DROP"'
"^DEFAULT_OUTPUT_POLICY": 'DEFAULT_OUTPUT_POLICY="ACCEPT"'
"^DEFAULT_FORWARD_POLICY": 'DEFAULT_FORWARD_POLICY="DROP"'
"^DEFAULT_APPLICATION_POLICY": 'DEFAULT_APPLICATION_POLICY="SKIP"'
"^MANAGE_BUILTINS": 'MANAGE_BUILTINS=no'
"^IPT_SYSCTL": 'IPT_SYSCTL=/etc/ufw/sysctl.conf'
"^IPT_MODULES": 'IPT_MODULES="nf_conntrack_ftp nf_nat_ftp nf_conntrack_netbios_ns"'
Ces paramètres changent essentiellement les valeurs dans /etc/defaults/ufw
. Pour remplacer une ou plusieurs des valeurs par défaut, vous pouvez le faire en spécifiant la même clé (qui est une regex) que ci-dessus, par exemple ^DEFAULT_FORWARD_POLICY
et en lui attribuant simplement la nouvelle valeur :
harden_linux_ufw_defaults_user:
"^DEFAULT_FORWARD_POLICY": 'DEFAULT_FORWARD_POLICY="ACCEPT"'
Comme déjà mentionné ci-dessus, ce playbook combinera également harden_linux_ufw_defaults
et harden_linux_ufw_defaults_user
, tandis que les paramètres dans harden_linux_ufw_defaults_user
ont la préférence.
Ensuite, nous pouvons spécifier certaines règles de pare-feu avec harden_linux_ufw_rules
. Par défaut, cela permet le trafic SSH sur le port 22
, utilisant le protocole tcp
:
harden_linux_ufw_rules:
- rule: "allow"
to_port: "22"
protocol: "tcp"
Les paramètres disponibles avec des valeurs par défaut (le cas échéant) :
rule (pas de valeur par défaut)
interface (valeur par défaut '')
direction (valeur par défaut 'in')
from_ip (valeur par défaut 'any')
to_ip (valeur par défaut 'any')
from_port (valeur par défaut '')
to_port (valeur par défaut '')
protocol (valeur par défaut 'any')
log (valeur par défaut 'false')
delete (valeur par défaut 'false')
Une règle peut avoir les valeurs allow
, deny
, limit
et reject
. L'interface spécifie l'interface pour la règle. La direction (in
ou out
) utilisée pour l'interface. L'adresse IP source spécifie l'adresse IP source et l'adresse IP de destination spécifie l'adresse IP de destination. Le protocole est any
par défaut. Les valeurs possibles sont tcp
, udp
, ipv6
, esp
, ah
, gre
et igmp
. Le log peut être soit false
(par défaut) ou true
et spécifie si les nouvelles connexions correspondant à cette règle doivent être enregistrées. Le delete spécifie si une règle doit être supprimée. Cela est important si une règle précédemment ajoutée doit être supprimée. Il ne suffit pas de retirer une règle de harden_linux_ufw_rules
! Vous devez utiliser delete
pour supprimer cette règle.
Vous pouvez également autoriser les hôtes à communiquer sur des réseaux spécifiques (sans restrictions de port) par exemple :
harden_linux_ufw_allow_networks:
- "10.3.0.0/24"
- "10.200.0.0/16"
Ensuite, le rôle harden_linux
modifie également certaines variables système (sysctl.conf / système de fichiers proc). Ces paramètres sont des recommandations de Google qu'ils utilisent pour leurs images OS de Google Compute Cloud (voir Google Cloud - Exigences pour construire des images personnalisées et Configurer votre image importée pour Compute Engine). Voici les paramètres par défaut (si vous êtes satisfait de ces paramètres, vous n'avez rien à faire mais je recommande de vérifier s'ils fonctionnent pour votre configuration) :
harden_linux_sysctl_settings:
"net.ipv4.tcp_syncookies": 1 # Activer la protection contre les attaques par syn flood
"net.ipv4.conf.all.accept_source_route": 0 # Ignorer les paquets source-routés
"net.ipv6.conf.all.accept_source_route": 0 # IPv6 - Ignorer les redirections ICMP
"net.ipv4.conf.default.accept_source_route": 0 # Ignorer les paquets source-routés
"net.ipv6.conf.default.accept_source_route": 0 # IPv6 - Ignorer les paquets source-routés
"net.ipv4.conf.all.accept_redirects": 0 # Ignorer les redirections ICMP
"net.ipv6.conf.all.accept_redirects": 0 # IPv6 - Ignorer les redirections ICMP
"net.ipv4.conf.default.accept_redirects": 0 # Ignorer les redirections ICMP
"net.ipv6.conf.default.accept_redirects": 0 # IPv6 - Ignorer les redirections ICMP
"net.ipv4.conf.all.secure_redirects": 1 # Ignorer les redirections ICMP des hôtes non-GW
"net.ipv4.conf.default.secure_redirects": 1 # Ignorer les redirections ICMP des hôtes non-GW
"net.ipv4.ip_forward": 0 # Ne pas autoriser le trafic entre les réseaux ou agir en tant que routeur
"net.ipv6.conf.all.forwarding": 0 # IPv6 - Ne pas autoriser le trafic entre les réseaux ou agir en tant que routeur
"net.ipv4.conf.all.send_redirects": 0 # Ne pas autoriser le trafic entre les réseaux ou agir en tant que routeur
"net.ipv4.conf.default.send_redirects": 0 # Ne pas autoriser le trafic entre les réseaux ou agir en tant que routeur
"net.ipv4.conf.all.rp_filter": 1 # Filtrage de chemin inverse - Protection contre le spoofing IP
"net.ipv4.conf.default.rp_filter": 1 # Filtrage de chemin inverse - Protection contre le spoofing IP
"net.ipv4.icmp_echo_ignore_broadcasts": 1 # Ignorer les diffusions ICMP pour éviter de participer à des attaques Smurf
"net.ipv4.icmp_ignore_bogus_error_responses": 1 # Ignorer les mauvaises erreurs ICMP
"net.ipv4.icmp_echo_ignore_all": 0 # Ignorer les mauvaises erreurs ICMP
"net.ipv4.conf.all.log_martians": 1 # Journaliser les paquets spoofés, source-routés et redirigés
"net.ipv4.conf.default.log_martians": 1 # Journaliser les paquets spoofés, source-routés et redirigés
"net.ipv4.tcp_rfc1337": 1 # Implémenter le correctif RFC 1337
"kernel.randomize_va_space": 2 # Randomiser les adresses de la base mmap, heap, stack et page VDSO
"fs.protected_hardlinks": 1 # Fournir une protection contre les courses ToCToU
"fs.protected_symlinks": 1 # Fournir une protection contre les courses ToCToU
"kernel.kptr_restrict": 1 # Rendre la localisation des adresses noyau plus difficile
"kernel.perf_event_paranoid": 2 # Rendre perf disponible uniquement au root
Vous pouvez remplacer chaque paramètre en créant par exemple une variable appelée harden_linux_sysctl_settings_user
:
harden_linux_sysctl_settings_user:
"net.ipv4.ip_forward": 1
"net.ipv6.conf.default.forwarding": 1
"net.ipv6.conf.all.forwarding": 1
Une des tâches du playbook combinera harden_linux_sysctl_settings
et harden_linux_sysctl_settings_user
, tandis que les paramètres de harden_linux_sysctl_settings_user
auront la préférence. Consultez le fichier defaults/main.yml
du rôle pour plus d'informations sur les paramètres.
Si vous souhaitez activer la journalisation UFW, définissez :
harden_linux_ufw_logging: 'on'
Les valeurs possibles sont on
, off
, low
, medium
, high
et full
.
Ensuite, nous avons les paramètres "sshguard". "sshguard" protège contre les attaques par force brute contre SSH. Pour éviter de vous verrouiller pendant un certain temps, vous pouvez ajouter des adresses IP ou des plages IP à une liste blanche. Par défaut, c'est essentiellement uniquement "localhost" :
harden_linux_sshguard_whitelist:
- "127.0.0.0/8"
- "::1/128"
Les paquets NTP peuvent également être installés/configurés. C'est optionnel. Par défaut, je recommande d'utiliser systemd-timesyncd
. Vous pouvez également utiliser le paquet ntp
. Mais openntpd
et systemd-timesyncd
ont l'avantage de ne pas écouter sur des ports par défaut. Si vous voulez juste garder l'horloge des hôtes synchronisée, cela suffit amplement. Avoir la même heure sur tous vos hôtes est critique pour certains services, par exemple pour la validation des certificats, pour etcd, les bases de données, la cryptographie, etc.
Les options valides pour harden_linux_ntp
sont :
- openntpd
- ntp
- systemd-timesyncd
openntpd
et systemd-timesyncd
ont l'avantage de ne pas écouter sur des ports par défaut comme déjà mentionné. Si vous souhaitez juste garder l'heure des hôtes synchronisée, l'un de ces deux devrait faire le travail. systemd-timesyncd
est déjà installé si une distribution utilise systemd
(ce qui est généralement vrai pour la plupart des systèmes d'exploitation Linux de nos jours). Donc, aucun paquet supplémentaire n'est nécessaire dans ce cas. Pour activer openntpd
, définissez harden_linux_ntp
comme suit :
harden_linux_ntp: "openntpd"
Paramètres pour openntpd
, ntpd
ou systemd-timesyncd
(voir le paragraphe suivant). Pour d'autres options, voyez la page de manuel : man 5 ntpd.conf
pour ntp
et openntpd
et man 5 timesyncd.conf
pour systemd-timesyncd
.
La "clé" ici est une expression régulière d'un paramètre que vous souhaitez remplacer et la valeur est le nom du paramètre + la valeur du paramètre. Par exemple, nous voulons remplacer la ligne servers 0.debian.pool.ntp.org
par servers 1.debian.pool.ntp.org
. La regex (la clé) serait ^servers 0
, ce qui signifie :
"recherchez une ligne dans le fichier de configuration qui commence par server 0
et remplacez toute la ligne par servers 1.debian.pool.ntp.org
". De cette manière, chaque paramètre dans le fichier de configuration peut être remplacé par autre chose. Quelques exemples :
harden_linux_ntp_settings:
"^servers 0": "servers 0.debian.pool.ntp.org"
"^servers 1": "servers 1.debian.pool.ntp.org"
"^servers 2": "servers 2.debian.pool.ntp.org"
"^servers 3": "servers 3.debian.pool.ntp.org"
Veuillez noter : systemd-timesyncd
provient de valeurs par défaut raisonnables à la compilation. Donc, normalement, il n'est pas nécessaire de changer la configuration (même pas les serveurs NTP). Donc, les suivants ne sont que des exemples, mais vous n'avez vraiment pas besoin de spécifier harden_linux_ntp_settings
pour systemd-timesyncd
.
Pour systemd-timesyncd
, le fichier de configuration est un peu différent. Dans ce cas, un fichier drop-in systemd pour /etc/systemd/timesyncd.conf
sera créé à /etc/systemd/timesyncd.conf.d/
.
Exemple pour Debian :
harden_linux_ntp_settings:
"^#NTP=": "NTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org"
Pour Ubuntu :
harden_linux_ntp_settings:
"^#NTP=": "NTP=ntp.ubuntu.com"
Pour Archlinux :
harden_linux_ntp_settings:
"^#NTP=": "NTP=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org"
Avec harden_linux_files_to_delete
, une liste de fichiers peut être spécifiée qui doit être absente sur l'hôte cible par exemple :
harden_linux_files_to_delete:
- "/root/.pw"
Si systemd-resolved
est utilisé pour la résolution DNS, son comportement peut être ajusté avec harden_linux_systemd_resolved_settings
. Par défaut, cette variable n'est pas spécifiée. Une configuration drop-in systemd sera créée dans /etc/systemd/resolved.conf.d/99-override.conf
et les paramètres spécifiés y seront ajoutés.
Remarque : Si un paramètre dans /etc/systemd/resolved.conf
est déjà défini (par exemple DNS=8.8.8.8
), alors définir DNS=9.9.9.9
ci-dessous s'ajoutera. Cela signifie que le paramètre final sera DNS=8.8.8.8 9.9.9.9
. Si vous ne le souhaitez pas, vous devez d'abord "définir à vide" la valeur puis ajouter la valeur souhaitée. Par exemple :
harden_linux_systemd_resolved_settings:
- DNS=
- DNS=9.9.9.9
Bien que le serveur DNS de Google (8.8.8.8
, 8.8.4.4
) offre des recherches DNS rapides, c'est bien sûr aussi une possibilité pour Google d'espionner. Donc, utiliser d'autres serveurs DNS devrait au moins être quelque chose à envisager. Mais il y a une autre chose, c'est le chiffrement des requêtes DNS. Une méthode que systemd-resolved
prend en charge est DNSOverTLS
. Quad9 (9.9.9.9/149.112.112.112) et Cloudflare (1.1.1.1/1.0.0.1) supportent DNSOverTLS
.
Donc, les paramètres suivants systemd-resolved
configurent les serveurs DNS de Quad9 et Cloudflare pour IPv4 et IPv6. Le paramètre DNSOverTLS=opportunistic
utilise DNSOverTLS
si le serveur DNS le prend en charge et revient à un DNS non chiffré régulier s'il n'est pas pris en charge (voir aussi resolved.conf.5) :
harden_linux_systemd_resolved_settings:
- DNS=
- DNS=9.9.9.9 1.1.1.1 2606:4700:4700::1111 2620:fe::fe
- FallbackDNS=
- FallbackDNS=149.112.112.112 1.0.0.1 2620:fe::9 2606:4700:4700::1001
- DNSOverTLS=
- DNSOverTLS=opportunistic
De plus, le comportement de mise en cache du gestionnaire de paquets peut être influencé. Par exemple pour Ubuntu :
# Définir sur "false" si le cache des paquets ne doit pas être mis à jour
harden_linux_ubuntu_update_cache: true
# Définir le temps de validité du cache des paquets
harden_linux_ubuntu_cache_valid_time: 3600
Pour Archlinux :
# Définir sur "false" si le cache des paquets ne doit pas être mis à jour
harden_linux_archlinux_update_cache: true
Exemple de Playbook
Si vous avez installé le rôle via ansible-galaxy install githubixx.harden_linux
, vous pouvez inclure le rôle dans votre playbook comme dans cet exemple :
- hosts: webservers
roles:
- githubixx.harden_linux
Test
Ce rôle dispose d'un petit environnement de test créé avec Molecule, libvirt (vagrant-libvirt) et QEMU/KVM. Veuillez consulter mon article de blog Testing Ansible roles with Molecule, libvirt (vagrant-libvirt) and QEMU/KVM pour savoir comment le configurer. La configuration de test est ici.
Ensuite, exécutez molecule :
molecule converge
Cela mettra en place quelques machines virtuelles (VM) avec différents systèmes d'exploitation Linux supportés et configurer le rôle harden_linux
en conséquence. Une petite étape de vérification est également incluse :
molecule verify
Pour nettoyer, exécutez
molecule destroy
Licence
LICENCE PUBLIQUE GÉNÉRALE GNU Version 3
Informations sur l'auteur
Ansible role for hardening Linux
ansible-galaxy install githubixx.harden_linux