DEDIBOX-NEWS.COM

Le Forum Non Officiel de la DEDIBOX

Vous n'êtes pas identifié.

#1 2008-06-26 15:04:14

cyrilpop
Jeidi
Date d'inscription: 2008-04-09
Messages: 158

Se prémunir des attaques

Salut à tous,


voici un petit script qui nous aide bien pour contrer les attaques que subissent la dédibox. Ce script permet de mettre a jour en temps reel (ou presque) l'iptable pour banir toutes les ip qui font des tentatives de connexion avec un mauvais mot de passe ou un mauvais user...

Il n'est pas parfait, loin de là. Ce script doit tourner en permanence sur le serveur puisque qu'il se fie au fichier auth.log


Le mieux et de le faire lancer avec le boot de la machine.


Code:

#!/bin/ksh

##########################################################################################
#
# Script qui permet de limiter les scan ssh
#
#########################################################################################

date=`date`

while true
do
        ################################################################################
        #Partie qui gere les mauvais users
        ################################################################################

        i=1
        cat /var/log/auth.log | grep invalid | tail -$4 | awk '{ print $13 }' > /tmp/invalid_user.trc
        while read log
        do
                logn=$log
                case $i in
                        1) log1=$logn;;
                        2) log2=$logn;;
                        3) log3=$logn;;
                        4) log4=$logn;;
                esac
                i=`expr $i + 1`
        done</tmp/invalid_user.trc
        if [[ "$log1" = "$log2" && "$log2" = "$log3" && "$log3" = "$log4" ]]
        then
                ip_ban=$log1
                exist=`iptables -L | grep $ip_ban | wc -l`
                if [[ "$exist" = "0" ]]
                then
                        iptables -A INPUT -s $ip_ban -j DROP
                        echo "L'IP $ip_ban a ete bannie le $date" >> /var/log/secure.log
                fi
        fi

        ##################################################################################
        #Partie qui gere les mauvais mot de passe
        ##################################################################################


        i=1
        cat /var/log/auth.log | grep Faild | tail -$4 | awk '{ print $11 }' > /tmp/invalid_pswd.trc
        while read log
        do
                logn=$log
                case $i in
                        1) log1=$logn;;
                        2) log2=$logn;;
                        3) log3=$logn;;
                        4) log4=$logn;;
                esac
                i=`expr $i + 1`
        done</tmp/invalid_pswd.trc
        if [[ "$log1" = "$log2" && "$log2" = "$log3" && "$log3" = "$log4" ]]
        then
                ip_ban=$log1
                exist=`iptables -L | grep $ip_ban | wc -l`
                if [[ "$exist" = "0" ]]
                then
                        iptables -A INPUT -s $ip_ban -j DROP
                        echo "L'IP $ip_ban a ete bannie le $date" >> /var/log/secure.log
                fi
        fi

        sleep 180
done

voila, profitez smile

Hors ligne

 

#2 2008-06-26 16:20:38

Jérémy
Membres d'honneurs
Date d'inscription: 2006-05-17
Messages: 934
Site web

Re: Se prémunir des attaques

fail2ban ?


ATTENTION : VHCS dispo en base n'est pas sécurisé !!!

Hors ligne

 

#3 2008-06-26 16:26:30

ivanov
Jeidi
Lieu: lyon
Date d'inscription: 2006-10-31
Messages: 143
Site web

Re: Se prémunir des attaques

ouep pareil j'allais le dire fail2ban ? c'est bien se truc aussi ... lol
Mais en tous cas bravo pour ton script smile

amicalement iva


un manchot sur la banquise ? oui c'est normal  !
alors pourquoi pas un serveur linux sur la banquise ?  ok je sorts -----> big_smile

Hors ligne

 

#4 2008-06-26 16:28:36

J@r0d
Administrator
Date d'inscription: 2006-05-03
Messages: 1796

Re: Se prémunir des attaques

Merci pour le script, moi perso je colle fail2ban sur chacun de mes serveurs et je change le port ssh  wink


Linux, une histoire de vi ou de more

Hors ligne

 

#5 2008-06-26 16:45:30

cyrilpop
Jeidi
Date d'inscription: 2008-04-09
Messages: 158

Re: Se prémunir des attaques

je ne connaissais pas la fonction (ou le prg) fail2ban... Je vais voir à quoi cela ressemble smile
En tout cas j'ai vu que je peux encore faire du tri dans les log car y'a pas mal d'attaques sur mon serveur.... donc voyons ca de plus près ^^
Mais bon j'aime bien réinventer la roue.... c'est interressant ^^ et puis on apprend des choses wink

Hors ligne

 

#6 2008-06-26 16:57:09

cyrilpop
Jeidi
Date d'inscription: 2008-04-09
Messages: 158

Re: Se prémunir des attaques

effectivement je viens de voir ce fail2ban et il fait en mieux ce que je faisait smile
du coup hop il remplace mon script (pour info, je le lancais toutes les minutes depuis la crontab... et la IPTABLE commencait déjà a bien grossir.....


en tout cas merci pour l'info sur ce magnifique petit package smile

Hors ligne

 

#7 2008-06-27 17:11:01

cyrilpop
Jeidi
Date d'inscription: 2008-04-09
Messages: 158

Re: Se prémunir des attaques

Pour le plaisir, voici une petite évolution du script qui fonctionne mieux (oublie moins de chose) et ne prends casiment rien en ressource. Le seul hic c'est qu'il créé des doublons dans l'iptables.... Si quelqu'un voit comment éviter les doublons je suis preneur smile


Voici le code.... seule la 1ere exécution est longue, les suivante sont très rapides (si la crontab exécute le script toute les minutes).

Code:

#!/bin/ksh
##########################################################################################
set +x
#
# Script qui permet de limiter les scan ssh
#
#########################################################################################
# Definition des variables
#########################################################################################
repertoire=/var/log
fic_tmp=/tmp/secure.lst
fic_ip=/tmp/ip_ban.lst
fic_ip1=/tmp/ip_ban1.lst
list2ban=/tmp/list2ban.lst
liste_ban=/tmp/listebanie.list
max_atpt=4
mon_ip=.116
touch $fic_ip1
touch $liste_ban
#########################################################################################
# Creation du fichier temporaire de log
#########################################################################################
cat $repertoire/auth.log > $fic_tmp
cat $repertoire/mail*>> $fic_tmp
cat $repertoire/apache2/* >> $fic_tmp
#########################################################################################
# Recuperation des ip frauduleuses
#########################################################################################
cat $fic_tmp | grep "without hostname" | cut -d[ -f4|cut -d] -f1 | cut -d' ' -f2 > $fic_ip
cat $fic_tmp | grep "File does not exist" | cut -d[ -f4|cut -d] -f1 | cut -d' ' -f2 | grep -v "66.249.66.50" >> $fic_ip
cat $fic_tmp | grep "/main.php" | cut -d' ' -f1 | grep -v "66.249.66.50" | >> $fic_ip
cat $fic_tmp | grep "Failed password" | grep -v "invalid" | awk '{ print $11}' >> $fic_ip
cat $fic_tmp | grep "invalid user" | awk '{ print $13 }' >> $fic_ip
sort $fic_ip > ${fic_ip}.tmp
cat ${fic_ip}.tmp | grep -v $mon_ip > $fic_ip
rm ${fic_ip}.tmp
diff $fic_ip1 $fic_ip | cut -d">" -f 2 > $list2ban
#########################################################################################
# Debut du traitement pour les bans
#########################################################################################
ip1=0
while read ligne
do
        ip_scan=$ligne
        if [[ "$ip1" = "$ip_scan" ]]
        then
                i=`expr $i + 1`
                if [[ "$i" > "$max_atpt" ]]
                then
                        exist=`cat $liste_ban | grep $ip_scan | wc -l`
                        if [[ "$exist" = "0" ]]
                        then
                                echo $ip_scan banie >> $liste_ban
                                iptables -A INPUT -s $ip_scan -j DROP
                        fi
                fi
        else
                i=0
        fi
        ip1=$ip_scan
done<$list2ban
cat $fic_ip>$fic_ip1

Enjoy smile


Et si c'est améliorables faites moi signe... En tout cas je me suis éclaté pour faire ce script smile

Dernière modification par cyrilpop (2008-06-27 20:31:33)

Hors ligne

 

Pied de page des forums

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson