Pour faciliter le déploiement de mes services et aussi pour des raisons de sécurité, j’essaye d’utiliser Docker au maximum. Ces conteneurs ne font pas directement parti du système, il est donc nécessaire d’ajuster certaines configurations.
Pré-requis
Installez Fail2ban en utilisant votre gestionnaire de paquets et déployez Nginx en utilisant Docker.
Monter les fichier
Dans mon fichier Compose, je monte directement le dossier utilisé par Nginx pour les logs.
volumes:
- /var/log/nginx:/var/log/nginx
Pour Kubernetes, vous devez utiliser un volume.
volumeMounts:
- name: nginx-logs
mountPath: /var/log/nginx
volumes:
- name: nginx-logs
hostPath:
path: /var/log/nginx
Nous allons aussi avoir besoin de gérer ces fichier de logs, sinon ils vont grossir et remplir le disque. Créez le fichier /etc/logrotate.d/nginx
insérez le contenu suivant :
/var/log/nginx/*.log {
rotate 7
missingok
copytruncate
rotate 52
compress
delaycompress
}
Activer les Jails
Créez le fichier de configuration /etc/fail2ban/jail.local
et ajoutez
[nginx-botsearch]
enabled = true
[nginx-http-auth]
enabled = true
[nginx-limit-req]
enabled = true
Redémarrez Fail2ban
service fail2ban restart
Nous pouvons vérifier que nos Jails sont activés :
fail2ban-client status
Status
|- Number of jail: 4
`- Jail list: nginx-botsearch, nginx-http-auth, nginx-limit-req, sshd
Le module nginx-limit-req va demander un peu plus de configuration. Vous devez activer ngx_http_limit_req_module dans Nginx, je vous laisse suivre la documentation.
Conclusion
Combiner un conteneur Nginx et Fail2ban est relativement simple mais demande quelques ajustements par rapport à une intégration native. Vous pouvez utiliser une configuration similaire pour intégrer Fail2ban avec d’autres logiciel tournant dans des conteneurs.
Bonjour,
pourrais tu détailler les raisons de sécurités qui sous entendent l’utilisation de docker ?
Personnellement, pour des raisons de sécurité je ne met pas de docker en production.
Ma raison principal est un manque de confiance envers la disparité des sources. A chaque fois que je lis des articles sur la sécurité de docker, on en revient au manque de mise à jour des images de base.
En tant qu’administrateur système la mise à jour d’un système est le critère de base de la sécurité : Un système à jour n’est pas forcement sécurisé, mais un système qui n’est pas à jour n’est pas sécurisé.
Bonjour Xylle,
Utiliser Docker dans mon contexte a de nombreux avantages :
– Aucune dépendance aux paquets de ma distribution
– Choix des montées en version
– Chaque conteneur est séparé de ses voisins
– Moins de logiciels installés directement sur la machine
– Gestion des ressources CPU/mémoire
Par-contre, je te rejoins sur la disparité des sources et les mises à jour. Pour éviter les problèmes de sécurité, je n’utilise que des images officielles, très simple ou provenant de sources fiables. J’ai aussi quelques images que je maintiens moi-même : https://github.com/V-Paranoiaque/docker
Docker me permet aussi de préparer plus facilement les différents environnements de mon jeu, en local avant de déployer.