Bannir une ip facilement de son serveur

Rédigé par citizenz - - Aucun commentaire

Pourquoi bannir une IP ? Il y a plusieurs raisons valables comme par exemple, cette adresse qui revient 50 fois dans vos logs fail2ban.
Cette adresse chinoise ou brésilienne qui vous taquine avec ces dizaines de tentatives de bruteforce sur votre ssh et qui teste tous les noms : root, admin, kevin, etc.
Pour dire "Au revoir" à ces hackers du dimanche, rien de tel qu'un petit script bien placé qui va nous permettre, grâce à Iptable, d'avoir enfin la paix...

On va placer notre petit script dans notre /home perso et l'appeller, par exemple, ban-ip.sh.

Et on va insérer le code suivant dedans :

#!/bin/bash
# Script name : Ban/Unban IP with Iptables
function help {
    echo "Syntax: $0 -[L][u] target(s)"
    echo " Parameters come first. Target is expressed as an IP address."
    echo " No specified parameter will ban the IP."
    echo " -L to list currently banned IPs."
    echo " -u to unban IP(s)."
    exit 1
}
# If no arguments are passed, call the "help" function.
if [ -z "$1" ]; then
    help
fi
# Define some variables
ACTION="-A"
txtred=$(tput setaf 1)
txtyel=$(tput setaf 3)
txtcya=$(tput setaf 6)
txtrst=$(tput sgr0)
while getopts "huL" OPTION
do
    case $OPTION in
        h)
            help
            ;;
        u)
            ACTION="-D"
            shift $(($OPTIND - 1))
            ;;
        L)
            ACTION="-L"
            shift $(($OPTIND - 1))
            ;;
        \?)
            help
            ;;
    esac
done
if [ $ACTION == "-L" ]; then
    echo $txtcya"List of Banned IPs:"$txtrst
    iptables -L INPUT -v -n | grep DROP
else
    # ban work loop
    for ZTARGET in "$@"
    do
        echo $txtcya"Applying action $txtred$ACTION$txtcya to $txtyel$ZTARGET"$txtrst
        iptables $ACTION INPUT -s $ZTARGET -j DROP
    done
fi

Il faut ensuite donner des droits d'éxécution au script :

chmod +x ban-ip.sh

Et voila comment ça marche :

Pour bannir une IP, on lance le script suivi de l'IP à bannir :

./ban-ip.sh xx.xx.xx.xx

L'argument -h lance l’aide du script. Il est aussi possible d’invoquer le fichier sans argument:

# help & usage
./ban-ip.sh
./ban-ip.sh -h

L'argument -L affiche la liste des IP bloquées :

# banned IP list
./ban-ip.sh -L

L'argument -u (pour unban) débloque une IP donnée:

# unban IP
./ban-ip.sh -u xx.xx.xx.xx

Et voilà !

SOURCES : https://www.skyminds.net/bash-lister-bloquer-et-debloquer-des-adresses-ip-avec-iptables/

CitizenZ : Geek quadra nivernais
fan d'ovalie, de musique, de linuxeries et de Net !

À lire également

Écrire un commentaire

 Se rappeler de moi sur ce site
Quelle est la troisième lettre du mot 1dclv ?