Ubuntu IPTables autorise seulement autoriser 1 pays

10

J'ai donc cherché sur le net un script qui rejetterait tout le trafic sur tous les ports, à l'exception des ports http (80) et https (443), et n'autoriserait alors que le trafic sur tous les autres ports du pays x (où le pays de référence x est les États-Unis).

Je ne veux pas ajouter toutes les adresses IP de tous les pays, je veux simplement autoriser les ips de mon pays puis bloquer presque tout le reste du trafic du monde extérieur. Personne en dehors de mon pays ne devrait avoir accès à ssh, ftp, smtp, etc. autre que moi. Si cela change jamais, j'ajouterai un cas spécial à l'approche.

Note latérale

Je dois noter que j’ai trouvé une question contenant un script permettant d’ interdire ip par pays à l’aide de tables ip, mais c’est beaucoup d’insertions supplémentaires que je devrais faire.

Le script marqué comme la meilleure réponse bloquera tout le trafic provenant de ces adresses IP. Je veux seulement bloquer l'accès à tous les ports sauf aux 80 et 443.

Mise à jour

Avec la règle suivante,

iptables -A OUTPUT -m geoip --dst-cc CN -j DROP

serais-je capable de le modifier et de faire quelque chose comme

iptables -A OUTPUT -m geoip --dst-cc CN --dport 80 -j ACCEPT
iptables -A OUTPUT -m geoip --dst-cc CN --dport 443 -j ACCEPT
iptables -A OUTPUT -m geoip --dst-cc CN -j DROP

Je suppose que cela permettrait aux ips de Chine d'accéder au port 80 et au port 443 et de laisser tomber le reste. Cette hypothèse serait-elle correcte? Si non pourquoi pas

Mise à jour 2

Après quelques discussions, j'ai trouvé que ma version d'Ubuntu n'aimait pas l' --dportattribut. Donc, au lieu d’utiliser Ubuntu 14+ (nous avons au moins Ubuntu 14.04, 14.10 et 15.04 installée sur certaines machines), je devrai utiliser-p PORT_NUMBER_OR_NAME

Alors ça ressemble à

iptables -A OUTPUT -m geoip --dst-cc CN -p 443 -j ACCEPT

ou pour le trafic entrant,

iptables -A INPUT -m geoip --src-cc CN -p 443 -j ACCEPT
Austin Kregel
la source

Réponses:

7

Vous devrez ajouter le support iptables pour la géolocalisation. Pour ce faire, vous devrez suivre ces étapes:

# apt-get install xtables-addons-common
# mkdir /usr/share/xt_geoip
# apt-get install libtext-csv-xs-perl unzip
# /usr/lib/xtables-addons/xt_geoip_dl
# /usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv

Cela vous permettra de faire des choses comme:

iptables -A OUTPUT -m geoip --dst-cc CN -j DROP

Cela bloquerait tout trafic sortant vers la Chine (CN). La complexité des règles dépend de vous. En principe, vous n’avez pas besoin d’un script, écrivez simplement les règles que vous souhaitez appliquer, puis utilisez-les iptables-savepour qu’elles soient chargées à chaque redémarrage.

nKn
la source
Je vous remercie! J'ai une autre question, j'ai mis à jour ma question ci-dessus pour le refléter. Seriez-vous arrivé à connaître la réponse à cette question?
Austin Kregel
La règle fonctionnerait, mais vous devez en changer le sens. OUTPUTVous devez maintenant la définir de manière à INPUTne pas l'utiliser --dst-ccmais à la --src-ccplace. Mais si la question est de savoir si cela devrait fonctionner en combinaison avec toute autre iptablesrègle existante , la réponse est oui.
nKn
la xt_geoip_dlcommande ne fonctionne plus, elle nécessite un zip qui n'existe plus
Martijn