Bannir une ip facilement de son serveur
Rédigé par citizenz - - Aucun commentairePourquoi 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/