Pages : 1
#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
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.
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 :
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
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
Pages : 1