Accueil » Tutoriaux - How To » [Tuto] Proxy SOCKS via SSH sur Synology

[Tuto] Proxy SOCKS via SSH sur Synology

Parce qu’il faut bien se protéger sur le net et surtout parce qu’on est libre de ce que l’on souhaite visiter, voici un petit tuto facile à mettre en place pour vous ouvrir les clés du Paradis ^^ Nombreux sont ceux qui au boulot surfent la toile, pas forcément pour « glander » mais aussi pour apprendre, renseigner ou se renseigner au travers les wikis et forums mais qui se retrouvent finalement coincés par les règles de sécurités des firewalls ou des proxys mis en place par les vilains admin réseaux ^^

Voici une proposition comme une autre : la création de votre propre proxy Internet hébergé chez vous sur votre NAS Synology. Suivez le guide !


1. Matériel requis

– 1 Ordinateur chez soit
– 1 NAS Synology (dans notre exemple connu sous l’ip 192.168.1.50)
– 1 logiciel gratuit : PuTTy
– 1 Modem Routeur capable de translater des adresses (Fonction NAT) présent sur 99% des Box ou Modem.
– 1 Ordinateur au bureau ou chez un ami


2. Installation

Pour commencer on va activer le service SSH sur le NAS. Connectez vous à l’ip de la machine exemple http://192.168.1.50:5000 puis Panneau de configuration > Terminal > Activer le service SSH.

Par défaut le service SSH utilise le port 22 du réseau, seulement ce port n’est peut être pas autorisé par votre administrateur. Dans ce cas il faudrait trouver un port possible (le 443 par exemple) afin d’utiliser votre propre Proxy à la place de celui de la boite !


Si le port 22 est inexploitable il existe 2 solutions pour le changer:

Le 1er, le plus simple, est de modifier le port NAT dans votre modem routeur. Suivez ces recommandations, vous aurez à le faire pour n’importe quel port utilisé y compris le port 22 de base


1/ Ouverture et Redirection de ports : Exemple sur la LiveBox d’Orange, connectez vous sur l’onglet Configuration > Paramètres Avancés > NAT / PAT

Créez une nouvelle ligne avec le N° de port ouvert au bureau (exemple avec le port 443 qui serait non filtré). La liveBox récupérera alors le flux venant du port 443 pour le rediriger vers votre équipement (le NAS) au n° de port interne 22. Si le port 22 est utilisable alors notez le port externe et interne en port 22. C’est tout !


2/ Méthode plus « propre » qui permet de définir le port du SSH au coeur du NAS. Pour cela vous aurez besoin de votre identifiant admin/mot de passe et d’ouvrir une connexion SSH ou Telnet soit en utilisant PuTTy (mettre l’ip dans Host Name et le port 22) soit via windows en tappant Telnet 192.168.1.50

Tapez ensuite ces lignes de codes :

vi /etc/ssh/sshd_config

puis rendez vous sur la ligne du port. Pour éditer la ligne appuyez sur « i« 

Si un # se trouve devant il faudra le retirer et noter le N° de port que vous souhaitez (ici 443).

Pour enregistrer appuyez sur Echap puis tappez :wq <Entrer>



3. Mise en place du proxy sur le pc distant

Pour utiliser votre Proxy il faudra garder sous la main le logiciel PuTTy

Pour commencer rendez vous dans Connection > SSH > Tunnels. Puis entrez le numéro de port SSH (443 dans l’exemple), choisissez l’option Dynamic et cliquez sur Add. Une règle « D443 » apparaît.

Revenez ensuite au début (Session) puis entrez votre Host Name ou adresse ip : Si votre connexion chez vous est sous IP Fixe pour Internet ou alors votre Dyndns) et le port de communication (ici 443) et sélectionnez le type de connexion en SSH.

Vous pouvez sauvez les paramètres pour éviter de les rentrer par la suite. N’oubliez pas de terminer en ouvrant une connexion SSH : cliquez sur Open ! A l’invite, saisissez votre identifiant et mot de passe pour activer la connexion SSH.


4. Modification sur le Navigateur

Votre navigateur web est le dernier maillon de la chaîne. Ce dernier ne peut pas savoir que votre connexion SSH est destinées à la navigation Internet au travers le tunnel SSH que vous venez de construire ! Pour cela un exemple sur Firefox : Allez dans Outils > Options… > Avancés > Réseau > Paramètres…

Choisissez Configuration manuelle du proxy et saisissez localhost (ou 127.0.0.1) dans Hôte SOCKS sous le port 443 (si votre port SSH est configuré sur 443) et sélectionnez SOCKS v5 puis OK.


5. Tests et conclusion

Pour vérifier si cela fonctionne vous pouvez effectuer un test avec www.monip.org, l’adresse qui s’affiche dans votre navigateur doit être la même qui est chez vous ! Désormais toutes les communications seront chiffrées et vos traces invisibles sur le réseau local où vous vous trouvez ! C’est certes un peu fastidieux mais pour vous ouvrir les portes de l’anonymat on a pas trouvé plus simple 😉

10 plusieurs commentaires

  1. Merci pour le tuto.
    J’ai déjà passé énormément de temps sur cette config sans succès.
    J’avais même installé « midnight commander » via un paquet trouvé sur synoblog pour changer le port 22, rien n’y fait : putty ne se connecte pas : « connexion error »
    J’en conclue que le firewall de ma boite (grosse boite allemande : ca rigole pas !) doit verrouiller tous les ports pour les applications non autorisées (dont je suppose Putty fait partie)
    Donc c mort sauf à réussir à changer l’ID d’identification de Putty et de le faire passer pour une appli autorisée (IE 6 🙂 ) !
    Si quelqu’un sait faire ca, je suis preneur !

  2. Hello!

    Et quand on passe deja par un proxy ca marche aussi ?

    merci!

  3. Merci pour ce tuto j’ai essayé ce matin !! et ca marche je suis chez Sanofi donc très grosse boite et avec le port 443 ca marche !!!
    merci mille fois je revis 🙂

  4. Juste un détail, les résolutions dns se feront en local.
    Pour être vraiment « discret » et faire les résolutions DNS sur sa machine sock5 il faut prendre Firefox et le paramétrer de la façon suivante.

    Dans la barre d’adresse taper about:config
    dans filtre taper dns

    puis sélectionner l’entrée network.proxy.socks_remote_dns et la positionner à true par un double click

    dans ce cas la résolution dns ne se fera pas en local, mais en utilisant la connexion ssh

    Les versions de chrome ne permettent pas encore de gérer le remote dns.

    la discrétion assurée.

  5. Super methode, pour le web c’est nickel.
    Par contre as-tu une méthode pour faire fonctionner un ftp avec cette méthode ?

    La connection au ftp fonctionne mais au moment de lister le repertoire j’obtiens toujours cette erreur :
    [L] Opening data connection via Proxy
    [L] SOCKS Error: General SOCKS server failure

  6. je retire ce que j’ai dit sur mon message précèdent, c’est mon client ftp qui a un bug…

    ça fonctionne nickel avec firefox.

  7. Hello. Personne n’a une idée pour masquer l’indentité de putty ?

  8. Merci pour le tuto !
    pour ceux qui connaissent le DOTNET et C#, voici mon code source pour faire la même chose sans putty dans une application Console :
    static void Main(string[] args)
    {
    //checks which browsers are installed
    RegistryKey browserKeys;
    //on 64bit the browsers are in a different location
    browserKeys = Registry.LocalMachine.OpenSubKey(@ »SOFTWARE\WOW6432Node\Clients\StartMenuInternet »);
    if (browserKeys == null)
    browserKeys = Registry.LocalMachine.OpenSubKey(@ »SOFTWARE\Clients\StartMenuInternet »);

    string[] browserNames = browserKeys.GetSubKeyNames();
    if (browserNames.Contains(« Google Chrome »))
    { //starts chrome with custom proxy settings (if chrome is installed)
    Process browser = new Process();
    browser.StartInfo.FileName = « chrome »;
    browser.Start();
    browser.StartInfo.Arguments = « –proxy-server=\ »socks5://localhost:443\ » »;
    }
    else
    if (browserNames.Contains(« FIREFOX.EXE »))
    { //else starts firefox
    Process.Start(@ »C:\Program Files (x86)\Mozilla Firefox\firefox.exe »);
    }

    Process cmd = new Process();
    cmd.StartInfo.FileName = @ »C:\Program Files (x86)\PuTTY\plink.exe »;
    cmd.StartInfo.UseShellExecute = false;
    cmd.StartInfo.RedirectStandardInput = true;
    cmd.StartInfo.RedirectStandardOutput = true;
    cmd.StartInfo.Arguments =  » -ssh admin@votreDNS_OU_IP_DU_SYNOLOGY_ICI:443 -pw VOTREMOTDEPASSE_SYNO_ICI -C -T -D 443 -N »;
    cmd.Start();
    cmd.StandardInput.WriteLine(« ./myscript.sh »);
    cmd.StandardInput.WriteLine(« y »);
    cmd.StandardInput.WriteLine(« exit »);
    string output = cmd.StandardOutput.ReadToEnd();

    }

  9. suite à mon poste précédent, je précise qu’il faut quand même putty (ou plus précisemment : plink.exe qui fait partie des applications fournies dans le dossier Putty)
    plus de détails ici : http://legacy.averbouch.biz/proxy-socks-via-tunnel-ssh-avec-synology-putty-et-c-net/

Laisser une réponse

Votre adresse email ne sera pas publiéeLes champs requis sont surlignés *

*