
This chef cookbook fournit de nombreuses configurations liées à la sécurité, offrant une protection de base complète.
Ce cookbook fournit de nombreuses configurations liées à la sécurité, offrant une protection de base complète.
Il configure :
pam et pam_limitsIl ne :
['os-hardening']['components'][COMPONENT_NAME] - permet un contrôle fin des composants à exécuter via la recette par défaut. Voir ci-dessous pour plus de détails['os-hardening']['desktop']['enable'] = false
true s'il s'agit d'un système de bureau, c'est-à-dire Xorg, KDE/GNOME/Unity/etc['os-hardening']['network']['forwarding'] = false
true si ce système nécessite le forwarding de paquets (par ex. routeur), false sinon['os-hardening']['network']['ipv6']['enable'] = false['os-hardening']['network']['arp']['restricted'] = true
true si vous souhaitez restreindre le comportement d'annonce et de réponse à ARP, false sinon['os-hardening']['env']['extra_user_paths'] = []
ajoute des chemins supplémentaires à la variable PATH de l'utilisateur (vide par défaut).['os-hardening']['env']['umask'] = "027"['os-hardening']['env']['root_path'] = "/"
où root est monté['os-hardening']['auth']['pw_max_age'] = 60
âge maximal du mot de passe['os-hardening']['auth']['pw_min_age'] = 7
âge minimal du mot de passe (avant de permettre tout autre changement de mot de passe)['os-hardening']['auth']['pw_warn_age'] = 7
nombre de jours avant l'âge maximal du mot de passe pour avertir d'un changement
imminent['os-hardening']['auth']['uid_min'] = 1000
borne inférieure des UID attribués par useradd['os-hardening']['auth']['uid_max'] = 60000
borne supérieure des UID attribués par useradd['os-hardening']['auth']['gid_min'] = 1000
borne inférieure des GID attribués par groupadd['os-hardening']['auth']['gid_max'] = 60000
borne supérieure des GID attribués par groupadd['os-hardening']['auth']['retries'] = 5
le nombre maximal de tentatives d'authentification, avant que le compte ne soit verrouillé pendant un certain temps['os-hardening']['auth']['lockout_time'] = 600
temps en secondes qui doit s'écouler, si le compte a été verrouillé en raison de trop nombreuses tentatives d'authentification échouées['os-hardening']['auth']['timeout'] = 60
délai d'authentification en secondes, la connexion se terminera si ce temps est dépassé['os-hardening']['auth']['allow_homeless'] = false
true pour autoriser les utilisateurs sans répertoire personnel à se connecter['os-hardening']['auth']['pam']['passwdqc']['enable'] = true
true si vous souhaitez utiliser une vérification de mot de passe forte dans PAM avec passwdqc['os-hardening']['auth']['pam']['passwdqc']['options'] = "min=disabled,disabled,16,12,8"
défini sur toute ligne d'options (sous forme de chaîne) que vous souhaitez transmettre à passwdqc['os-hardening']['auth']['pam']['passwdqc']['template_cookbook'] = 'os-hardening'
défini sur le nom du cookbook à partir duquel le modèle est obtenu pour le fichier /usr/share/pam-configs/passwdqc['os-hardening']['auth']['pam']['tally2']['template_cookbook'] = 'os-hardening'
défini sur le nom du cookbook à partir duquel le modèle est obtenu pour le fichier /usr/share/pam-configs/tally2['os-hardening']['auth']['pam']['system-auth']['template_cookbook'] = 'os-hardening'
défini sur le nom du cookbook à partir duquel le modèle est obtenu pour le fichier /etc/pam.d/system-auth-ac['os-hardening']['security']['users']['allow'] = []
liste des actions qu'un utilisateur est autorisé à effectuer. Peut contenir : change_user['os-hardening']['security']['kernel']['enable_module_loading'] = true
true si vous souhaitez être autorisé à modifier les modules du noyau une fois le système en cours d'exécution (par ex. modprobe, rmmod)['os-hardening']['security']['kernel']['disable_filesystems'] = ['cramfs', 'freevxfs', 'jffs2', 'hfs', 'hfsplus', 'squashfs', 'udf', 'vfat']
liste des modules de systèmes de fichiers du noyau, qui sont mis sur liste noire pour le chargement (par ex. ils sont inutilisés et peuvent être désactivés). Définissez ceci sur [] pour éviter complètement cette mise sur liste noire['os-hardening']['security']['kernel']['enable_sysrq'] = false['os-hardening']['security']['kernel']['enable_core_dump'] = false['os-hardening']['security']['suid_sgid']['enforce'] = true
true si vous souhaitez réduire les bits SUID/SGID. Il existe déjà une liste d'éléments recherchés et configurés, mais vous pouvez également ajouter les vôtres['os-hardening']['security']['suid_sgid']['blacklist'] = []
une liste de chemins dont les bits SUID/SGID doivent être supprimés['os-hardening']['security']['suid_sgid']['whitelist'] = []
une liste de chemins dont les bits SUID/SGID ne doivent pas être modifiés['os-hardening']['security']['suid_sgid']['remove_from_unknown'] = false
true si vous souhaitez supprimer les bits SUID/SGID de tout fichier qui n'est pas explicitement configuré dans une blacklist. Cela fera rechercher à chaque exécution de Chef les bits SUID/SGID non configurés dans la liste noire par défaut et celle de l'utilisateur sur les systèmes de fichiers montés. S'il trouve un bit SUID/SGID, il sera supprimé, sauf si ce fichier figure dans votre whitelist.['os-hardening']['security']['suid_sgid']['dry_run_on_unknown'] = false
comme remove_from_unknown ci-dessus, sauf que les bits SUID/SGID ne sont pas supprimés.
Il recherchera toujours les bits SUID/SGID sur les systèmes de fichiers, mais il les affichera uniquement dans votre journal. Cette option n'est recommandée que lorsque vous configurez d'abord remove_from_unknown pour les bits SUID/SGID, afin de pouvoir voir les fichiers modifiés et apporter des ajustements à votre whitelist et votre blacklist.['os-hardening']['security']['packages']['clean'] = true
supprime les paquets présentant des problèmes connus.['os-hardening']['security']['packages']['list'] = ['xinetd','inetd','ypserv','telnet-server','rsh-server']
liste des paquets à supprimer, par défaut nous supprimons les paquets suivants :
['os-hardening']['security']['selinux_mode'] = 'unmanaged'
défini sur unmanaged si vous souhaitez laisser la configuration SELinux telle quelle. Défini sur enforcing pour appliquer ou permissive pour un SELinux permissif.default.rb inclut d'autres composants en fonction des attributs de détection automatique ohai de votre système. Par exemple, n'exécutez pas selinux sur les systèmes non-RHEL. Vous pouvez remplacer ce comportement et forcer l'exécution ou non de composants en définissant des attributs dans node['os-hardening']['components'] au niveau de remplacement. Exemple
# un fichier d'attributs
# n'incluez pas sysctl et auditd
override['os-hardening']['components']['sysctl'] = false
override['os-hardening']['components']['auditd'] = false
# forcez l'inclusion de selinux
override['os-hardening']['components']['selinux'] = true
Dans l'implémentation actuelle, différents composants sont situés dans différentes recettes. Consultez les recettes disponibles ou default.rb pour connaître les noms de composants possibles.
Ajoutez les recettes à la run_list, elle devrait être en dernier :
"recipe[os-hardening]"
Configurez les attributs :
"security" : {
"kernel" : {
"enable_module_loading" : true
}
},
Veuillez installer chef-dk, VirtualBox ou VMware Workstation et Vagrant.
Le linting est vérifié avec rubocop et foodcritic :
$ chef exec rake lint
.....
Les tests unitaires/spécifications sont effectués avec chefspec :
$ chef exec rake spec
.....
Les tests d'intégration sont effectués avec test-kitchen et inspec :
$ chef exec rake kitchen
.....
# ou vous pouvez utiliser kitchen directement
$ kitchen test
Vous pouvez activer les tests de votre fork dans Travis CI. Par défaut, vous obtiendrez le linting, les tests de spécifications et les tests d'intégration avec kitchen-dokken.
Les tests d'intégration avec kitchen-dokken ne couvrent pas tout car ils s'exécutent dans l'environnement du conteneur. Les tests d'intégration complets peuvent être exécutés à l'aide de DigitalOcean.
Si vous souhaitez disposer de tests d'intégration complets pour votre fork, vous devrez ajouter les variables d'environnement suivantes dans les paramètres de votre fork :
DIGITALOCEAN_ACCESS_TOKEN - jeton d'accès pour DigitalOceanCI_SSH_KEY - partie privée d'une clé ssh, disponible sur DigitalOcean pour vos instances, sous forme encodée en base64 (par ex. cat id_rsa | base64 -w0 ; echo)DIGITALOCEAN_SSH_KEY_IDS - ID dans DigitalOcean de CI_SSH_KEY, voir ceci pour plus d'informationsCe cookbook est principalement basé sur des guides de :
Merci à vous tous !!
Sous licence Apache License, Version 2.0 (la « Licence ») ; vous ne pouvez utiliser ce fichier qu'en conformité avec la Licence. Vous pouvez obtenir une copie de la Licence à l'adresse
http://www.apache.org/licenses/LICENSE-2.0
Sauf si requis par la loi applicable ou convenu par écrit, le logiciel distribué sous la Licence est distribué sur une base « EN L'ÉTAT », SANS GARANTIES OU CONDITIONS D'AUCUNE SORTE, expresses ou implicites. Consultez la Licence pour connaître les autorisations et limitations spécifiques régissant la Licence.