SOCKS5 proxy con SSH
Questa guida descrive i passi necessari per creare un proxy SOCKSv5 tramite un tunnel SSH.
SOCKS è un particolare proxy che permette l'instradamento di pacchetti tra IP di reti differenti ed a differenza dal famoso HTTP Proxy è indipendente dal protocollo che si desidera utilizzare (es. HTTP, FTP, POP3, IMAP, etc.) e può essere utilizzato sia per le connessioni TCP che UDP, in questo modo possono essere “bybassate” le eventuali restrizioni sulla rete in cui ci troviamo. SOCKS inoltre supporta differenti metodi di autenticazione e permette di anonimizzare la connessione.
In questa utilizzaremo un proxy SOSKS attraverso un tunnel SSH in modo da aumentare la sicurezza criptando la connessione.
Che cosa ci occorre ?
- Un server con il demone
sshd
attivo - Un collegamento ad Internet
- Una macchina client con
ssh
- Un browser che supporti SOCKS (ad es. Mozilla Firefox)
Creiamo il proxy
Dal server attiviamo il demone sshd
e se necessario creiamo anche un utente UNIX che ci servirà per l'autenticazione.
Dal client, apriamo il terminale e digitiamo:
$ ssh -D 8888 -Nn -f user@example.org
Adesso spieghiamo le opzioni inserite:
-D
, effettua il port-forwarding del server remoto su una porta locale-N
, non esegue nessun comando sul server remoto-f
, esegue il clientssh
in background
Sempre da client apriamo il nostro browser preferito ad esempio Mozilla Firefox e configuriamo le opzioni relative al server proxy:
- Apriamo le Preferenze
- Andiamo su Avanzate → Rete
- Clicchiamo su Impostazioni…
- Inseriamo nei campi relativi a Host SOCKS l'host e la porta (nel nostro caso
localhost
e8888
) - Selezioniamo
SOCKS v5
eDNS Remoto
L'opzione DNS Remoto
permette di far effettuare le richieste DNS direttamente dal server remoto (ovvero il server SOCKS). Questa opzione è utile nel caso il server DNS che si sta utilizzando blocca la risoluzione di alcuni siti (ad es. nelle reti aziendali).
Automatizziamo il tutto
Apriamo il nostro editor di testo preferito ed incolliamo le seguenti righe di codice:
#!/bin/bash LOCAL_PORT="8888" REMOTE_HOST="example.org" REMOTE_USER="user" ssh -D ${LOCAL_PORT} -Nf ${REMOTE_USER}@${REMOTE_HOST}
Modifichiamo le variabili LOCAL_PORT
, REMOTE_HOST
e REMOTE_USER
con i nostri dati, eseguiamo lo script ed il gioco è fatto!
Buona navigazione!