Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 29/05/2012, à 02:24

dancom

[résolu] bloquer des IP par pays - script

Bonjour.

J'ai trouvé un script qui me semble intéressant pour bloquer des pays comme la chine et autres.

Mais, voilà, je ne sais pas comment l'exploiter.

Avec ce script, est-ce que j'ai des répertoires à créer ou des fichiers?

Et comment utiliser ce script.

voici le script :

#!/bin/bash
### Block tout traffic de AFGHANISTAN (af), RUSSE (ru), and CHINA (cn). ###
ISO="af cn ru"

### PATH ###
IPT=/sbin/iptables
WGET=/usr/bin/wget
EGREP=/bin/egrep

### Adapter ###
SPAMLIST="countrydrop"
ZONEROOT="/root/iptables"
DLROOT="http://www.ipdeny.com/ipblocks/data/countries"

# create a dir
[ ! -d $ZONEROOT ] && /bin/mkdir -p $ZONEROOT

# create a new iptables list
iptables -N $SPAMLIST

for c  in $ISO
do
   # local zone file
   tDB=$ZONEROOT/$c.zone

   # get fresh zone file
   $WGET -O $tDB $DLROOT/$c.zone

   # country specific log message
   SPAMDROPMSG="$c Country Drop"

   # get
   BADIPS=$(egrep -v "^#|^$" $tDB)
   for ipblock in $BADIPS
   do
      iptables -A $SPAMLIST -s $ipblock -j LOG --log-prefix "$SPAMDROPMSG"
      iptables -A $SPAMLIST -s $ipblock -j DROP
   done
done

# Drop
iptables -I INPUT -j $SPAMLIST
iptables -I OUTPUT -j $SPAMLIST
iptables -I FORWARD -j $SPAMLIST

exit 0

Et besoin de savoir si ça va affecter mon iptables actuel.

De l'aide me serait utile. merci.

Dernière modification par dancom (Le 24/06/2012, à 05:26)


Ubuntu server 12.04.1

Hors ligne

#2 Le 29/05/2012, à 12:43

gl38

Re : [résolu] bloquer des IP par pays - script

Ce n'est pas trop dur de cacher son IP au destinataire final, ou à des tas d'intermédiaires, c'est comme ça que les Chinois arrivent sur internet. Pourquoi veux-tu les embêter en plus ?
On n'est pas en Corée du Nord ici !
Cordialement,
Guy

Hors ligne

#3 Le 29/05/2012, à 17:53

bruno

Re : [résolu] bloquer des IP par pays - script

Je pense que le script est tout a fait explicite sur ce qu'il fait. Si tu ne le comprends pas il ne vaut mieux pas l'utiliser.
De toute façon je ne vois pas l’intérêt de bloquer des plage entières d'IP (surtout en récupérant ces plages sur un site dont on se sait rien) cela présente bien plus de risques que d'avantages.

#4 Le 30/05/2012, à 14:29

dancom

Re : [résolu] bloquer des IP par pays - script

Bonjour.

Merci pour vos réponses. Ce que je cherche, c'est approfondir mes connaissances et aller de l'avant. C'est ma devise qui a toujours été ainsi. :-)

ipset installé.

Voici le fichier que j'ai créé : block_ip.sh, j'y ai mis les droits d'exécution chmod +x ... et j'ai simplement exécuté le fichier. Ça indique "commande introuvable".  Quand je tappe à partir de la 2me ligne, ça fonctionne si je le fais directement manuellement en ligne commande.

#!/bin/bash
ipset --create feckoff nethash
ipset -–add feckoff 27.8.0.0/12
ipset -–add feckoff 27.24.0.0/13
iptables -A INPUT -m set –set feckoff src -j DROP

Si quelqu'un peut m'aiguiller sur ça.

d

Dernière modification par dancom (Le 30/05/2012, à 14:38)


Ubuntu server 12.04.1

Hors ligne

#5 Le 31/05/2012, à 01:48

dancom

Re : [résolu] bloquer des IP par pays - script

Salut.

Le problème était de ne pas exécuter le script avec le chemin complet.
Faut faire attention à la première ligne avec le dièse!/bin/bash. Même
bien écris, ça prends pas tout le temps. De préférence l'écrire avec
en console. Ne connaissant pas les raisons.


Ubuntu server 12.04.1

Hors ligne

#6 Le 31/05/2012, à 13:25

Pseudo supprimé

Re : [résolu] bloquer des IP par pays - script

tu as un module geoip à installer pour iptables et la même chose pour apache.

sudo iptables -N GEOIP_REJECT
sudo iptables -I GEOIP_REJECT -m geoip --src-cc CN,..., -j REJECT
sudo iptables -A INPUT -j GEOIP_REJECT
/etc/apache2/conf.d/geoip.conf 
<IfModule mod_geoip.c>
        GeoIPEnable On
        GeoIPDBFile /usr/share/GeoIP/GeoIP.dat
       SetEnvIf GEOIP_COUNTRY_CODE CA AllowCountry
        SetEnvIf GEOIP_COUNTRY_CODE FR AllowCountry
    ....
    #SetEnvIf GEOIP_COUNTRY_CODE US AllowCountry
    #SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry
       ...
</IfModule>
/etc/apache2/sites-avalaible/vhost-example
    ....Alias ...
    ... <Directory ...>
        Order Deny,Allow
        # Deny from env=BlockCountry 
        Deny from All
        Allow from env=AllowCountry
geoiplookup -f /usr/share/GeoIP/GeoLiteCity.dat  123.125.71.57
GeoIP City Edition, Rev 1: CN, 22, Beijing, N/A, 39.928902, 116.388298, 0, 0

#7 Le 01/06/2012, à 11:56

dancom

Re : [résolu] bloquer des IP par pays - script

Titouan a écrit :

tu as un module geoip à installer pour iptables et la même chose pour apache.

Merci pour l'info de configuration.

Le Module n'est pas installé par défaut dans Apache, il faut que je l'installe.
Et c'est pas un service payant pour accès à la base de données?

Dernière modification par dancom (Le 01/06/2012, à 11:58)


Ubuntu server 12.04.1

Hors ligne

#8 Le 01/06/2012, à 18:34

Pseudo supprimé

Re : [résolu] bloquer des IP par pays - script

tu as juste à l'activer

sudo a2enmod geoip
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz -O - | gunzip > /usr/share/GeoIP/GeoIP.dat

#9 Le 06/06/2012, à 16:00

dancom

Re : [résolu] bloquer des IP par pays - script

Bonjour. merci pour les précisions.

Titouan a écrit :

tu as un module geoip à installer pour iptables et la même chose pour apache.

sudo iptables -N GEOIP_REJECT
sudo iptables -I GEOIP_REJECT -m geoip --src-cc CN,..., -j REJECT
sudo iptables -A INPUT -j GEOIP_REJECT

Cette partie ne fonctionne pas pour moi.

Couldn't load match "geoip" /lib/xtables/libipt_geoip.so cannot open shared object file : no such file or directory

Je suis allé voir dans le répertoire, le fichier libipt_geoip.so ne s'y trouve pas.

La seule place que j'ai pu trouvé de pertinent à propos du fichier manquant, c'est à cette adresse-ci :

Le lien

Je ne suis pas certain pour ce qui est des infos en question. Les histoires de compilation aussi.

Pour le reste, ça marche bien. J'ai dû faire des étapes supplémentaires pour y arriver.


Ubuntu server 12.04.1

Hors ligne

#10 Le 07/06/2012, à 10:24

dancom

Re : [résolu] bloquer des IP par pays - script

Bonjour.

J'ai résolu la question en allant chercher un script pour installer le addon xtables.
Tout fonctionne.

Ce que j'aimerais réaliser pour terminer, c'est faire l'inverse :

de ceci :

sudo iptables -N GEOIP_REJECT
sudo iptables -I GEOIP_REJECT -m geoip --src-cc CN,..., -j REJECT
sudo iptables -A INPUT -j GEOIP_REJECT

à ceci :

Tout refusé et accepter seulement les pays désirés (je tente pour savoir si je l'ai).

A moins de faire une longue liste de REJECT, y a moyen de faire l'inverse?

Tien, peut-etre un truc un peu à l'extrême :

sudo iptables -N GEOIP_REJECT
sudo iptables -I GEOIP_REJECT -m geoip --src-cc A1,A2,O1,AD,AE,AF,AG,AI,AL,AM,AO,AP,AQ,AR,AS,AT,AU,AW,AX,AZ,BA,BB,BD,BE,BF,BG,BH,BI,BJ,BL,BM,BN,BO,BQ,BR,BS,BT,BV,BW,BY,BZ,CA,CC,CD,CF,CG,CH,CI,CK,CL,CM,CN,CO,CR,CU,CV,CW,CX,CY,CZ,DE,DJ,DK,DM,DO,DZ,EC,EE,EG,EH,ER,ES,ET,EU,FI,FJ,FK,FM,FO,FR,GA,GB,GD,GE,GF,GG,GH,GI,GL,GM,GN,GP,GQ,GR,GS,GT,GU,GW,GY,HK,HM,HN,HR,HT,HU,ID,IE,IL,IM,IN,IO,IQ,IR,IS,IT,JE,JM,JO,JP,KE,KG,KH,KI,KM,KN,KP,KR,KW,KY,KZ,LA,LB,LC,LI,LK,LR,LS,LT,LU,LV,LY,MA,MC,MD,ME,MF,MG,MH,MK,ML,MM,MN,MO,MP,MQ,MR,MS,MT,MU,MV,MW,MX,MY,MZ,NA,NC,NE,NF,NG,NI,NL,NO,NP,NR,NU,NZ,OM,PA,PE,PF,PG,PH,PK,PL,PM,PN,PR,PS,PT,PW,PY,QA,RE,RO,RS,RU,RW,SA,SB,SC,SD,SE,SG,SH,SI,SJ,SK,SL,SM,SN,SO,SR,ST,SV,SX,SY,SZ,TC,TD,TF,TG,TH,TJ,TK,TL,TM,TN,TO,TR,TT,TV,TW,TZ,UA,UG,UM,US,UY,UZ,VA,VC,VE,VG,VI,VN,VU,WF,WS,YE,YT,ZA,ZM,ZW -j REJECT
sudo iptables -A INPUT -j GEOIP_REJECT

J'ai juste à enlever les pays que je veux donner accès :-)

Dernière modification par dancom (Le 07/06/2012, à 10:53)


Ubuntu server 12.04.1

Hors ligne

#11 Le 08/06/2012, à 01:55

dancom

Re : [résolu] bloquer des IP par pays - script

Salutations,

Pour dire qu'on peut placer qu'un nombre limité à 14 pour bloquer  des pays. Alors, si quelqu'un sait comment faire pour faire le contraire. J'apprécierais. L'installation de GeoIP pour Iptables, il faut aussi installer le xtables-addon avec un certains nombres de commandes.

Tout fonctionne à part ça. Merci Titouan pour m'avoir mis sur une piste.

Avant de clore le sujet, je vais attendre un peu. Bonne journée!


Ubuntu server 12.04.1

Hors ligne

#12 Le 08/06/2012, à 08:43

Pseudo supprimé

Re : [résolu] bloquer des IP par pays - script

A moins de faire une longue liste de REJECT, y a moyen de faire l'inverse?

fais un test avec

sudo iptables -I GEOIP_REJECT -m geoip ! --src-cc FR,BE,CA,CH,LU,MC,AD -j REJECT

Tout le Monde est REJECT sauf FR,BE,CA,LUxembourg,Monaco,Andorre

NB; Biensûr; il faut que tu supprimes les autres lignes dans la chain GEOIP_REJECT
sudo iptables -D GEOIP_REJECT numero_de_ligne

#13 Le 08/06/2012, à 10:45

dancom

Re : [résolu] bloquer des IP par pays - script

Titouan a écrit :

A moins de faire une longue liste de REJECT, y a moyen de faire l'inverse?

fais un test avec

sudo iptables -I GEOIP_REJECT -m geoip ! --src-cc FR,BE,CA,CH,LU,MC,AD -j REJECT

Tout le Monde est REJECT sauf FR,BE,CA,LUxembourg,Monaco,Andorre

NB; Biensûr; il faut que tu supprimes les autres lignes dans la chain GEOIP_REJECT
sudo iptables -D GEOIP_REJECT numero_de_ligne

Bonjour Titouan, si j'ai cette règle par défaut dans mon fichier automatique :

iptables -N GEOIP_REJECT
iptables -I GEOIP_REJECT -m geoip --src-cc CN -j REJECT
iptables -A INPUT -j GEOIP_REJECT

et que je fais en ligne commande:

sudo iptables -I GEOIP_REJECT -m geoip ! --src-cc FR,BE,CA,CH,LU,MC,AD -j REJECT
sudo iptables -D GEOIP_REJECT 1

Ça va permettre tous les pays indiqués. Ça va très bien fonctionné.

Mais, si je fait ceci dans mon fichier exécutable automatique :

iptables -N GEOIP_REJECT
iptables -I GEOIP_REJECT -m geoip ! --src-cc FR,BE,CA,CH,LU,MC,AD -j REJECT
iptables -A INPUT -j GEOIP_REJECT

Là, ça bloque tout.

Peut-être faire comme ceci dans mon fichier exécutable :

iptables -N GEOIP_REJECT
iptables -I GEOIP_REJECT -m geoip --src-cc CN -j REJECT
iptables -A INPUT -j GEOIP_REJECT
iptables -I GEOIP_REJECT -m geoip ! --src-cc FR,BE,CA,CH,LU,MC,AD -j REJECT
iptables -D GEOIP_REJECT 1

Le CN, ça en prends au moins un pour faire ma ligne.

Je vais essayer pour voir.
Non, ça marche pas si je mets ça dans mon fichier au démarrage.

Il se peut bien que je ne comprenne pas bien les lignes à supprimer. Mais quand ça dit une référence, ça veut dire une seule ligne donc 1.

Note: La mention [résolu] est enlevée vu le suivi.

Dernière modification par dancom (Le 08/06/2012, à 10:55)


Ubuntu server 12.04.1

Hors ligne

#14 Le 09/06/2012, à 10:42

Pseudo supprimé

Re : [résolu] bloquer des IP par pays - script

sudo iptables -N GEOIP_REJECT
#Chine,Iran,Syrie,Proxies
sudo iptables -I GEOIP_REJECT -m geoip --src-cc CN,IR,SY,A1 -j DROP
#Corée Nord, Sud, Birmanie, Malaisie, Vietnam, Pakistan, Philippines, Indonésie, Thailande, Taiwan, Singapour
sudo iptables -I GEOIP_REJECT -p tcp -m multiport --dports 22,80,443,25,465,587,143,993  -m geoip --src-cc KR,KP,MM,MY,VN,PK,PH,ID,TH,TW,SG -j DROP
#Ukraine, Russie, Roumanie, Estonie, Bielorussie, Bulgarie, Latvia, Lituanie, Moldavie
sudo iptables -I GEOIP_REJECT -p tcp -m multiport --dports 22,80,443,25,465,587,143,993  -m geoip --src-cc UA,RU,RO,EE,BY,BG,LV,LT,MD  -j DROP
#Ghana, Nigeria, Soudan, Ethiopie, Colombie
sudo iptables -I GEOIP_REJECT -p tcp -m multiport --dports 22,80,443,25,465,587,143,993  -m geoip --src-cc GH,NG,SD,ET,CO -j DROP
# iptables -I INPUT numéro_de_ligne? = insérer après les règles Fail2ban/avant les règles UFW
sudo iptables -I INPUT 7 -j GEOIP_REJECT

si tu es perdu, lorsque tu fais tes tests, tu fais

sudo iptables -L INPUT -n -v --line-number
sudo iptables -L GEOIP_REJECT -n -v --line-number

et ensuite supprimer la règle à la line-number, contenue dans la chain avec

sudo iptables -D chain line-number

bonne continuation

#15 Le 07/07/2012, à 04:14

dancom

Re : [résolu] bloquer des IP par pays - script

Bonjour.

J'ai pris mon temps pour chercher et tester. Geoip pour moi, ça semble pas fonctionner quand c'est inversé.

Une chose que je ne comprends pas, c'est ceci :

et ensuite supprimer la règle à la line-number, contenue dans la chain avec

sudo iptables -D chain line-number

Je comprends ce que cela signifie mais c'est quelle ligne de chaine que je dois supprimer.
On fait référence à quoi ici?

iptables -N GEOIP_REJECT
iptables -I GEOIP_REJECT -m geoip ! --src-cc CA -j REJECT
iptables -I INPUT 13 -j GEOIP_REJECT

13 correspond après fail2ban et juste avant les règles du firewall.


Ubuntu server 12.04.1

Hors ligne