Interdiction d'utiliser une plage d'adresses IP pour la diffusion sur Internet sous Red Hat / CentOS Linux

4

J'ai un VPN et mon serveur envoie fréquemment des données à une adresse IP privée qui achemine via le VPN. Quand OpenVPN est établi ou meurt, il active / désactive les routes.

Je souhaite null-router cette plage d'adresses IP privée depuis l'interface Internet principale (eth0). Y a-t-il un moyen facile de le faire sans interférer avec les commandes de route provenant du logiciel VPN?

Iptables ne le fera pas. j'ai essayé

iptables -A OUTPUT -i eth0 -p tcp -d 192.168.0.0/16 -j REJECT

Mais iptables ne fonctionne pas lors de la spécification d’une interface dans la chaîne de sortie.

Quelqu'un sait s'il existe un moyen d'ajouter une route fictive à une interface spécifique (eth0) uniquement, sans interférer avec d'autres interfaces susceptibles d'utiliser cette route?

Ps- Je suis au courant que 192.168.0.0/16 n'est pas routable par INTERNET, mais pour des raisons de sécurité, veillez à ce qu'aucune donnée ne soit évacuée dans les rares cas où un autre serveur local ou un autre périphérique réseau commence à écouter sur le sous-réseau privé.

Crash Override
la source

Réponses:

5

La spécification de votre interface dans la règle iptables est rétrograde.

Vous avez spécifié:

iptables -A OUTPUT -i eth0 -p tcp -d 192.168.0.0/16 -j REJECT

Utilisation du -itrafic de correspondances entrant dans le système sur l'interface nommée.

Au lieu de cela, vous voulez faire correspondre le trafic quittant le système sur l'interface nommée, ce qui est fait avec -o.

iptables -A OUTPUT -o eth0 -p tcp -d 192.168.0.0/16 -j REJECT

(Et vous ne voulez probablement pas -p tcpdedans, sinon le trafic non-TCP pourrait passer.)

Michael Hampton
la source
Tu as raison. Merci. Oh, et j'ai enlevé le -p tcpafin qu'il bloque tout le trafic.
Crash Override
2

En plus de la réponse de Michael, je pense qu’il faudrait bloquer le trafic dans la FORWARDchaîne, car la OUTPUTchaîne ne s’applique qu’aux paquets générés localement et sortant du pare-feu. Autant que je sache, cela ne s'applique pas aux paquets routés.

Tero Kilkanen
la source
2

Vous avez déjà la réponse dont vous aviez besoin pour le faire avec iptables.

Si vous voulez le faire avec des routes, un bon moyen est d’avoir une route pour 192.168.0.0/16 et que votre serveur vpn vous envoie deux routes un peu plus spécifiques. Dans votre cas, les deux routes seraient 192.168.0.0. / 17 et 192.168.128.0/17

La route / 16 serait fixée et routée à zéro:

ip route add blackhole 192.168.0.0/16

Et votre serveur VPN (ou script vpn-up) vous fournirait les autres:

ip route add 192.168.0.0/17 via <VPNGW>
ip route add 192.168.128.0/17 via <VPNGW>

C’est en fait ce que def1propose OpenVPN pour remplacer la passerelle par défaut sans modifier les itinéraires existants.

GnP
la source
Sucré! Merci
Crash Override