Nginx, Docker et Fail2ban

Posted by

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.

Leave a Reply

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *