Le mardi 9 octobre 2007, Miklos Aubert a écrit : > Encore une autre solution, le daemon Fail2ban, qui surveille en permanence > auth.log pour détecter ce genre d'attaques et paramétrer automatiquement > iptables pour bloquer les adresses ip d'où elles proviennent. [...]
J'ai cette maladie aussi ;-). Une autre maladie (refaire à la main ce qui existe déjà) m'a d'ailleurs conduit à commettre ce petit script il y a un moment. Mon objectif était de limiter la pollution des logs par des tentatives bêtes et répétées de login. Ça marche plutôt bien. Seul regret, je n'ai pas réussi à le faire correctement avec un pipe syslog, cela faisant planter ce dernier (coredump). Je suis donc passé par tail. Ce qui m'a d'ailleurs permit de découvrir une option que je ne connaissais pas (follow) et qui est intéressante pour survivre à la rotation des logs qu'on surveille. Si ça peut servir ou amuser, le voici : -----------------------------8<--------------------------------------------- #!/bin/sh # october 2005 # S. Renard # This script is released under the GPL (http://www.gnu.org) # # Read daemon log from a fifo to adapt iptables rules # Supported daemon : sshd # # named pipe to read syslogd logs #FIFO=/var/log/sshpipe # Named pipe breaks syslog... # Using tail --follow=name /var/log/messages is better... # path to iptables IPTABLES=/usr/sbin/iptables # Debug ? (1=yes) DEBUG=0 # Daemon list (for early grep'ing) DAEMON="sshd" # Debug function debug() { if [ $DEBUG -eq 1 ]; then echo $* fi } # Create logreact iptables rules if needed create_rule() { $IPTABLES -L logreact >/dev/null 2>&1 if [ $? != 0 ]; then $IPTABLES --new-chain logreact fi $IPTABLES -I INPUT -j logreact } # Read log and dispatch actions read_log() { while read LOG do debug "DEBUG: $LOG" case $(echo $LOG | awk ' { print $5 }' | cut -d\[ -f1) in sshd) debug "DEBUG: sshd !" IP=$(echo $LOG | awk '/sshd.*Invalid user/ { print $10 }') ;; *) IP="" ;; esac debug "DEBUG: IP=$IP" if [ "$IP" != "" ]; then create_rule debug "DEBUG: add rule for $IP" logger "Attack response from logreact : add rule for $IP" $IPTABLES -A logreact -p tcp --dport ssh -s $IP -j DROP fi done #< $FIFO } logger "logreact is starting" tail --follow=name /var/log/messages | read_log logger "Warning : logreact exiting" -----------------------------8<--------------------------------------------- A+ -- Sébastien _________________________________ Linux mailing list [email protected] http://lists.parinux.org/mailman/listinfo/linux
