• Docker
  • [Docker] Fail2Ban sur l'host avec Nginx dockerisé

Tu peu te servir de la fonction regex pour vérifier ta conf

fail2ban-regex /data/nginx/log/ton-fichier.log /etc/fail2ban/filter.d/ton-fichier.conf

Sinon ne pas oublier de passer l'option
chain = FORWARD dans ta jail

😉

3 mois plus tard

Ho di ho !!!

Bon bah j'avais laché l'affaire, virer fail2ban et tout ça, mais comme j'ai un peu de temps en ce moment, j'me suis dit que j'allais m'y remettre (si jamais il y a eu des avancés chez certains entre temps 🙂 )

Donc depuis je suis passé sous debian 9 - stretch

J'ai réinstallé la dernière version officiel de docker par leurs repots à eux, fail2ban (depuis le repot stretch) et mon portsentry tourne toujours.

J'ai check mes regex fail2ban de mes jails, et j'ai bien des centaines de match dans mes logs, pourtant pas de ban de la part de fail2ban.

@kilroy je ne sais pas si tu es encore sur ce fofo, mais qu'entends-tu par ta dernière ligne ?

Merci anyway =)

    lokiii Dans le fichier "jail.conf" de Fail2ban, tu dois avoir une option avec "chain = INPUT".
    Étant donné que le trafic passent par la chaîne FORWARD avec Docker, essaye de modifier cette option en conséquence.

    rah j'ai espéré de dingue quand j'ai vu ce message, mais malheureusement j'ai modifié la chain = INPUT en FORWARD, redémarré le service, mais non, toujours pas de ban quand je bourrine mon serv depuis mon tel... 🙁

    J'ai bien toujours mes logs qui se peuplent avec toutes mes tentatives foireuses..

    Après y'a un truc que je comprends pas : mon fail2ban est sur mon host, et il parse des logs aussi sur mon host, je connais pas beaucoup le soft, mais j pensais qu'il parsait juste des logs à la recherche de regex et qu'il ajoutait l'IP en question dans un jail qui sera drop ? on est d'accord ? alors pourquoi le fait que docker run mon reverse proxy change la donne ?

    Je suis pas un pro mais oui, tes logs sont également sur ton hôte mais ça n'empêche pas que tout le trafic passe par FORWARD et l'interface réseau "docker0". Donc il peut rien drop à l'heure actuel.

    J'ai peut-être trouvé quelque chose sur le net pour toi.

    Premier fichier : https://github.com/SuperITMan/docker-fail2ban/blob/master/action.d/docker-iptables-multiport.conf

    Deuxième fichier : https://github.com/SuperITMan/docker-fail2ban/blob/master/jail.local

    J'ai check un peu tout ça, mais c'est pour une image docker qui fait tourner fail2ban, et non un fail2ban sur l'hôte avec un docker revers proxy

    Bon et sinon, après maintes modifs et autres tests, j'ai pas plus avancé... voici mon fail2ban-regex:

     fail2ban-regex /docker/data/nginx/log/nginx_error.log /etc/fail2ban/filter.d/nginx-http-auth.conf
    
    Running tests
    =============
    
    Use   failregex filter file : nginx-http-auth, basedir: /etc/fail2ban
    Use         log file : /docker/data/nginx/log/nginx_error.log
    Use         encoding : UTF-8
    
    
    Results
    =======
    
    Failregex: 196 total
    |-  #) [# of hits] regular expression
    |   1) [196] ^ \[error\] \d+#\d+: \*\d+ user "\S+":? (password mismatch|was not found in ".*"), client: <HOST>, server: \S*, request: "\S+ \S+ HTTP/\d+\.\d+", host: "\S+"(, referrer: "\S+")?\s*$
    `-
    
    Ignoreregex: 0 total
    
    Date template hits:
    |- [# of hits] date format
    |  [241] Year(?P<_sep>[-/.])Month(?P=_sep)Day 24hour:Minute:Second(?:,Microseconds)?
    `-
    
    Lines: 241 lines, 0 ignored, 196 matched, 45 missed
    [processed in 0.02 sec]

    Je sais bien que ça vient d'une image docker, mais sauf erreur de ma part (qui est tout à fait possible) c'est le même réseau et la même chaîne.

    Tu devrais essayer...

    EDIT : Tu vois ce qu'il faudrait modifier ?

    @Rathorian merci, je me doutais que tu avais calé que c'était une image docker, juste pour être sur la même longueur d'ondes =) (et merci encore pour ton aide)

    Alors oui, j'ai bien check et modifier:
    - la directive backend en polling
    - ajouter l'action dans mes déclarations de jails nginx
    - créer le fichier docker_multiports appelés par les jails
    - redémarrer fail2ban

    Toujours pareil, mes jails se chargent, les regex sont bonnes, mes log se peuplent, mais personne ne se fait ban

    Salut,

    Ok. Je pourrais voir ton fichier jail.conf avec les modifications ?
    Il me faudrait aussi la version de fail2ban que tu utilises...

    Fail2ban v0.9.6-2

    Et mon jail.local:

    [DEFAULT]
    
    backend=polling
    
    [nginx-http-auth]
    
    enabled   = true
    filter    = nginx-http-auth
    logpath   = /docker/data/nginx/log/nginx_error.log
    action    = docker-iptables-multiport[name=NoAuthFailures, port="http,https"]
    maxretry  = 6

      lokiii Le fichier docker-iptables-multiports.conf est bien dans "/etc/fail2ban/action.d/" ?

      Pour être sur du truc...

      Sinon je vois pas trop là, si je peux éventuellement te conseiller une dernière chose, c'est de tester carrément l'image docker de fail2ban...

      Yep yep, mon script est bien au bon endroit :/
      J'ai tenté de passé les logs de fail2ban en débug pour voir si y'avait pas un truc louche, et là, OH MY GOD !
      il crache tellement de logs ><
      mais rien de probant non plus... 🙁

      11 jours plus tard

      J'utilise un fail2ban dans un conteneur et ça marche. Mais je sais que j'avais galéré à le faire fonctionner.
      Au final, j'avais dû ajouter une nouvelle action dans le conteneur: docker-action.conf

      Peux-tu tester avec mon script https://github.com/cloneMe/turbo-seedbox ?

      @lokiii je pete l incruste dans ton post un tout petit peu excuse moi d'avance ..!
      @cloneMe, salut ! je suis en train de moi aussi installer un serveur sous docker.. et je me demandais si ton script etait bien fonctionnel ? Et compatible ou pas avec Debian 9 ? 🙂
      Enfin je voulais savoir si il était possible/facile d'ajouter Sonarr et Radarr apres .. ?
      Ah et pour le moment j'ai déjà pas mal d'apps d installées via le script Ratxabox.. et un dossier contant environ 2to de films.. il y a t il moyen de desinstaller sans tout reformater puis d installer ton script ? (sauf si compatbile avec Debian 9 là je reformate)
      Merci d avance ! 😉

      @Pinedours : Mon script installe et utilise docker, docker-compose et curl (si besoin). Docker doit être compatible avec Debian 9, du coup, mon script aussi 😉

      Mon script n'installe pas Sonarr. Est-ce mieux que sickrage ?
      La liste des serveurs que mon script peut installer est dans ce fichier :
      https://github.com/cloneMe/turbo-seedbox/blob/master/build.sh

      @lokiii : je ne peux pas répondre sur ma conversation ( https://mondedie.fr/d/8262-Script-Docker-Installer-rtorrent-sickrage-couchpotato-plex ). Du coup, je continue sur celle-là.

      @Pinedours pas de soucis, profites de l'aide 😉

      @cloneMe Merci beaucoup pour tes réponses, j'avais laissé tombé fail2ban pour passer sous ossec, mais du coup, si j'ai un peu de temps aujourd'hui je vais essayer de voir si en passant par ton script (enfin sa conf), ça fonctionne, je te tiens au courant ! =)

      4 mois plus tard
      Répondre…