PDA

View Full Version : [Linux]proxy server, ssh...


WarDuck
06-10-2011, 13:46
Salve ragazzi, ho un laptop con su Arch Linux e ho messo su un proxy server (si chiama 'polipo' :sofico: ) insieme ad un demone ssh.

Il proxy è in listen sulla porta 80, mentre ssh sulla porta 22.

Dalla rete locale funziona tutto bene, riesco ad accedere a ssh e il proxy funziona.

Dall'esterno invece il proxy funziona sempre, ma solo con il protocollo HTTP (se provo ad accedere ad altri protocolli come HTTPS o FTP non va, pur essendo specificato nelle impostazioni del browser).

Premetto che questa operazione la sto facendo da lavoro, dove bloccano delle porte in uscita (ma senza proxy HTTPS e FTP funzionano).

Da cosa potrebbe dipendere?

SSH invece dall'esterno non va.

Tenete presente che Polipo ed SSH hanno praticamente configurazione di default (su polipo ho modificato la porta di listen mentre su ssh ho disattivato l'accesso come utente root).

Leggendo la documentazione polipo dovrebbe consentire di default il tunneling delle connessioni (ed in effetti da casa HTTPS funziona).

niki89
06-10-2011, 14:59
Sblocca le porte sul firewall(router)....

Http non viene bloccato dal firewall e quindi le richieste vanno sempre a buon fine.

Tasslehoff
06-10-2011, 23:03
Può anche essere che di default questo proxy permetta le connessioni soltanto dagli host della rete locale in cui si trova e droppi tutte quelle che provengono da host di reti differenti.
Rispetto ad altri proxy ben più diffusi e utilizzati (es squid) questa sarebbe già una policy piuttosto permissiva, considera che di default squid permette connessioni soltanto da localhost.
Se il proxy non rifiutasse quelle connessioni sarebbe un open proxy di default, insomma non sarebbe un software proprio raccomandabile :)

Verifica nelle acl della configurazione, poi certamente verifica anche la raggiungibilità del servizio attraverso il tuo router, attento però a non esporre in rete un open proxy, potresti pentirtene amaramente, e non pensare che la cosa possa passare inosservata, la rete pullula di bot che fanno scansioni tcp per cercare servizi simili :rolleyes:

WarDuck
08-10-2011, 11:19
Innanzitutto grazie per le risposte.

@niki89: il router è già configurato a dovere. Ad ogni modo le richieste HTTP non passano se non apri la porta 80.

@Tasslehoff:
quindi l'unica via sicura secondo te sarebbe ssh giusto?

Secondo te hostando ssh su porta 80 potrebbe funzionare, o i moderni firewall facendo packet inspection bloccherebbero comunque il protocollo?

Insomma devo creare un programmino che incapsula SSH in HTTP? :sofico:

niki89
08-10-2011, 13:19
Innanzitutto grazie per le risposte.

@niki89: il router è già configurato a dovere. Ad ogni modo le richieste HTTP non passano se non apri la porta 80.

@Tasslehoff:
quindi l'unica via sicura secondo te sarebbe ssh giusto?

Secondo te hostando ssh su porta 80 potrebbe funzionare, o i moderni firewall facendo packet inspection bloccherebbero comunque il protocollo?

Insomma devo creare un programmino che incapsula SSH in HTTP? :sofico:

ma se metti un vncserver???

Tasslehoff
08-10-2011, 15:40
@Tasslehoff:
quindi l'unica via sicura secondo te sarebbe ssh giusto?

Secondo te hostando ssh su porta 80 potrebbe funzionare, o i moderni firewall facendo packet inspection bloccherebbero comunque il protocollo?

Insomma devo creare un programmino che incapsula SSH in HTTP? :sofico:Non tutti i proxy fanno stateful inspection, moltissimi si limitano a un normale filtraggio delle porte.
Potresti provare a mettere ssh e il tuo proxy in ascolto sulle due porte che dici essere raggiungibili in outbound dalla rete del tuo ufficio (quindi 443 e 21).

A prescindere dalla raggiungibilità del proxy resta da vedere se il proxy permette l'accesso a host che non siano in rete locale, questo lo devi verificare nella acl del proxy stesso.
Anche sistemando le acl per rendere utilizzabile il proxy dall'esterno dovresti però abilitare l'autenticazione sul proxy, altrimenti rischieresti di esporre un open proxy con conseguenze spiacevoli (anche legali).

Una soluzione imho molto snella e semplice potrebbe essere quella di esporre soltanto ssh (il che sarebbe molto meglio rispetto ad esporre un proxy, anche il più blindato del pianeta) e accedere al proxy tramite tunnel ssh.

es:
server ssh e proxy: 192.168.0.254
ssh in ascolto sulla porta 443
proxy in ascolto sulla porta 3128
policy del proxy che permettono la navigazione da localhost (127.0.0.1, ovvero l'interfaccia di loopback del server stesso) e dalla rete 192.168.0.0/24

Dall'ufficio potresti collegarti al proxy con queste opzioni:
ssh -l utente hostnamedeltuoserver.domain.tld -L 8080:127.0.0.1:3128

Una volta connesso in ssh troverai in proxy in ascolto sulla porta 8080 dell'interfaccia di loopback del tuo pc (insomma della macchina da cui hai lanciato la connessione in ssh).
A questo punto modifichi il proxy del tuo browser per usare l'indirizzo del proxy 127.0.0.1 e la porta 8080.

In sostanza l'opzione -L di ssh forwarda sulla porta 8080 dell'interfaccia di loopback del tuo pc il servizio in ascolto sulla porta 3128 dell'interfaccia di loopback (l'ip 127.0.0.1 che vedi nella sintassi del comando si riferisce a questo) del server ssh a cui ti colleghi (hostnamedeltuoserver.domain.tld).

Puoi fare questo con un qualsiasi client ssh (es putty o openssh dentro cygwin), se usi windows e non vuoi avere terminali aperti per questo puoi usare la comoda utility MyEnTunnel (http://nemesis2.qx.net/pages/MyEnTunnel), che di fatto è un frontend grafico alla utility plink della suite di putty.

Se vuoi migliorare il tutto puoi bloccare la login come root da ssh, bloccare l'autenticazione tramite password e utilizzare per autenticarti solo i certificati.
In questo modo non ti devi ricordare password e rendi il tuo sistema più sicuro.

WarDuck
08-10-2011, 22:05
Grazie per la risposta Tasslehoff... si la mia idea è quella di tenere solo ssh se riuscissi a farlo funzionare, lunedì farò una prova e vi farò sapere come è andata.

WarDuck
10-10-2011, 19:36
Uppo solo per aggiornarvi, ho fatto come suggerito da Tasslehoff, e funziona :sofico:

Grazie mille!