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' --dport
attribut. 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