• [^] # Re: Mes deux centimes

    Posté par . En réponse au message Fail2ban conf : failregex. Évalué à 3.

    Il y a un truc que je ne comprends pas. Qu’est-ce que ce <HOST> ici :

    "message":"Login failed: '.*' \(Remote IP: '<HOST>'\)",

    Est-ce que par hasard ce ne serait pas un truc donné en exemple dans une doc, et donc à remplacer ? Ou bien c’est fail2ban qui remplace automatiquement ? Si tu remplaces '<HOST>' par '.*' ça donne quoi ?

    Ici le premier .* va matcher n’importe quel user (arthur575 dans ton exemple), mais là, d’après ce que je comprends (mais je ne connais vraiment pas fail2ban attention!) il faudrait, pour matcher, que ton JSON de log ait une valeur (pour "message") contenant réellement la chaîne <HOST>, bref : ??! (j’essaie d’apprendre en même temps...)

    De manière générale, en terme d’expression régulière, dans l’expression .* on a :

    • . signifiant « n’importe quel caractère »
    • * un « quantifieur » (ou quantificateur), signifiant « répété zéro ou plus fois » (ça s’applique au caractère (ou au groupe de capture ou à la classe...) qui le précède)

    .* est donc une regex un peu particulière : elle match tout. Même une chaîne vide puisque le caractère peu être répété zéro fois.

    À titre d’exemple : .+ matcherait tout, sauf une chaîne vide, le quantifieur + signifiant lui : « répété une ou plus fois »

    Les regex semblent difficiles à comprendre de prime abord mais une fois qu’on a compris les bases, on se rend compte que c’est hyper-puissant et qu’on peut faire pas mal de choses avec. Personnellement j’ai découvert les regex trop tard dans ma carrière, ça m’aurait parfois fait gagner énormément de temps dans des développements...