#!/usr/bin/env bash # Ce script construit le script create-ipset-fr.sh qui créé un ipset # des plages d'IP françaises prêt à être utilisé dans iptables. # Ce script ne touche pas à iptables. Il créé juste le fichier /usr/local/bin/create-ipset-fr.sh # Ce script doit être lancé en root. cd "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")" set -o errexit set -o nounset set -o pipefail echo "Création du script /usr/local/bin/create-ipset-fr.sh pour whitelister les IP françaises..." if [[ $(id -u) -ne 0 ]] ; then echo "Ce script doit être lancé en root." ; exit 1 ; fi echo """#!/usr/bin/env bash set -o errexit set -o nounset set -o pipefail # create-ipset-fr.sh : Création de l'ipset allowed_country pour whitelister les IP françaises. logger \"Mise à jour de l'ipset allowed_country : début.\" if [[ \$(id -u) -ne 0 ]] ; then echo \"Ce script doit être lancé en root.\" ; exit 1 ; fi # Création de l'ipset : ipset -exist create allowed_country hash:net # Whitelister les IP du LAN : ipset add allowed_country 192.168.1.0/24; # Whitelister d'autres IP ou plage si vous le souhaitez: #ipset add allowed_country 195.25.12.0/24; #ipset add allowed_country 197.12.13.14; # Whitelister les plages CIDR françaises : """ > create-ipset-fr.sh n='([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])' m='([0-9]|[12][0-9]|3[012])' for CIDR in $(wget -O - https://raw.githubusercontent.com/herrbischoff/country-ip-blocks/master/ipv4/fr.cidr) do if [[ $CIDR =~ ^$n(\.$n){3}/$m$ ]]; then echo "ipset add allowed_country $CIDR;" >> create-ipset-fr.sh else echo "CIDR invalide exclu : $CIDR" fi done echo """ logger \"Mise à jour de l\'ipset allowed_country : terminé.\" """ >> create-ipset-fr.sh chmod +x create-ipset-fr.sh cp create-ipset-fr.sh /usr/local/bin/