6

ステム python ライブラリを使用して、リモート マシンから tor の制御ポート (9051) に接続しようとしています。

ダム.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()

次のエラーが表示されます

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

次に、/etc/tor/torrc 構成ファイルを調べました。それは言う

control-spec.txt に記載されているように、Tor が Tor コントローラ アプリケーションからのローカル接続をリッスンするポート。

   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

私の質問は、リモート ホストから Tor の制御ポートに接続するにはどうすればよいですか?
設定する必要がある回避策または構成パラメーターはありますか?

Stemの重複の可能性 があり、「ポート 9051 に接続できません」というエラーが表示されますが、これには回答がありません

4

2 に答える 2

5

ControlPortに加えてControlListenAddressを設定する必要があります。これを0.0.0.0(すべてのアドレスにバインド) またはサーバーがリッスンする特定の IP に設定できます。

これを行う場合は、特定の IP からの制御接続のみを許可し、他のすべての接続をブロックするようにファイアウォールを構成することを強くお勧めします。

また、制御ポートのトラフィックは暗号化されないことに注意してください。パスワードがネット経由で送信されないように、Cookie 認証を使用することもお勧めします。

隠しサービスを実行して Tor 経由で制御ポートを公開し、Stem と Tor を使用して隠しサービスに接続することもできます。

しかし、一般的な答えは、127.0.0.1 (localhost) 以外の IP にバインドするように ControlListenAddress を設定する必要があるというものです。

于 2017-08-27T05:53:50.497 に答える