Anonimizzare OpenVPN Consenti accesso SSH al server interno


10

Sto usando una VPN anonima, ma voglio l'accesso SSH al computer interno.

Come posso accedere al mio computer interno tramite SSH? Quando faccio ssh 98.123.45.6 , la connessione scade .

  • Indirizzo IP dal fornitore del cavo: 98.123.45.6
  • IP anonimo tramite VPN: 50.1.2.3
  • Computer interno: 192.168.1.123

Durante la ricerca, ho trovato consigli su come impostare regole iptables, regole di routing o aggiungere ListenAddress a sshd_config. Quale di questi si applica al mio caso?

Ecco il mio percorso :

Tabella di routing IP del kernel
Destinazione Gateway Maschera genetica Flag Metrico Rif Usa 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
loopback * 255.0.0.0 U 0 0 0 lo
impostazione predefinita 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
default ddwrt 0.0.0.0 UG 202 0 0 eth0

Risposte:


15

Per risolvere questo problema dovrai impostare sia iptables che regole di routing. Il problema specifico che stai riscontrando è che i pacchetti SSH in uscita vengono instradati tramite l'interfaccia tunnel VPN anonima anziché l'interfaccia Ethernet. Questo accade perché il tuo software VPN ha impostato una regola di routing per inviare tutto il traffico non gestito tramite l'interfaccia del tunnel. Buono per anonimizzare il traffico di rete; male per stabilire connessioni SSH al tuo computer.

Ci sono alcuni modi per risolvere questo problema, ma condividerò con te quello che ha funzionato per me in una situazione identica. Ecco cosa dobbiamo fare:

  1. Creare una nuova tabella delle regole IP per gestire il traffico non VPN
  2. Aggiungi una regola IP per cercare la nostra tabella no-VPN per tutti i pacchetti contrassegnati con una maschera netfilter specifica
  3. Aggiungi una route IP che indirizzi tutto il traffico nella nostra tabella no-VPN per utilizzare la tua interfaccia Ethernet anziché il tunnel
  4. Aggiungi una regola iptables per contrassegnare tutto il traffico SSH con la nostra maschera netfilter designata

Nota: stavo lavorando con Raspbian mentre stavo facendo quanto segue, quindi potresti aver bisogno di regolare un po 'i comandi per adattarli alla tua distribuzione.

Creazione di una nuova tabella delle regole IP

Inizia controllando il file di definizione della tabella di iproute2. Vogliamo assicurarci di non utilizzare il nome o il numero di alcuna tabella di regole esistente.

cat /etc/iproute2/rt_tables

Probabilmente vedrai qualcosa in questo senso:

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

Scegli un numero e un nome arbitrari per la tua nuova tabella delle regole, qualsiasi cosa non utilizzata sopra. Userò il numero 201 e il nome novpnper il resto di questa risposta.

Aggiungi una definizione direttamente al file di definizione o modificala nell'editor di testo che preferisci:

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

Aggiungi una nuova regola IP per cercare la tabella no-VPN

Controlla eventuali regole ip esistenti che si occupano di maschere netfilter:

ip rule show | grep fwmark

Se grep non presenta nulla, sei in chiaro. Se stampa alcune righe, prendi nota del numero esadecimale a destra della parola fwmarkin ogni riga. Dovrai scegliere un numero che non è attualmente in uso. Poiché non avevo regole fwmark esistenti, ho scelto il numero 65.

ip rule add fwmark 65 table novpn

Ciò fa sì che qualsiasi pacchetto con netfilter mask 65 cerchi la nostra nuova novpntabella per istruzioni su come instradare i pacchetti.

Indirizza tutto il traffico nella nostra nuova tabella per utilizzare l'interfaccia Ethernet

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

La cosa importante da notare qui è dev eth0. Ciò impone a tutto il traffico che passa attraverso la novpntabella di utilizzare solo l'interfaccia Ethernet hardware, anziché l'interfaccia del tunnel virtuale creata dalla VPN.

Ora sarebbe un buon momento per svuotare la cache di iproute, per assicurarsi che le nuove regole e percorsi abbiano effetto immediato:

ip route flush cache

Indicare alla regola del firewall di contrassegnare tutto il traffico SSH con la maschera netfilter designata

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

Ci sono troppe opzioni qui per me da spiegare in modo approfondito. Ti incoraggio vivamente a leggere la pagina di manuale di iptables per avere un'idea di cosa sta succedendo qui:

man iptables

In breve: stiamo aggiungendo una regola di output alla tabella mangle del firewall (per la gestione di pacchetti specializzati) che indica di contrassegnare qualsiasi pacchetto TCP proveniente dalla porta di origine 22 con la nostra maschera 65 di netfilter designata.

Quale prossimo?

A questo punto, dovresti essere pronto per testare SSH. Se tutto va bene, dovresti ricevere il felice prompt "accedi come".

Per motivi di sicurezza, ti consiglio di indicare al firewall di eliminare qualsiasi richiesta SSH in arrivo dall'interfaccia del tunnel:

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

Si noti che tutte le istruzioni sopra riportate sono transitorie (ad eccezione della creazione dell'ID della tabella delle regole): verranno cancellate al successivo riavvio del computer. Renderli permanenti è un esercizio che ti lascio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.