alivx.ansible_cis_nginx_hardening

Renforcement de Nginx avec Ansible CIS
(encore en phase de test)
Basé sur le Benchmark NGINX CIS v1.0.0 - 28-02-2019
Nginx est sans doute l'un des serveurs web gratuits et open source les plus utilisés pour héberger des sites à fort trafic. Il est bien connu pour sa stabilité, ses performances exceptionnelles, sa faible consommation de ressources et sa configuration allégée.
Les configurations par défaut ne sont pas sécurisées et des ajustements supplémentaires sont nécessaires pour renforcer le serveur web et lui donner la sécurité nécessaire pour prévenir les attaques et les violations. Ce rôle établit une posture de configuration sécurisée pour NGINX fonctionnant sur Ubuntu.
Informations sur le score
- Un statut de score indique si la conformité avec la recommandation donnée a un impact sur le score de référence évalué. Les statuts de score suivants sont utilisés dans ce benchmark :
Évalué (implémenté dans ce rôle)
- Le non-respect des recommandations "Évalué" diminuera le score final du benchmark. La conformité avec les recommandations "Évalué" augmentera le score final du benchmark.
Non Évalué (non implémenté dans ce rôle)
- Le non-respect des recommandations "Non Évalué" ne diminuera pas le score final du benchmark. La conformité avec les recommandations "Non Évalué" n'augmentera pas le score final du benchmark.
Les principaux avantages d'utiliser des paquets NGINX de votre fournisseur sont :
- Facilité d'installation
- Résolution des dépendances
- Efficacité accrue des mises à jour de maintenance et de sécurité
- Procédures de questions-réponses réalisées par votre fournisseur
Exigences
Comme ce rôle installera le dernier paquet Nginx à partir du référentiel de l'OS, assurez-vous d'exécuter ce rôle sur un serveur nginx frais, cela gérera le processus d'installation.
Cela peut fonctionner si vous avez déjà installé Nginx sur votre serveur.
Variables du rôle
configuration comme suit
large_client_header_buffers: "2 1k"
client_max_body_size: "100K"
client_body_timeout: 10
client_header_timeout: 10
strict_transport_security_max_age: 15768000 # directive max-age avec 15768000 secondes (six mois) ou plus
nginx_site_config_dir: /etc/nginx/sites-available/
#Ou TOUT:!EXP:!NULL:!ADH:!LOW:!SSLv2:!SSLv3:!MD5:!RC4;
ssl_ciphers: ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
nginx_key: /etc/ssl/private/nginx-selfsigned.key
nginx_cert: /etc/ssl/certs/nginx-selfsigned.crt
backendserver: http://localhost:3000
backendserver_ssl: True
access_log: /var/log/nginx/alivx.com.access.log
error_log: /var/log/nginx/alivx.com.error.log warn
domainName: 172.16.186.129
Dépendances
Exemple de Playbook
Inclure un exemple de la façon dont utiliser votre rôle (par exemple, avec des variables passées en tant que paramètres) est toujours agréable pour les utilisateurs :
---
- hôtes: host1
devenir: oui
utilisateur_à_distance: root
gather_facts: non
rôles:
- { rôle: "ansible-cis-nginx-hardening" }
Benchmarks
- 1 Configuration initiale
- 1.1 Installation
- 1.1.1 Assurer que NGINX est installé (Évalué)
- 1.2 Configurer les mises à jour logicielles
- 2 Configuration de base
- 2.1 Minimiser les modules NGINX
- 2.1.2 Assurer que le module WebDAV HTTP n'est pas installé (Évalué)
- 2.1.3 Assurer que les modules avec la fonctionnalité gzip sont désactivés (Évalué)
- 2.1.4 Assurer que le module autoindex est désactivé (Évalué)
- 2.2 Sécurité des comptes
- 2.2.2 Assurer que le compte de service NGINX est verrouillé (Évalué)
- 2.2.3 Assurer que le compte de service NGINX a un shell invalide (Évalué)
- 2.3 Permissions et Propriété
- 2.3.1 Assurer que les répertoires et fichiers NGINX sont détenus par root (Évalué)
- 2.3.2 Assurer que l'accès aux répertoires et fichiers NGINX est restreint (Évalué)
- 2.3.3 Assurer que le fichier d'identification du processus NGINX (PID) est sécurisé (Évalué)
- 2.4 Configuration réseau
- 2.4.1 Assurer que NGINX écoute uniquement les connexions réseau sur des ports autorisés (Non Évalué)
- 2.4.3 Assurer que le keepalive_timeout est de 10 secondes ou moins, mais pas 0 (Évalué)
- 2.4.4 Assurer que le send_timeout est réglé sur 10 secondes ou moins, mais pas 0 (Évalué)
- 2.5 Divulgation d'informations
- 2.5.1 Assurer que la directive server_tokens est définie sur
off
(Évalué) - 2.5.2 Assurer que les pages d'erreur par défaut et index.html ne font pas référence à NGINX (Évalué)
- 2.5.4 Assurer que le reverse proxy NGINX ne permet pas la divulgation d'informations (Évalué)
- 3 Journaux
- 3.2 Assurer que l'enregistrement des accès est activé (Évalué)
- 3.3 Assurer que l'enregistrement des erreurs est activé et réglé sur le niveau d'enregistrement d'informations (Évalué)
- 3.4 Assurer que les fichiers journaux sont tournés (Évalué)
- 3.7 Assurer que les proxys transmettent l'information de l'IP source (Évalué)
- 4 Chiffrement
- 4.1 Configuration TLS / SSL
- 4.1.1 Assurer que HTTP est redirigé vers HTTPS (Évalué)
- 4.1.3 Assurer que les permissions de la clé privée sont restreintes (Évalué)
- 4.1.4 Assurer que seuls des protocoles TLS modernes sont utilisés (Évalué)
- 4.1.5 Désactiver les chiffrements faibles (Évalué)
- 4.1.6 Assurer que des paramètres Diffie-Hellman personnalisés sont utilisés (Évalué)
- 4.1.7 Assurer que le protocole de statut de certificat en ligne (OCSP) est activé (Évalué)
- 4.1.8 Assurer que la sécurité stricte du transport HTTP (HSTS) est activée (Évalué)
- 4.1.10 Assurer que le trafic des serveurs en amont est authentifié avec un certificat client (Évalué)
- 4.1.13 Assurer que la reprise de session est désactivée pour permettre une sécurité parfaite à long terme (Évalué)
- 5 Filtrage et restrictions des requêtes
- 5.1 Contrôle d'accès
- 5.2 Limites de requêtes
- 5.2.1 Assurer que les valeurs de délai d'attente pour la lecture de l'en-tête et du corps du client sont réglées correctement (Évalué)
- 5.2.2 Assurer que la taille maximale du corps de la requête est réglée correctement (Évalué)
- 5.2.3 Assurer que la taille maximale du tampon pour les URI est définie (Évalué)
- 5.3 Sécurité des navigateurs
- 5.3.1 Assurer que l'en-tête X-Frame-Options est configuré et activé (Évalué)
- 5.3.2 Assurer que l'en-tête X-Content-Type-Options est configuré et activé (Évalué)
- 5.3.3 Assurer que l'en-tête X-XSS-Protection est activé et configuré correctement (Évalué)
Licence
LICENCE PUBLIQUE GÉNÉRALE GNU
Informations sur l'auteur
Le rôle a été initialement développé par Ali Saleh Baker.
Lorsque vous contribuez à ce référentiel, veuillez d'abord discuter du changement que vous souhaitez apporter via un problème GitHub, un e-mail, ou par d'autres canaux avec moi :)
Nginx CIS
ansible-galaxy install alivx.ansible_cis_nginx_hardening