Anonymisation d'OpenVPN Autoriser l'accès SSH au serveur interne


10

J'utilise un VPN anonyme, mais je veux un accès SSH à l'ordinateur interne.

Comment accéder à mon ordinateur interne via SSH? Lorsque je fais ssh 98.123.45.6 , la connexion expire .

  • Adresse IP du fournisseur de câble: 98.123.45.6
  • IP anonyme via VPN: 50.1.2.3
  • Ordinateur interne: 192.168.1.123

Lors de la recherche, j'ai trouvé des recommandations pour configurer des règles iptables, des règles de routage ou pour ajouter ListenAddress à sshd_config. Lequel de ces cas s'applique à mon cas?

Voici mon itinéraire :

Table de routage IP du noyau
Destination Gateway Genmask Flags Metric Ref Use Iface
10.115.81.1 10.115.81.9 255.255.255.255 UGH 0 0 0 tun0
10.115.81.9 * 255.255.255.255 UH 0 0 0 tun0
50.1.2.3-sta ddwrt 255.255.255.255 UGH 0 0 0 eth0
192.168.1.0 * 255.255.255.0 U 202 0 0 eth0
169.254.0.0 * 255.255.0.0 U 204 0 0 vboxnet0
bouclage * 255.0.0.0 U 0 0 0 lo
par défaut 10.115.81.9 128.0.0.0 UG 0 0 0 tun0
128.0.0.0 10.115.81.9 128.0.0.0 UG 0 0 0 tun0
par défaut ddwrt 0.0.0.0 UG 202 0 0 eth0

Réponses:


15

Pour résoudre ce problème, vous devrez configurer à la fois iptables et les règles de routage. Le problème spécifique que vous rencontrez est que les paquets SSH sortants sont routés via votre interface de tunnel VPN anonyme au lieu de votre interface Ethernet. Cela se produit car votre logiciel VPN a mis en place une règle de routage pour envoyer tout le trafic non géré via l'interface du tunnel. Bon pour anonymiser votre trafic réseau; mauvais pour établir des connexions SSH à votre ordinateur.

Il existe plusieurs façons de résoudre ce problème, mais je vais partager avec vous celle qui a fonctionné pour moi dans une situation identique. Voici ce que nous devons faire:

  1. Créer une nouvelle table de règles IP pour gérer le trafic non VPN
  2. Ajoutez une règle IP pour rechercher dans notre table sans VPN les paquets marqués d'un masque de filtre réseau spécifique
  3. Ajoutez une route IP qui dirige tout le trafic dans notre table sans VPN pour utiliser votre interface Ethernet au lieu du tunnel
  4. Ajoutez une règle iptables pour marquer tout le trafic SSH avec notre masque netfilter désigné

Remarque: je travaillais avec Raspbian en procédant comme suit, vous devrez donc peut- être ajuster les commandes un peu pour l'adapter à votre distribution.

Création d'une nouvelle table de règles IP

Commencez par inspecter le fichier de définition de table d'iproute2. Nous voulons nous assurer que nous n'utilisons pas le nom ou le numéro des tables de règles existantes.

cat /etc/iproute2/rt_tables

Vous verrez probablement quelque chose dans ce sens:

# reserved values
255      local 
254      main
253      default   
0        unspec
#
# local
#
#1      inr.ruhep

Choisissez un nombre et un nom arbitraires pour votre nouvelle table de règles - tout ce qui n'est pas utilisé ci-dessus. J'utiliserai le numéro 201 et le nom novpnpour le reste de cette réponse.

Ajoutez une définition directement au fichier de définition ou modifiez-la dans l'éditeur de texte de votre choix:

echo "201 novpn" >> /etc/iproute2/rt_tables

Ajouter une nouvelle règle IP pour rechercher la table sans VPN

Vérifiez les règles ip existantes qui traitent des masques netfilter:

ip rule show | grep fwmark

Si grep ne révèle rien, vous êtes en clair. S'il imprime certaines lignes, notez le nombre hexadécimal à droite du mot fwmarkdans chaque ligne. Vous devrez choisir un numéro qui n'est pas actuellement utilisé. Comme je n'avais pas de règles fwmark existantes, j'ai choisi le nombre 65.

ip rule add fwmark 65 table novpn

Ce que cela fait, c'est que tous les paquets avec le masque 65 de netfilter recherchent dans notre nouveau novpntableau des instructions sur la façon d'acheminer les paquets.

Dirigez tout le trafic dans notre nouveau tableau pour utiliser l'interface Ethernet

ip route add default via YOUR.GATEWAY.IP.HERE dev eth0 table novpn

La chose importante à noter ici est dev eth0. Cela force tout le trafic qui traverse la novpntable à utiliser uniquement l'interface Ethernet matérielle, au lieu de l'interface de tunnel virtuel créée par votre VPN.

Le moment serait venu de vider votre cache iproute pour vous assurer que vos nouvelles règles et routes prennent effet immédiatement:

ip route flush cache

Demander à la règle de pare-feu de marquer tout le trafic SSH avec le masque de filtre réseau désigné

iptables -t mangle -A OUTPUT -p tcp --sport 22 -j MARK --set-mark 65

Il y a trop d'options ici pour que j'explique en profondeur. Je vous encourage fortement à lire la page de manuel d'iptables pour avoir une idée de ce qui se passe ici:

man iptables

En bref: nous ajoutons une règle de sortie à la table mangle du pare-feu (pour la gestion spécialisée des paquets) qui lui demande de marquer tous les paquets TCP provenant du port source 22 avec notre masque de filtre réseau 65 désigné.

Et ensuite?

À ce stade, vous devez être prêt à tester SSH. Si tout se passe bien, vous devriez être satisfait de l'invite "login as".

Pour des raisons de sécurité, je vous recommande de demander à votre pare-feu de supprimer toutes les demandes SSH entrantes de l'interface du tunnel:

iptables -A INPUT -i tun0 -p tcp -m tcp --dport 22 -j DROP

Notez que toutes les instructions ci-dessus sont transitoires (à l'exception de la création de l'ID de la table de règles) - elles s'effaceront au prochain redémarrage de votre ordinateur. Les rendre permanents est un exercice que je vous laisse.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.