Tag : Regex
Ajouter PureFTP dans fail2ban
Fail2ban est un excellent framework permettant d'éviter ou du moins limiter les intrusions sur votre serveur. Voici la procédure pour ajouter le serveur ftp PureFTP dans les règles fail2ban. En ajoutant cette règle votre adresse ip peut se retrouver filtré à partir de trois echecs de connexion pendant 10 minutes (par défaut), faites donc attention à vos test !
Ajoutez au fichier /etc/fail2ban/jail.conf dans la section FTP servers de préférence le contenu suivant :
[pure-ftpd] enabled = true port = ftp,ftp-data,ftps,ftps-data filter = pure-ftpd logpath = /var/log/messages maxretry = 3
Cette section vas permettre à fail2ban de filtrer (interdire) les ports 21, 20, 990 et 989 en cas de détection d'echec de login dans le fichier /var/log/messages (logs par défaut de PureFtpd)
Le fichier /etc/fail2ban/filter.d/pure-ftpd.conf est normalement crée par défaut sur votre machine, vérifiez son contenu. Il doit ressembler à celà :
# Fail2Ban configuration file # # Author: Cyril Jaquier # Modified: Yaroslav Halchenko for pure-ftpd # # $Revision: 3$ # [Definition] # Error message specified in multiple languages __errmsg = (?:Authentication failed for user|Erreur d'authentification pour l'utilisateur) # # Option: failregex # Notes.: regex to match the password failures 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>[\w\-.^_]+) # Values: TEXT # failregex = pure-ftpd(?:\[\d+\])?: \(.+?@<HOST>\) \[WARNING\] %(__errmsg)s \[.+\]\s*$ # Option: ignoreregex # Notes.: regex to ignore. If this regex matches, the line is ignored. # Values: TEXT # ignoreregex =
Il s'agit de regex permettant de récupérer l'adresse IP d'un echec de connexion à votre serveur ftp.
Pour tester si votre regex est correcte, vous pouvez exécuter la commande suivante après avoir de préférence effectué une mauvaise connexion à votre serveur ftp.
# Test de la regex fail2ban-regex /var/log/messages /etc/fail2ban/filter.d/pure-ftpd.conf
Vous devriez retrouver votre adresse IP dans "Addresses found".
Il faut ensuite re-démarrer le service fail2ban :
# On rédémarre /etc/init.d/fail2ban restart
Pour vérifier si le filtre à bien été pris en compte, vous pouvez utiliser la commande suivante :
# Test cat /var/log/fail2ban.log |grep pure-ftpd
Et vous devriez avoir le résultat suivant :
2012-03-27 10:23:10,041 fail2ban.jail : INFO Creating new jail 'pure-ftpd' 2012-03-27 10:23:10,041 fail2ban.jail : INFO Jail 'pure-ftpd' uses poller 2012-03-27 10:23:10,051 fail2ban.jail : INFO Jail 'pure-ftpd' started
Et voilà votre serveur ftp est maintenant géré par fail2ban !
Limitation paramètres dans fichier .htaccess
Il m'est arrivé dans certains projet d'avoir de nombreux paramètres dans les adresse. Rien de bien compliqué dans un premiet temps, sauf lorsque l'on souhaite ré-écrire une URL avec plus de 9 paramètres.
Explication
Pour faire simple, rien de mieux qu'un exemple !
RewriteEngine on # Exemple 1 # Url test : informations-1-p-2-q-3-r-4-s-5-t-6-u-8-v-9-w-10.html RewriteRule ^informations-([0-9]*)-p-([0-9]*)-q-([0-9]*)-r-([0-9]*)-s-([0-9]*)-t-([0-9]*)-u-([0-9]*)-v-([0-9]*)-w-([0-9]*)-x-([0-9]*).html$ informations.php?id=$1&p=$2&q=$3&r=$4&s=$5&t=$6&u=$7&v=$8&w=$9&x=$10 [L] # Exemple 2 # Url test : informations-1-p-2-t-6.html RewriteRule ^informations-([0-9]*)(-p-[0-9]*)?(-q-([0-9]*))?(-r-([0-9]*))?(-s-([0-9]*))?(-t-([0-9]*)).html$ informations.php?id=$1&p=$3&q=$5&r=$7&s=$9&t=$11 [L]
Exemple 1
Dans cet exemple, notre adresse devra contenir tous les paramètres soit un total de 10 paramètres / variables.
Exemple 2
Pour le second exemple, il y a un paramètre obligatoire ainsi que cinq paramètres facultatifs. Donc 11 variables.
Jusque là il n'y a aucun problèmes. Seulement si vous testez ces ré-écritures vous remarquez un problème pour les paramètres supérieurs à 10.
En effet le second chiffre de la variable n'est pas pris en compte. Donc $10 correspond à $1.
Malhreusement pour le permier exemple je n'ai trouvé aucune solution... On est bien limité à 9 paramètres.
Mais pour le second exemple il existe un moyen de remédier au problème.