Ho bisogno di una soluzione proxy inversa per SSH


10

Salve, ecco una situazione in cui ho un server in un data center aziendale per un progetto. Ho un accesso SSH a questa macchina sulla porta 22. Ci sono alcune macchine virtuali in esecuzione su questo server e quindi sul retro di ogni cosa che molti altri sistemi operativi stanno funzionando. Ora dal momento che sono dietro il firewall dei data center, il mio supervisore mi ha chiesto se posso fare qualcosa con cui posso dare a molte persone l'accesso a Internet direttamente a queste macchine virtuali. So se mi è stato permesso di ottenere traffico sulla porta diversa da 22, quindi posso fare un port forwarding. Ma dal momento che non mi è permesso questo, quindi quale può essere una soluzione in questo caso. Le persone che vorrebbero connettersi potrebbero essere dei veri idioti. Chi potrebbe essere felice semplicemente aprendo il mastice sui loro computer o potrebbe persino essere filezilla.

Non ho un firewall in mano o nessuna porta diversa da 22 aperta e in effetti anche se chiedo che non consentano l'apertura.2 volte SSH non è una cosa che il mio supervisore vuole.


1
domanda correlata con un'altra ottima soluzione: serverfault.com/questions/361794/…
Kaii


sshpiperd funziona alla grande!
Király István,

Risposte:


5

È necessario aprire il tunnel ssh dal computer al server nel data center. Chiamiamolo come "server1". Se stai usando openssh, puoi semplicemente eseguire

ssh -L0.0.0.0:8080:localhost:8080 you_username@server1

Questo aprirà la connessione dal tuo computer alla porta 8080 al server, porta 8080, saltando il firewall in mezzo. Supponendo che Apache sia in ascolto sulla porta 8080. Il formato di port forwarding è in ascolto IP: porta locale: indirizzo remoto: porta remota. Naturalmente per un singolo server puoi anche usare

ssh -L0.0.0.0:8080:remote_server_address:8080 you_username@server1

Si noti che localhost nel parametro -L è relativo a server1. In altre parole, il server sta vedendo connessioni provenienti da localhost, mentre in realtà quelle provengono dal tuo computer tramite una connessione ssh.

Hai anche bisogno di un parametro

AllowTcpForwarding yes

nella configurazione ssh del server (in genere / etc / ssh / sshd_config).

Successivamente, altri possono connettersi al computer sulla porta 8080 per ottenere la connessione tramite Apache Proxy inverso. Se hai bisogno di un proxy generale (quindi gli utenti possono scegliere l'indirizzo, non solo gli indirizzi specifici nella configurazione di Apache) devi installare squid su server1 e usare ssh tunnel per squid port.


Intendi dire quando lo farò ssh -L0.0.0.0:8080:localhost:8080 you_username@server1 se la connessione passerà ancora attraverso la porta 22 del firewall (perché se ciò non accade non posso fare nulla) e il tunnel ssh verrebbe stabilito tra la macchina locale e la macchina remota alle porte specificate, ma l'intero traffico sarebbe in corso (porta 22) sul firewall.
Bond

Quando esegui ssh tunnel, quel traffico (dalla porta 8080 alla porta 8080) va all'interno della connessione ssh, usando la porta 22. Il firewall vede il traffico verso la porta 22, non 8080.
Olli,

Quando si dà questo comando, ssh -L0.0.0.0:8080:remote_server_address:8080 you_username@server1 voglio sapere cosa può essere impostato come indirizzo_server_ remoto è che l'IP della macchina interna a cui voglio usare server1 come intermedio. L'ho capito correttamente?
Bond

Bond: sì, è corretto. Puoi anche specificare più tunnel -L (con diverse porte di origine, ovviamente) per aprire connessioni a più macchine interne. Ad esempio "-L0.0.0.0: 8080: remote_server1: 80 -L0.0.0.0: 8081: remote_server2: 80 -L0.0.0.0: 8082: remote_server2: 22" (senza virgolette).
Olli,

Per rendere questo solido sarebbe necessario impostare un server che agisca come rimbalzo all'esterno del data center e consentire il traffico. Naturalmente il tunnel ssh è ok come soluzione temporanea, ma per qualcosa in produzione, consiglierei di installare un vero proxy inverso su il rimbalzo e adattare le impostazioni del firewall per consentire 8080 connessioni solo da quel rimbalzo. Detto questo, è più intelligente posizionare il proxy inverso come una delle macchine virtuali all'interno del controller di dominio. In questo modo la connessione deve essere protetta con SSL solo verso questa macchina.
jmary,

0

Forse potresti usare qualcosa come SshMeIn . È un sistema web opensource che farà tunnel ssh attraverso i firewall, non è nemmeno necessario aprire le porte.

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.