Swisslinux.org

− Le carrefour GNU/Linux en Suisse −

 

Langue

 

Le Forum

Vous n'êtes pas identifié.

  • Index
  •  » Debian
  •  » fail2ban --> regles et syntaxe d'écriture?

#1 17 Aug 2009 23:46:51

Didier100
Prêcheu(r|se) du libre
 
Date d'inscription: 11 Aug 2005
Messages: 138

fail2ban --> regles et syntaxe d'écriture?

Cela fait un moment que j'utilise fail2ban et j'en suis relativement content.

Ce que je trouve frustrant est qu'il n'y à AUCUNE information sur le net sur le comment écrire ses propres règles.

Fail2ban utilise Python .....

Bon, dans le répertoire /etc/fail2ban/filter.d on trouve tous les fichiers avec les filtres.

Si je prend par exemple le fichier "apache-noscript.conf" je trouve cette régle

Code:

failregex = [[]client <HOST>[]] (File does not exist|script not found or unable to stat): /\S*(\.php|\.asp|\.exe|\.pl)
            [[]client <HOST>[]] script '/\S*(\.php|\.asp|\.exe|\.pl)\S*' not found or unable to stat *$

Il y à certains détails de ce "charabia" qui n'est pas facilement compréhensible pour moi!  Par exemple /\S*

OU peut on trouver des informations permettant l'apprentissage du "codage" de failregex?

En quel langage sont les fichier .conf .... .php , phython, autre???

Je vue qu'il y à une commande pour tester les règles ....

Exemple:

Code:

fail2ban-regex /var/log/apache*/*error.log /etc/fail2ban/filter.d/apache-noscript.conf

Bref c'est grace à fail2ban-regex que je me suis aperçu qu'il y quelques règles qui doivent être mis à jour ... sur mon serveur Debian 5 ... et je pas envie de demander aux autres de m'écrire les règles....  Je préfère apprendre la syntaxe de "fail2ban" ... 

J'ai aussi regardé sur http://www.fail2ban.org/wiki/index.php/FAQ_french  (Questions fréquentes) mais rien sur le sujet de l'écriture des règles.

Merci d'avance.

Dernière modification par Didier100 (18 Aug 2009 09:39:32)

Hors ligne

 

#2 18 Aug 2009 11:21:36

BOFH
Admin
Lieu: Ecublens, VD
Date d'inscription: 03 Feb 2005
Messages: 862
Site web

Re: fail2ban --> regles et syntaxe d'écriture?

Hello,

  Ce charabia s'appelle une regex, tu peux en apprendre plus en:

- http://fr.wikipedia.org/wiki/Expression_rationnelle
- man 7 regex
- man perlre
- google

La seule chose spécifique à fail2ban est le tag <HOST>, comme expliqué dans les commentaires des fichiers de conf:

Code:

# Notes.:  regex to match the password failure messages in the logfile. The
#          host must be matched by a group named "host". The tag "<HOST>" can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P<host>\S+)

Hors ligne

 

#3 18 Aug 2009 19:27:49

Didier100
Prêcheu(r|se) du libre
 
Date d'inscription: 11 Aug 2005
Messages: 138

Re: fail2ban --> regles et syntaxe d'écriture?

Salut BOFH,

AHHHH regex !

Sans ton aide j'ai pu encore chercher longtemps  ... J'ai pense que regex été une variable ...

... Il me semble qu'on utilise le "regex" aussi dans le fichier .htaccess .... c'est bien ça?

Encore GRAND Merci ... Je vais garder les sources que tu à cité. wink

Dernière modification par Didier100 (18 Aug 2009 19:38:03)

Hors ligne

 

#4 19 Aug 2009 01:01:55

Didier100
Prêcheu(r|se) du libre
 
Date d'inscription: 11 Aug 2005
Messages: 138

Re: fail2ban --> regles et syntaxe d'écriture?

Je pu enfin écrire et tester "mon" premier filtre pour fail2ban ... grâce à l'aide de BOFH.

Nom du filtre named-zone-transfer.conf


Dans mon fichier /var/log/named/security.log j'ai trouve des très nombreuses lignes de ce type

17-Aug-2009 21:55:17.774 client 82.146.38.160#52372: zone transfer 'mon_nom_de_domaine.fr/AXFR/IN' denied

qui ne sont pas pris en charge par le filtre named-refused.conf.

J'ai décide d'écrire un nouveau filtre ...

Le filtre repose sur celui de named-refused.conf ... légèrement modifie pour qu'il répond aux attaques de "zone transfer".

Le fichier  named-zone-transfer.conf doit être crée dans le répertoire /etc/fail2ban/filter.d


Code:

# Fail2Ban configuration file for named (bind9). Trying to generalize the
#          structure which is general to capture general patterns in log
#          lines to cover different configurations/distributions
#
# Author: Yaroslav Halchenko
#
# Adaptation and changement made by Dieter Fleischer 19th of August 2009
# Filter Name : named-zone-transfer.conf
#

[Definition]

#
# Daemon name
_daemon=named

#
# Shortcuts for easier comprehension of the failregex
__pid_re=(?:\[\d+\])
__daemon_re=\(?%(_daemon)s(?:\(\S+\))?\)?:?
__daemon_combs_re=(?:%(__pid_re)s?:\s+%(__daemon_re)s|%(__daemon_re)s%(__pid_re)s?:)
#       hostname       daemon_id         spaces
# this can be optional (for instance if we match named native log files)
__line_prefix=(?:\s\S+ %(__daemon_combs_re)s\s+)?

# Option: failregex
# Notes.: regex to match the password failures messages in the logfile.
# Values: TEXT
#
failregex = %(__line_prefix)sclient <HOST>#\S+: zone transfer '.*' denied\s*$


# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =

Puis ajoutez ceci dans le contenu du fichier /etc/fail2ban/jail.conf

Code:

[named-zone-transfer]

enabled  = true
port     = domain,953
# protocol = tcp
filter   = named-zone-transfer
logpath  = /var/log/named/security.log
maxretry = 2

Voici la commande pour un petit test du filtre:

fail2ban-regex /var/log/named/security.log /etc/fail2ban/filter.d/named-zone-transfer.conf

à 'écran je reçois ceci ... extraît des dernières lignes:

Code:

    82.146.38.160 (Tue Aug 18 23:53:36 2009)
    82.146.38.160 (Tue Aug 18 23:54:32 2009)
    82.146.38.160 (Tue Aug 18 23:59:04 2009)
    82.146.38.160 (Tue Aug 18 23:59:51 2009)
    82.146.38.160 (Wed Aug 19 00:00:23 2009)
    82.146.38.160 (Wed Aug 19 00:01:06 2009)
    82.146.38.160 (Wed Aug 19 00:01:48 2009)
    82.146.38.160 (Wed Aug 19 00:02:09 2009)
    82.146.38.160 (Wed Aug 19 00:03:03 2009)
    82.146.38.160 (Wed Aug 19 00:04:25 2009)
    82.146.38.160 (Wed Aug 19 00:04:56 2009)
    82.146.38.160 (Wed Aug 19 00:15:23 2009)
    82.146.38.160 (Wed Aug 19 00:15:58 2009)
    82.146.38.160 (Wed Aug 19 00:26:18 2009)
    82.146.38.160 (Wed Aug 19 00:29:13 2009)

Date template hits:
0 hit(s): Month Day Hour:Minute:Second
0 hit(s): Weekday Month Day Hour:Minute:Second Year
0 hit(s): Weekday Month Day Hour:Minute:Second
0 hit(s): Year/Month/Day Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/Month/Year:Hour:Minute:Second
0 hit(s): Year-Month-Day Hour:Minute:Second
1829 hit(s): Day-Month-Year Hour:Minute:Second[.Millisecond]
0 hit(s): TAI64N
0 hit(s): Epoch
0 hit(s): ISO 8601

Success, the total number of match is 899

However, look at the above section 'Running tests' which could contain important
information.
sd-1xxxx:/etc/fail2ban/filter.d#

Bon reste qu'à activer le filtre avec la commande /etc/init.d/fail2ban restart

Et voici l'attaquant pris au piège ... on vérifié avec la commande iptables -L -n

Code:

Chain fail2ban-named-zone-transfer (1 references)
target     prot opt source               destination
DROP       all  --  82.146.38.160        0.0.0.0/0
RETURN     all  --  0.0.0.0/0            0.0.0.0/0

Un dernier Conseil
============
Avant d'activer les filtres "# DNS Servers" dans le fichier jail.conf vous devez copier ceci dans votre fichier /etc/bind/named.conf.local

Code:

logging {
    channel security_file {
        file "/var/log/named/security.log" versions 3 size 30m;
        severity dynamic;
        print-time yes;
    };
    category security {
        security_file;
    };
};

puis vous devez créer le répertoire named ( il n'existe pas ... et c'est pas mentionnée? Surement un oublie)

Code:

mkdir /var/log/named

J'ai trouvé les informations sur la page http://www.debian-administration.org/articles/623

Puis il faut redémarrer bind  /etc/init.d/bind9 restart  si non votre fichier log reste vide!

J'ai trouvé ce lien http://www.perl.com/doc/manual/html/pod/perlre.html qui me semble être intéressant aux sujet d'une expression rationnelle ou expression régulière.

Dernière modification par Didier100 (19 Aug 2009 08:51:05)

Hors ligne

 

#5 05 Nov 2009 20:31:04

Didier100
Prêcheu(r|se) du libre
 
Date d'inscription: 11 Aug 2005
Messages: 138

Re: fail2ban --> regles et syntaxe d'écriture?

Je avoue qu'il n'est pas très facile d'apprendre la syntaxe des Regex .... qoui...que....
J'ai trouvé ce tutoriel en deux parties, très bien fait: Les expressions régulières avec des nombreux exemples .... Le tutoriel et des exemples sont "calque" sur le langage de programmation Php.

Dernière modification par Didier100 (05 Nov 2009 21:45:47)

Hors ligne

 

#6 15 Nov 2009 23:31:20

Didier100
Prêcheu(r|se) du libre
 
Date d'inscription: 11 Aug 2005
Messages: 138

Re: fail2ban --> regles et syntaxe d'écriture?

Et voici un superbe site pour écrire et tester en même temps ses regex ....

http://regex.larsolavtorvik.com/

L'écriture des regex devient donc facilement accessible aux débutants "regex" comme moi!

Exemple pour filtrer un enregistrement qui se trouve dans le fichier /var/log/syslog


Code:

Nov 15 17:18:22 sd-16xxx named[15734]: client 68.59.189.51#59177: query (cache) 'credixxxx.com/MX/IN' denied

Et voici le Pattern (que j'ai écrit) PHP PCRE

Code:

^[A-Z][a-z]{2,3}\s[0-9]{2}\s[0-9]{2}[:][0-9]{2}[:][0-9]{2}\s[A-Za-z0-9-]{2,9}\snamed[\[][0-9]{1,5}[\]]:\sclient\s[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\#[0-9]{1,5}:\squery\s\(cache\)\s'[a-zA-Z-\.\/]{2,120}'\sdenied$

Certes il n'est pas optimisé mais c'est un début ....

Maintenant il me reste qu'à tester le "Pattern" s'il fonctionne dans fail2ban ...

Dernière modification par Didier100 (16 Nov 2009 09:57:05)

Hors ligne

 

#7 23 Sep 2012 10:49:42

capitainabloc
Affranchi(e)
 
Date d'inscription: 23 Sep 2012
Messages: 2

Re: fail2ban --> regles et syntaxe d'écriture?

bonjour à tous,
je déterre un peu, mais j'aurais besoin d'aide pour créer un failregex pour cet extrait de log:

Code:

Sep 23 09:23:31 server pure-ftpd: pam_unix(pure-ftpd:auth): authentication failure; logname= uid=0 euid=0 tty=pure-ftpd ruser=Administrator rhost=89-105-115-146.fluidata.co.uk

je veux bannir l'IP 89-105-115-146

Hors ligne

 

#8 23 Sep 2012 12:26:49

fonji
Gourou(e) du libre
Lieu: Fribourg, don !
Date d'inscription: 15 Feb 2006
Messages: 490
Site web

Re: fail2ban --> regles et syntaxe d'écriture?

Salut !

Code:

# iptables -A INPUT -s 89.105.115.146 -j DROP
# iptables-save

Hors ligne

 

#9 23 Sep 2012 14:55:49

capitainabloc
Affranchi(e)
 
Date d'inscription: 23 Sep 2012
Messages: 2

Re: fail2ban --> regles et syntaxe d'écriture?

merci beaucoup!

Hors ligne

 

#10 23 Sep 2012 15:01:54

fonji
Gourou(e) du libre
Lieu: Fribourg, don !
Date d'inscription: 15 Feb 2006
Messages: 490
Site web

Re: fail2ban --> regles et syntaxe d'écriture?

De rien !

Hors ligne

 
  • Index
  •  » Debian
  •  » fail2ban --> regles et syntaxe d'écriture?

Pied de page des forums

Powered by FluxBB