Installer un serveur SOCKS sous Debian/Ubuntu

Posté par seiyar81 le 8 janvier 2010 | Laisser un commentaire (10)

C’est quoi SOCKS ? Et bien SOCKS est un protocole réseau qui permet à des applications client-serveur d’employer d’une manière transparente les services d’un pare-feu.
Nous allons l’utiliser dans cet article pour créer un serveur proxy qui va nous permettre de passer outre les différentes restrictions mises en places sur le réseau.
Il s’agit souvent de ports ou de sites bloqués dans les réseaux d’entreprises ou d’universités.

Personnellement l’école au sein de laquelle je suis mes études, autorise les port 80 (HTTP), 22 (SSH), 21 (FTP), 443 (SSL), 1863 (MSN) et quelques autres seulement. Impossible donc de jouer à un quelconque jeu en ligne (même si je rappelle que les études sont faites pour étudier !). 
Je m’en sers pour jouer de temps en temps et surtout pour me connecter en SSH à mon serveur qui n’écoute pas sur le port 22 (histoire d’éviter le spam de bots).

J’ai choisi d’utiliser Dante Server car il est plutôt simple à configurer, mais sachez qu’il en existe d’autres tels que WinSocks pour Windows ou bien Nylon pour OpenBSD.

On commence donc par installer le paquet :

 
sudo apt-get install dante-server 

Ensuite on va s’intéresser au fichier de configuration du serveur.

Voici un exemple de contenu pour /etc/danted.conf :

logoutput: syslog stdout /var/log/sockd

internal: ip_du_serveur port = port_proxy
external: eth0

method: username

user.notprivileged: sockd

client pass {
  from: ip_du_serveur/0 port 1-65535 to: 0.0.0.0/0
  log: connect disconnect

}

pass {
  from: ip_du_serveur/0 to: 0.0.0.0/0
  method: username
}

Petite explication du bloc ci-dessus :
logoutput indique où l’on souhaite rediriger la sortie du programme
internal/external définissent l’adresse/l’interface utilisée pour l’écoute et la sortie
Placez-y donc l’IP de votre serveur, le port souhaité et l’interface
method: username indique que l’on souhaite une authentification par login/mot de passe
user.notprivileged : l’utilisateur et le groupe sockd sont créés à l’installation du programme

– les zones client pass et pass définissent le traffic autorisé, ici on autorise tout !

On termine en ajoutant une règle iptables pour autoriser le traffic sur le port choisit
et on démarre le serveur :

iptables -A INPUT -d ip_du_serveur -p tcp --dport port_proxy -j ACCEPT

/etc/init.d/danted start

Et voilà c’est aussi simple que ça ! Vous avez maintenant un serveur proxy complètement fonctionnel.
Ne vous reste plus qu’à configurer vos logiciels clients soit directement dans les propriétés des logiciels qui proposent la connexion par proxy soit en utilisant un logiciel du type Proxifier sous Windows ou bien Dante Client.

Catégorie: Internet, Linux | Laisser un commentaire (10)


10 commentaires pour “Installer un serveur SOCKS sous Debian/Ubuntu”

  • Merci pour ce tutorial très instructif !
    Tout fonctionne à merveille avec cette config, à l’exception des paquets UDP. Je n’arrive pas à les faire passer mon serveur dante, et ils apparaissent avec des erreurs de connection dans les logs du serveur.
    Vous dites que cela fonctionne chez vous, avez-vous une idée?

  • Pour les paquets UDP il faut ajouter une autre règle à iptables, celle indiquée ci-dessus n’acceptant que les paquets TCP :

    iptables -A INPUT -d ip_du_serveur -p udp –-dport port_proxy -j ACCEPT

    Cela devrait fonctionner avec ça.

  • J’avais déjà essayé, c’est toujours la même chose. Voilà ce que les logs donnent:

    Feb 12 15:02:26 (1265983346) danted[7973]: pass(1): udp/udpassociate ]: 0 -> username%***@0.0.0.0.0 -> 0, 0 -> `world’ -> 0: client closed
    Feb 12 15:02:26 (1265983346) danted[9443]: pass(1): udp/udpassociate ]: 0 -> username%***@0.0.0.0.0 -> 0, 0 -> `world’ -> 0: client error: Connection reset by peer (errno = 104)

    Cela ne fonctionne donc toujours pas…

  • En ajoutant cette ligne à la section pass ?
    command: bind bindreply connect udpassociate udpreply

  • Non, toujours les mêmes symptômes et les mêmes erreurs dans le log…

  • J’ai trouvé ça comme configuration j’arrive bien à me connecter avec :
    pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    command: bindreply udpreply
    }

    pass {
    from: ip_serveur/0 to: 0.0.0.0/0
    method: username
    protocol: tcp udp
    }

    J’ai gardé le bloc client pass et rajouté ça après.

  • Toujours la même chose, ca devient désespérant !
    N’est-cil pas possible que cela vienne de la connexion du serveur?

  • Je pense que ça pourrait plutôt venir du client utilisé pour se connecter au serveur.
    Lequel vous utilisez ?

  • Proxycap pour windows.
    Proxifier ne semble pas router l’udp lui…
    Je n’ai aps essayé avec dante-client pour linux, ca peut peut-être valoir le coup !

  • Peut-être bien.
    L’erreur peut aussi venir du Firewall côté client.
    Bon courage et désolé de n’avoir pas pu plus aider 🙂

Laissez un commentaire