2017-08-27 3 views
1

J'essaie de me connecter au port de contrôle (9051) de tor à partir d'une machine distante à l'aide de la bibliothèque de python racine.Comment se connecter au port de contrôle Tor (9051) à partir d'un hôte distant?

dum.py

from stem import Signal 
from stem.control import Controller 


def set_new_ip(): 
    """Change IP using TOR""" 
    with Controller.from_port(address = '10.130.8.169', port=9051) as controller: 
     controller.authenticate(password='password') 
      controller.signal(Signal.NEWNYM) 
set_new_ip() 

J'obtiens l'erreur suivante

Traceback (most recent call last): 
    File "/home/jkl/anaconda3/lib/python3.5/site-packages/stem/socket.py", line 398, in _make_socket 
    control_socket.connect((self._control_addr, self._control_port)) 
ConnectionRefusedError: [Errno 111] Connection refused 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "dum.py", line 28, in <module> 
    set_new_ip(); 
    File "dum.py", line 7, in set_new_ip 
    with Controller.from_port(address = '10.130.4.162', port=9051) as controller: 
    File "/home/jkl/anaconda3/lib/python3.5/site-packages/stem/control.py", line 998, in from_port 
    control_port = stem.socket.ControlPort(address, port) 
    File "/home/jkl/anaconda3/lib/python3.5/site-packages/stem/socket.py", line 372, in __init__ 
    self.connect() 
    File "/home/jkl/anaconda3/lib/python3.5/site-packages/stem/socket.py", line 243, in connect 
    self._socket = self._make_socket() 
    File "/home/jkl/anaconda3/lib/python3.5/site-packages/stem/socket.py", line 401, in _make_socket 
    raise stem.SocketError(exc) 
stem.SocketError: [Errno 111] Connection refused 

Puis je suis allé dans le fichier de configuration/etc/tor/torrc. Il dit

Le port sur lequel Tor écoutera les connexions locales des applications de contrôle de Tor , comme indiqué dans le contrôle-spec.txt.

ControlPort 9051 
    ## If you enable the controlport, be sure to enable one of these 
    ## authentication methods, to prevent attackers from accessing it. 
    HashedControlPassword 16:E5364A963AF943CB607CFDAE3A49767F2F8031328D220CDDD1AE30A471 
    SocksListenAddress 0.0.0.0:9050 
    CookieAuthentication 1 

Ma question est, Comment puis-je connecter pour contrôler le port de Tor à partir d'un hôte distant?
Y a-t-il un travail ou un paramètre de configuration que je dois régler?

un double possible deStem is giving the "Unable to connect to port 9051" error qui n'a pas de réponse

+1

Vous pouvez utiliser un tunnel SSH (voir l'argument '-L' dans' man ssh'). –

Répondre

1

Vous auriez besoin de mettre ControlListenAddress en plus du ControlPort. Vous pouvez définir cela sur 0.0.0.0 (lié à toutes les adresses) ou sur une adresse IP spécifique sur laquelle votre serveur écoute.

Si vous choisissez de le faire, il est fortement conseillé de configurer votre pare-feu pour autoriser uniquement les connexions de contrôle à partir d'adresses IP spécifiques et les bloquer de toutes les autres.

Notez également que le trafic du port de contrôle ne sera pas crypté. Il est donc conseillé d'utiliser l'authentification par cookie afin que votre mot de passe ne soit pas envoyé sur le réseau.

Vous pouvez également exécuter un service caché pour exposer le port de contrôle sur Tor, puis vous connecter au service caché en utilisant Stem et Tor.

Mais la réponse générale est ControlListenAddress doit être défini pour se lier à un IP autre que 127.0.0.1 (localhost).

+0

Merci. C'est exactement ce dont j'avais besoin. Ils (le projet de Tor) devraient probablement mettre ceci dans la page de man ou a commenté le dossier de configuration de torrc. – jaggi

+0

@jaggi Ils ne le mettent pas dans l'exemple de configuration parce que c'est une mauvaise idée, mais j'ai lié à la page man pour cette option, donc c'est publié. Vous pouvez également utiliser la suggestion de Klaus D d'un tunnel SSH, dans ce cas, vous devez spécifier l'adresse IP du serveur et le port du tunnel. Vous devez établir le tunnel à partir de la machine client et avoir un accès SSH, de préférence en utilisant les clés SSH. – drew010

+1

Voici la commande que vous pouvez utiliser pour configurer le tunnel SSH à partir du côté du client de contrôle Tor (si SSH est une option). 'ssh -p 22 [email protected] -L 15090: 127.0.0.1: 9051 -N' Ensuite, demandez à Stem de se connecter à' 127.0.0.1: 15090' pour la connexion de contrôle. Il sera tunnelisé en toute sécurité sur SSH. On dirait que puisque l'adresse IP est 10.0.0.0/8, vous pouvez être sur un réseau privé, donc cela peut ne pas être nécessaire. – drew010