Accesso remoto a una macchina Linux dietro un firewall


11

Distribuirò una macchina Linux come una sorta di terminale pubblico in una posizione remota. Mi piacerebbe essere in grado di accedervi da remoto tramite SSH per la manutenzione, ma non voglio tenere una porta aperta sul firewall remoto per le rare occasioni in cui ho bisogno di accedere a questa macchina. Ho pensato a un semplice script per creare un tunnel SSH inverso verso una macchina all'esterno, ma preferirei che un utente non dovesse fare nulla quando devo accedervi. Qualche idea?

Aggiornamento: ho deciso di seguire il mio piano originale di uno script per creare un tunnel SSH inverso. Mentre altre soluzioni suggerite, come il port knocking sarebbero più in linea con ciò che voglio davvero fare, in questo caso, non ho alcun accesso per configurare il router se non per guidare un utente attraverso una configurazione. brivido


Non è necessario configurare il router. Linux ha un firewall iptables che è sufficiente per la sicurezza del firewall. E fare un tunnel ssh sempre attivo verso il server lo rende vulnerabile ad attaccarlo lanciando l'host a cui è connesso.
Kazimieras Aliulis,

1
Dovrei comunque aprire una porta sul router per passare tutto ciò di cui avevo bisogno nella scatola di Linux. Il tunnel ssh non è sempre attivo. Verrà avviato da un utente alla fine quando avrò bisogno dell'accesso alla macchina.
baudtack,

Risposte:


5

Ha meno a che fare con la preoccupazione di aprire una porta e più di non voler camminare un utente attraverso il processo di apertura di una porta. Purtroppo non ho alcun accesso a questo router.

Se la modifica del router è completamente fuori questione, potrebbe essere necessario esaminare una soluzione P2P o VPN come Hamachi . Se si imposta il sistema per stabilire automaticamente la connessione VPN all'avvio, si dovrebbe essere in grado di connettersi ogni volta che è necessario. Hamachi fa tutte le negoziazioni del firewall per te. L'unico inconveniente è che devi fare affidamento sul fatto che i server Hamachi siano attivi e funzionali quando devi connetterti.

Se si dispone di un server sempre attivo, è possibile impostare l' autossh in modo che il sistema remoto mantenga sempre un tunnel aperto e collegato al server. L'unico inconveniente è che il sistema remoto è compromesso dal momento che l'attaccante otterrà le chiavi utilizzate per stabilire la sessione SSH. Sarebbe molto importante mantenere il tuo sistema che accetta la connessione ssh davvero bloccato.


Di seguito è la mia risposta originale, avevo ipotizzato che l'aggiornamento del router fosse un'opzione.

Una soluzione che potresti voler esaminare se il firewall lo supporta è il port knocking . Con alcuni firewall dovrebbe essere possibile inviare un set speciale di pacchetti che il firewall rileva e quindi apre temporaneamente il foro attraverso il firewall.

Ci sono molte implementazioni alcune meglio di altre. Alcuni usano una forte crittografia per rendere quasi impossibile per una persona senza i tasti giusti inviare il colpo corretto.


Sembra un'ottima idea! Purtroppo il firewall in questione è solo un semplice Linksys di livello consumer o equivalente.
baudtack,

1
Se puoi installare dd-wrt puoi usare knockd ( dd-wrt.com/wiki/index.php/Knockd )
Zoredache,

@Zoredache Vero, ma questo è in una posizione remota. Non ho accesso a questo router e rabbrividirei al pensiero di provare a guidare un utente attraverso un'installazione dd-wrt.
baudtack,

Sono d'accordo che questo è probabilmente il modo giusto per configurarlo, a condizione che avessi accesso fisico al router per installare dd-wrt.
baudtack,

Hamachi, da quando è stato acquisito da LogMeIn, ha mostrato una terribile considerazione per gli utenti Linux. Trovo il prodotto inaffidabile quando le macchine Linux fanno parte della mia rete hamachi.
bmb,

6

Non sarei così preoccupato di lasciare la porta 22 accessibile a Internet, ma prenderei alcune misure per proteggerla.

Innanzitutto, disabilita l'autenticazione interattiva da tastiera e passa ai tasti ssh.

In secondo luogo, installa qualcosa di simile a fail2ban sul tuo server remoto su indirizzi IP blackball che sondano ripetutamente il tuo computer. Poiché hai le chiavi ssh di installazione, non dovrebbero esserci errori di autenticazione per gli utenti autorizzati.

In alternativa, se puoi, segui i consigli di WerkkreWs e configura il firewall davanti alla macchina per terminare una connessione VPN, quindi consenti solo al demone SSH sul server remoto di accettare le connessioni che attraversano quella VPN.

In alternativa, se il tuo firewall non è in grado di terminare la connessione VPN, probabilmente puoi inoltrare i pacchetti GRE o IPSEC alla tua macchina linux e terminarla lì.


Ha meno a che fare con la preoccupazione di aprire una porta e più di non voler camminare un utente attraverso il processo di apertura di una porta. Purtroppo non ho alcun accesso a questo router.
baudtack,

Capisco e simpatizzo per il tuo dolore.
Dave Cheney,

2
Il primo passo in questa soluzione sarebbe configurare sshd per l'esecuzione su una porta non standard. Ci sono molti robot che bussano alla porta 22 là fuori. Scegli una porta che non appare su / etc / services e "nmap HOST" non la trova.
hayalci,

4

Sembra che tu stia cercando knocked

Puoi installarlo sul server Linux stesso, con iptables in modo che sia un po 'come un firewall di secondo livello. Anche con la porta 22 aperta sul firewall front-end, non sarebbe aperta sul server, quindi i portieri non vedrebbero alcuna porta aperta. Quindi quando invii il "bussare segreto", all'improvviso hai un percorso aperto verso la porta 22.

Ha senso?


A meno che non mi sbagli, dovrei inoltrare anche tutte le porte knock, giusto? Non sarebbe ovvio quando qualcuno scansionasse il router? Non conoscerebbero l'ordine, ma portando le possibili combinazioni a 6, se ricordo il mio modo di fare correttamente le permutazioni, dà loro un enorme vantaggio. O sto pensando a questo male?
baudtack,

Mentre le porte utilizzate per bussare dovrebbero essere inoltrate, l'host che esegue knockd in realtà non ha bisogno di rispondere alla fonte del knocking in alcun modo.
Zoredache,

corretto: le porte aperte sul primo firewall non saranno aperte sul secondo, quindi allo scanner sembrano tutte chiuse. Non c'è modo di distinguere le porte knocking da non knocking.
Brent,

3

Per riassumere tutte le risposte:

usa ssh, ma rendilo più oscuro e sicuro.

Per sicurezza:

  • Assicurarsi che l'accesso root non sia consentito (PermitRootLogin no).
  • Limitare gli utenti, che possono accedere con l'opzione di configurazione AllowUsers o AllowGroups.
  • Assicurarsi che utilizzi solo il protocollo ssh versione 2 (Protocollo 2).
  • Si consiglia di utilizzare solo le chiavi di autenticazione, ma la password è più comoda, quando può essere necessario connettersi al server dalle vacanze in cui non si ha accesso alle chiavi di autenticazione.

Per oscurità:

  • Cambia porta ssh in qualche porta alta casuale che ricordi, come 20486. Questo eliminerebbe la maggior parte dei bruteforcer automatici, ma non lo nasconderebbe da tutte le scansioni delle porte sul server.
  • Nascondi la capacità di connettersi alla porta. Un modo è il port knocking menzionato in altre risposte, ma è necessario un software speciale, che non può essere accessibile ovunque. Un'altra semplice opzione è quella di utilizzare il firewall iptables con il modulo recente per creare una regola, che consentirebbe di connettersi solo al secondo o terzo tentativo. Quindi sai che devi provare più volte a connetterti con successo, ma una semplice scansione di tutte le porte non rivelerebbe la porta ssh. Le regole sarebbero simili a quelle:


iptables -A INPUT -m tcp -p tcp --dport 20486 -m state --state NEW -m recent --set
iptables -A INPUT -m tcp -p tcp --dport 20486 -m state --state NEW  -m recent --rcheck --seconds 60 --hitcount 2 -j ACCEPT
iptables -A INPUT -m tcp -p tcp --dport 20486 -j DROP


+1 bel riassunto e idea interessante sul trucco a più tentativi.
David Z,

2

Attività pianificata lo script per il tunnel SSH inverso o aprire la porta del firewall.

Se sei preoccupato che SSH sia aperto al mondo, potresti programmare l'attività quando il tuo periodo di manutenzione con script iptables e solo la porta sarà disponibile.


1
Concordato. A meno che tu non abbia un modo per accedere alla VPN, l'unica vera soluzione è aprire una porta. Se sei nervoso, puoi sempre usare una porta non standard.
WerkkreW,

2

Cerca di bussare alla porta per aprire il tunnel SSH.

Inoltre, esegui denyhosts per bloccare le persone dopo troppe richieste errate.

Entrambi i pacchetti sono disponibili nei repository Ubuntu, Fedora e RHEL standard.


1

Vai avanti e apri una porta, rendila unica al di fuori del normale intervallo. Lo farei una porta casuale oltre 1024. In questo modo è improbabile che gli hacker lo cerchino.


0

Nessun motivo per non creare un buco nel firewall se è necessario accedere alla macchina in remoto, per quanto raramente.

Tuttavia, se preferisci ancora non aprire (o non riuscire) ad aprire la porta, un semplice script shell potrebbe monitorare alcune risorse disponibili su Internet che controlli e ascoltare il comando per avviare il tunnel inverso. Gli account e-mail, i canali IRC e le pagine Web vengono immediatamente in mente come dispositivi di attivazione.

Naturalmente, questo è molto più fragile e meno sicuro della semplice apertura del porto. Ma sono sicuro che hai le tue ragioni.

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.