Il y a des moments où vous voudrez limiter l'accès et bloquer des pays entiers. Pourquoi? Parce qu'il y a des moments où c'est nécessaire.
Voici un script qui construit un script….
Il télécharge les plages d'adresses IP depuis www.ipdeny.com, utilise une liste de codes de pays à deux lettres pour créer un script bash qui :
Supprime une chaîne iptables existante.
Crée une nouvelle chaîne "BadCountry".
Ajoute ceci en haut de la chaîne INPUT pour transmettre tout ce qui se trouve sur le port 80 à la chaîne BadCountry.
Ajoute toutes les adresses IP blocs dans les pays concernés à la chaîne BadCountry avec un refus/unreachable.
N'hésitez pas à l'adapter à vos besoins.
(Oh, et vous pouvez aussi appeler le script avec le paramètre undo et cela supprimera la chaîne.)
#!/bin/bash PARAM=${1} if [ "${PARAM}" == "undo" ] ; then iptables -D INPUT -p tcp -m tcp --dport 80 -j BadCountry iptables --flush BadCountry iptables -X BadCountry else echo $(date) IP Blocking GLOBAL START #First call ourselves to undo (delete the chain) ${0} undo #This is where the executable script that does the table update will live. TABLESCRIPT=/root/scripts/countrytables.sh #Change this to a folder you can write to cd /root/ipblocks #and delete any zone file tar/zip files rm -f all-zones.tar.* echo $(date) Download Countries START wget "http://www.ipdeny.com/ipblocks/data/countries/all-zones.tar.gz" tar -zxvf all-zones.tar.gz > /dev/null echo $(date) Download Countries FINISH echo $(date) Build Countries START echo "#!/bin/bash" > ${TABLESCRIPT} echo "iptables -N BadCountry" >> ${TABLESCRIPT} echo "iptables -I INPUT -p tcp -m tcp --dport 80 -j BadCountry" >> ${TABLESCRIPT} echo "iptables -A BadCountry -j RETURN" >> ${TABLESCRIPT} for COUNTRY in hk cn in id kr my ph tw th vn pk ; do awk {'print "iptables -I BadCountry -s "$1" -j REJECT --reject-with icmp-port-unreachable"'} ${COUNTRY}.zone >> ${TABLESCRIPT} done echo $(date) Build Countries FINISH echo $(date) Updating iptables START #Make our script executable chmod 700 ${TABLESCRIPT} #And now execute it ${TABLESCRIPT} echo $(date) Updating iptables FINISH fi # Elvis Has Left The Server.