Thomas Pedoussaut a écrit :
> Moins Gruik, ya l'excellent fail2ban.
> En gros, apres 3 erreurs de password, l'IP est blacklistée pour 10 minutes.
> Tres efficace.

Encore plus léger (rien en espace utilisateur) pour la même 
fonctionnalité, il y a le module noyau "recent" dans NetFilter ! ;-)

En général, pour les services à authentification (ssh, mysql, ldap, 
...), pour éviter les attaques brutes, je place des règles pour accepter 
explicitement les connexions depuis mes IP perso et pro, puis les trois 
règles suivantes pour limiter les tentatives (réussies ou non) de 
connexion (au sens TCP, pas au sens application) à 3 par minute avant un 
blacklistage (exemple SSH):

# Accepter les connexions SSH depuis chez moi
[0:0] -A INPUT -p tcp -m tcp -s aaa.bbb.ccc.ddd --dport 22 --syn -j ACCEPT

# Accepter les connexions SSH depuis le boulot
[0:0] -A INPUT -p tcp -m tcp -s eee.fff.ggg.hhh --dport 22 --syn -j ACCEPT

# Noter les tentatives de connexion TCP dans une liste horodatée
[0:0] -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set 
--name BLACKLIST

# Noter les tentatives trop fréquentes dans les journaux à une fréquence 
raisonnable (désactivé)
#[0:0] -A INPUT -p tcp --dport 22 -m state --state NEW -m recent 
--update --seconds 60 --hitcount 3 --rttl --name BLACKLIST -m limit 
--limit 3/m -j LOG --log-prefix "SSH attempt"

# Bloquer les IP trop présentes dans la liste
[0:0] -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update 
--seconds 60 --hitcount 3 --rttl --name BLACKLIST -j DROP

# Accepter les connexions SSH qui n'ont pas été déjà acceptées ou 
blacklistées
[0:0] -A INPUT -p tcp -m tcp --dport 22 --syn -j ACCEPT


L'exemple est assez complet et commenté pour pouvoir être adapté à 
d'autres ports et avec d'autres parametres. L'avantage est que les 
connexions TCP ne sont pas analysées par un programme en espace 
utilisateur, mais directement par le parefeu du noyau, avant tout 
traitement applicatif.

Fanfan
_________________________________
Linux mailing list
[email protected]
http://lists.parinux.org/mailman/listinfo/linux

Répondre à