2013-06-14

Created page with "Category:Internet Applications (日本語) Category:Proxy servers (日本語) es:Tor ru:Tor zh-CN:Tor {{Article summary start|概要}} {{Article summary te..."

New page

[[Category:Internet Applications (日本語)]]

[[Category:Proxy servers (日本語)]]

[[es:Tor]]

[[ru:Tor]]

[[zh-CN:Tor]]

{{Article summary start|概要}}

{{Article summary text|この記事では Tor のインストール・設定方法を説明しています。}}

{{Article summary heading|Required software}}

{{Article summary link|Tor|https://www.torproject.org}}

{{Article summary link|Privoxy|http://privoxy.org/}}

{{Article summary link|Polipo|http://www.pps.jussieu.fr/~jch/software/polipo/}}

{{Article summary heading|関連項目}}

{{Article summary wiki|Gnunet}}

{{Article summary wiki|I2P}}

{{Article summary wiki|Freenet}}

{{Article summary end}}

'''Tor''' は第2世代[[Wikipedia:ja:オニオンルーティング|オニオンルーティング]]のオープンソース実装で、匿名プロクシネットワークへのアクセスを提供します。Tor の目標は[[Wikipedia:Traffic analysis|トラフィック解析]]攻撃を防いで[[Wikipedia:ja:匿名#ネットワークにおける匿名|ネットワークの匿名性]]を守ることです。

== イントロダクション ==

Tor ネットワークのユーザーはマシン上でオニオンプロクシを実行します。このソフトウェアは Tor に接続し、定期的に Tor ネットワークの仮想回線を構築します。Tor は層状の (つまり 'タマネギ' のような) 暗号化をすることで、ルーター間の完全な匿名性を保証しています。同時に、オニオンプロクシソフトウェアにはクライアントのために SOCKS インターフェースがあります。つまり SOCKS を利用できるアプリケーションは Tor に接続可能で、多様な通信が Tor 仮想回線を利用することができます。

{{Warning|Tor by itself is ''not'' all you need to maintain your anonymity. There are several major pitfalls to watch out for (see: [https://www.torproject.org/download/download.html#warning Want Tor to really work?]).}}

Through this process the onion proxy manages networking traffic for end-user anonymity. It keeps a user anonymous by encrypting traffic, sending it through other nodes of the Tor network, and decrypting it at the last node to receive your traffic before forwarding it to the server you specified. One trade off that has to be made for the anonymity Tor provides is that it can be considerably slower than a regular direct connection, due to the large amount of traffic re-routing. Additionally, although Tor provides protection against traffic analysis it cannot prevent traffic confirmation at the boundaries of the Tor network (i.e. the traffic entering and exiting the network).

{{Wikipedia (日本語)|Tor}}

== インストール ==

[[Official Repositories (日本語)|公式リポジトリ]]にある {{Pkg|tor}} を[[pacman (日本語)|インストール]]してください。

さらに、Tor の [[Qt]] フロントエンドである {{Pkg|vidalia}} が利用できます。Tor プロセスの操作に加えて、Vidalia では Tor の状態の回覧・設定、利用帯域の監視、ログメッセージの回覧・フィルター・検索が可能です。

== 設定 ==

Tor をより深く理解するために、設定ファイルの {{ic|/etc/tor/torrc}} をよく見て下さい。設定オプションの説明は {{Ic|man tor}} や [https://torproject.org/docs/tor-manual.html.en Tor website] で見られます。ほとんどの場合はデフォルト設定で問題なく Tor は動作します。

You can set custom [[Wikipedia:File descriptor|file descriptor]] ulimits for Tor in {{ic|/etc/conf.d/tor}} using the {{Ic|TOR_MAX_FD}} variable. This sets a limit on the maximum number of open files.

By default Tor logs to [[Wikipedia:Stdout#Standard output (stdout)|stdout]] with a log-level of "notice". If system logging is enabled in the {{ic|torrc}} configuration file, it will default to {{Ic|/usr/local/var/log/tor/}}.

== Tor を Chroot で実行する ==

For security purposes, it may be desirable to run Tor in a [[chroot]]. The following script will create an appropriate chroot in /opt/torchroot:

{{hc|~/torchroot-setup.sh|2=

#!/bin/bash

export TORCHROOT=/opt/torchroot

mkdir -p $TORCHROOT

mkdir -p $TORCHROOT/etc/tor

mkdir -p $TORCHROOT/dev

mkdir -p $TORCHROOT/usr/bin

mkdir -p $TORCHROOT/usr/lib

mkdir -p $TORCHROOT/var/lib

ln -s /usr/lib $TORCHROOT/lib

cp /etc/hosts $TORCHROOT/etc/

cp /etc/host.conf $TORCHROOT/etc/

cp /etc/localtime $TORCHROOT/etc/

cp /etc/nsswitch.conf $TORCHROOT/etc/

cp /etc/resolv.conf $TORCHROOT/etc/

cp /etc/tor/torrc $TORCHROOT/etc/tor/

cp /usr/bin/tor $TORCHROOT/usr/bin/

cp /lib/libnss* /lib/libnsl* /lib/ld-linux.so* /lib/libresolv* /lib/libgcc_s.so* $TORCHROOT/usr/lib/

cp $(ldd /usr/bin/tor | awk '{print $3}'|grep "^/") $TORCHROOT/usr/lib/

cp -r /var/lib/tor $TORCHROOT/var/lib/

chown -R tor:tor $TORCHROOT/var/lib/tor

sh -c "grep ^tor /etc/passwd > $TORCHROOT/etc/passwd"

sh -c "grep ^tor /etc/group > $TORCHROOT/etc/group"

mknod -m 644 $TORCHROOT/dev/random c 1 8

mknod -m 644 $TORCHROOT/dev/urandom c 1 9

mknod -m 666 $TORCHROOT/dev/null c 1 3

}}

After running the script as root, Tor can be launched in the [[chroot]] with the command: {{ic|# chroot /opt/torchroot /usr/bin/tor}}

== 使用方法 ==

'''tor''' [[Daemons (日本語)|デーモン]]をコマンドラインから起動してください。起動時に Tor を実行したい場合は [[systemd (日本語)|systemd]] サービスを有効にしてください。

もしくは、vidalia インターフェースからも tor を起動出来ます。

プログラムに Tor を通すには、SOCKS5 プロクシーとして 127.0.0.1 か localhost をポート 9050 (tor の標準設定) 又は 9051 ('''vidalia''' の標準設定) で使うようにプログラムを設定してください。

Tor が正しく機能しているか確認するために [https://check.torproject.org/ Tor] , [http://serifos.eecs.harvard.edu/cgi-bin/ipaddr.pl?tor=1 Harvard] , [https://torcheck.xenobite.eu/ Xenobite.eu] などのウェブサイトを開いてみましょう。

== ウェブブラウズ ==

Tor は主として [[Firefox (日本語)]] をサポートしていますが、[[Chromium]] などの他のブラウザでも利用することができます。

=== Firefox ===

''設定 > 詳細 > ネットワークタブ > 接続設定'' から SOCKS の {{ic|localhost}} ポート {{ic|9050}} を使うように手動で Firefox を設定してください。そしてアドレスバーに {{ic|about:config}} と入力してください。{{ic|network.proxy.socks_remote_dns}} を {{ic|true}} に変更してブラウザを再起動してください。これで、全ての DNS リクエストは TOR の socks プロクシを通過するようになります。

もしくは、AUR から Tor Browser Bundle ({{aur|tor-browser-en}}) をインストールしてください。設定の変更をせずに、簡単に Tor と通常の操作を切り替えることができるようになります。

=== Chromium ===

次のコマンドで chromium を起動してください:

$ chromium --proxy-server="socks://localhost:9050"

As for Firefox you can setup a fast switch for example through [https://chrome.google.com/webstore/detail/dpplabbmogkhghncfbfdeeokoefdjegm Proxy SwitchySharp].

Once installed enter in its configuration page. Under the tab ''Proxy Profiles'' add a new profile ''Tor'', if ticked untick the option ''Use the same proxy server for all protocols'', then add ''localhost'' as SOCKS Host, ''9050'' to the respective port and select ''SOCKS v5''.

Optionally you can enable the quick switch under the ''General'' tab to be able to switch beetween normal navigation and Tor network just by left-clicking on the Proxy SwitchySharp's icon.

=== Luakit ===

You can simply run:

$ torify luakit

== HTTP プロクシー ==

Tor can be used with an HTTP proxy like [[Polipo]] or [[Privoxy]], however the Tor dev team recommends using the SOCKS5 library since browsers directly support it.

=== Firefox ===

The [https://addons.mozilla.org/en-us/firefox/addon/foxyproxy-standard/ FoxyProxy] add-on allows you to specify multiple proxies for different URLs or for all your browsing. After restarting Firefox manually set Firefox to port {{ic|8118}} on {{ic|localhost}}, which is where [[Polipo]] or [[Privoxy]] are running. These settings can be access under ''Add > Standard proxy type''. Select a proxy label (e.g Tor) and enter the port and host into the ''HTTP Proxy'' and ''SSL Proxy'' fields. To check if Tor is functioning properly visit the [https://check.torproject.org/ Tor Check] website and toggle Tor.

=== Polipo ===

The Tor Project has created a custom [https://gitweb.torproject.org/torbrowser.git/blob_plain/HEAD:/build-scripts/config/polipo.conf Polipo configuration file] to prevent potential problems with Polipo as well to provide better anonymity.

Keep in mind that Polipo is not required if you can use a SOCKS 5 proxy, which Tor starts automatically on port 9050. If you want to use [[Chromium]] with Tor, you do not need the Polipo package (see: [[#Chromium]]).

=== Privoxy ===

You can also use this setup in other applications like messaging (e.g. Jabber, IRC). Applications that support HTTP proxies you can connect to Privoxy (i.e. {{ic|127.0.0.1:8118}}). To use SOCKS proxy directly, you can point your application at Tor (i.e. {{ic|127.0.0.1:9050}}). A problem with this method though is that applications doing DNS resolves by themselves may leak information. Consider using Socks4A (e.g. with Privoxy) instead.

== インスタントメッセージ ==

In order to use an IM client with tor, we do not need an http proxy like [[polipo]]/[[privoxy]]. We will be using tor's daemon directly which listens to port 9050 by default.

=== Pidgin ===

You can set up Pidgin to use Tor globally, or per account. To use Tor globally, go to Tools -> Preferences -> Proxy. To use Tor for specific accounts, go to ''Accounts > Manage Accounts'', select the desired account, click Modify, then go to the Proxy tab. The proxy settings are as follows:

Proxy type SOCKS5

Host 127.0.0.1

Port 9150

Note that [https://trac.torproject.org/projects/tor/ticket/8135 some time in 2013] the Port has changed from 9050 to 9150 if you use the Tor Browser Bundle. Try the other value if you receive a "Connection refused" message.

== Irssi ==

Freenode does not recommend that you use Privoxy with [[Irssi]]. Instead they recommend using the {{Ic|mapaddress}} approach and running {{Ic|torify irssi}} to start it up. Therefore, add the following to {{ic|/etc/tor/torrc}}:

mapaddress 10.40.40.40 p4fsi4ockecnea7l.onion

Freenode requires charybdis and ircd-seven's SASL mechanism for identifying to nickserv during

connection. Download {{ic|cap_sasl.pl}}, which enables SASL in Irssi, from the Freenode website (i.e. http://www.freenode.net/sasl/cap_sasl.pl) and save it to {{Ic|~/.irssi/scripts/cap_sasl.pl}}

Then install {{Pkg|perl-crypt-openssl-bignum}}, {{Pkg|perl-crypt-blowfish}} and then {{AUR|perl-crypt-dh}} from the [[AUR]].

Alternatively, you can install the modules using perl:

$ perl -MCPAN -e 'install Crypt::OpenSSL::Bignum Crypt::DH Crypt::Blowfish'

Start irssi

$ torify irssi

Load the script that will employ the SASL mechanism.

/script load cap_sasl.pl

Set your identification to nickserv, which will be read when connecting. Supported mechanisms are PLAIN and DH-BLOWFISH.

/sasl set ''network'' ''username'' ''password'' ''mechanism''

Connect to Freenode:

/connect -network ''network'' 10.40.40.40

For more information check [http://freenode.net/irc_servers.shtml#tor Accessing freenode Via Tor] and the [http://freenode.net/sasl/README.txt SASL README] at freenode.net or the [https://trac.torproject.org/projects/tor/wiki/doc/TorifyHOWTO/IrcSilc IRC/SILC Wiki article] at torproject.org.

If you are receiving errors check the ''[https://bbs.archlinux.org/viewtopic.php?pid=956467 Cannot Connect to Freenode IRC using Irssi & Tor]'' thread on the Arch Linux forums.

== Pacman ==

Pacman download operations (repository DBs, packages, and public keys) can be done using the Tor network. Though relatively extreme, this measure is useful to prevent an adversary (most likely at one's LAN or the mirror) from knowing a subset of the packages you have installed, at the cost of longer latency, lower throughput, possible suspicion, and possible failure (if Tor is being filtered via the current connection).

{{Warning|It would be arguably simpler for an adversary, specifically one who desires to indiscriminately disseminate malware, to perform his/her activity by deploying malicious Tor exit node(s). Always use signed packages and verify new public keys by out-of-band means.}}

{{hc|/etc/pacman.conf|

...

XferCommand = /usr/bin/curl --socks5-hostname localhost:9050 -C - -f %u > %o

...}}

== Running a Tor server ==

The Tor network is reliant on people contributing bandwidth. There are several ways to contribute to the network.

=== Running a Tor bridge ===

This involves making your machine an 'entry node' for people who are having trouble connecting to Tor through traditional methods.

==== 設定 ====

According to https://www.torproject.org/docs/bridges , make your torrc be just these four lines:

SocksPort 0

ORPort 443

BridgeRelay 1

Exitpolicy reject *:*

==== トラブルシューティング ====

If you get "Could not bind to 0.0.0.0:443: Permission denied" errors on startup, you'll need to pick a higher ORPort (e.g. 8080), or perhaps [http://www.portforward.com/ forward the port] in your router.

=== Running a "Middleman" relay ===

This means that your machine will contribute bandwidth to the 'internal' part of the network, acting as neither an entry nor exit point, merely forwarding bits to and from other Tor nodes/relays.

==== 設定 ====

You should at least share 20KiB/s:

Nickname ''tornickname''

ORPort 9001

BandwidthRate 20 KB # Throttle traffic to 20KB/s

BandwidthBurst 50 KB # But allow bursts up to 50KB/s

Run Tor as middleman ( a relay):

ExitPolicy reject *:*

=== Running a Tor exit node ===

Any requests from a Tor user to the regular internet obviously need to exit the network somewhere, and exit nodes provide this vital service. To the accessed host, the request will appear as having originated from your machine. This means that running an exit node is generally considered more legally onerous than running other forms of Tor relays. Before becoming an exit relay, you may want to read [https://blog.torproject.org/running-exit-node Tips for Running an Exit Node With Minimal Harrasment].

==== Configuration ====

Using the torrc, you can configure which services you wish to allow through your exit node.

Allow all traffic:

ExitPolicy accept *:*

Allow only irc ports 6660-6667 to exit from node:

ExitPolicy accept *:6660-6667,reject *:* # Allow irc ports but no more

By default, Tor will block certain ports. You can use the torrc to overide this.

ExitPolicy accept *:119 # Accept nntp as well as default exit policy

== TorDNS ==

The Tor 0.2.x series provides a built-in DNS forwarder. To enable it add the following lines to the Tor configuration file and restart the daemon:

{{hc|/etc/tor/torrc|

DNSPort 9053

AutomapHostsOnResolve 1

AutomapHostsSuffixes .exit,.onion

}}

This will allow Tor to accept DNS requests (listening on port 9053 in this example) like a regular DNS server, and resolve the domain via the Tor network. A downside is that it's only able to resolve DNS queries for A-records; MX and NS queries are never answered. For more information see this [https://techstdout.boum.org/TorDns/ Debian-based introduction].

DNS queries can also be performed through a command line interface by using {{Ic|
tor-resolve
}}. For example:

{{bc|

$ tor-resolve archlinux.org

66.211.214.131

}}

=== Using TorDNS for all DNS queries ===

It is possible to configure your system, if so desired, to use TorDNS for ''all'' queries your system makes, regardless of whether or not you eventually use Tor to connect to your final destination. To do this, configure your system to use 127.0.0.1 as its DNS server and edit the 'DNSPort' line in {{ic|/etc/tor/torrc}} to show:

DNSPort 53

Alternatively, you can use a local caching DNS server, such as [[dnsmasq]] or [[pdnsd]], which will also compensate for TorDNS being a little slower than traditional DNS servers. The following instructions will show how to set up ''dnsmasq'' for this purpose.

Change the tor setting to listen for the DNS request in port 9053 and install {{Pkg|dnsmasq}}.

Modify its configuration file so that it contains:

{{hc|/etc/dnsmasq.conf|

no-resolv

server=127.0.0.1#9053

listen-address=127.0.0.1

}}

These configurations set dnsmasq to listen only for requests from the local computer, and to use TorDNS at its sole upstream provider. It is now neccessary to edit {{ic|/etc/resolv.conf}} so that your system will query only the dnsmasq server.

{{hc|/etc/resolv.conf|

nameserver 127.0.0.1

}}

Start the '''dnsmasq''' daemon.

Finally if you use ''dhcpd'' you would need to change its settings to that it does not alter the resolv configuration file. Just add this line in the configuration file:

{{hc|/etc/dhcpcd.conf|

nohook resolv.conf

}}

If you already have an ''nohook'' line, just add '''resolv.conf''' separated with a comma.

== Torify ==

'''torify''' will allow you use an application via the Tor network without the need to make configuration changes to the application involved. From the man page:

''torify is a simple wrapper that calls tsocks with a tor specific configuration file. tsocks itself is a wrapper between the tsocks library and the application that you would like to run socksified''

Usage example:

$ torify elinks checkip.dyndns.org

$ torify wget -qO- https://check.torproject.org/ | grep -i congratulations

Torify ''will not'', however, perform DNS lookups through the Tor network. A workaround is to use it in conjunction with {{ic|
tor-resolve
}} (described above). In this case, the procedure for the first of the above examples would look like this:

{{hc|$ tor-resolve checkip.dyndns.org|

208.78.69.70

}}

$ torify elinks 208.78.69.70

== トラブルシューティング ==

=== Problem with user value ===

If the '''tor''' daemon failed to start, then run the following command as root (or use sudo)

# tor

If you get the following error

May 23 00:27:24.624 [warn] Error setting groups to gid 43: "Operation not permitted".

May 23 00:27:24.624 [warn] If you set the "User" option, you must start Tor as root.

May 23 00:27:24.624 [warn] Failed to parse/validate config: Problem with User value. See logs for details.

May 23 00:27:24.624 [err] Reading config failed--see warnings above.

Then it means that the problem is with the User value, which likely means that one or more files or directories in your {{ic|/var/lib/tor}} directory is not owned by tor. This can be determined by using the following find command:

find /var/lib/tor/ ! -user tor

Any files or directories listed in the output from this command needs to have its ownership changed. This can be done individually for each file like so:

chown tor:tor /var/lib/tor/filename

Or to change everything listed by the above find example, modify the command to this:

find /var/lib/tor/ ! -user tor -exec chown tor:tor {} \;

Tor should now start up correctly.

Still if you cannot start the tor service, run the service using root (this will switch back to the tor user). To do this, change the user name in the {{ic|/etc/tor/torrc}} file:

User tor

Now modify the systemd's tor service file {{ic|/usr/lib/systemd/system/tor.service}} as follows

[Service]

User=root

Group=root

Type=simple

The process will be run as tor user. For this purpose change user and group ID to tor and also make it writable:

# chown -R tor:tor /var/lib/tor/

# chmod -R 755 /var/lib/tor

Now save changes and run the daemon:

# systemctl --system daemon-reload

# systemctl start tor.service

=== Daemon fails on restart ===

{{Out of date|rc.d?}}

If after issuing a daemon restart you have log entries similar to

Interrupt: we have stopped accepting new connections, and will shut down in 30 seconds. Interrupt again to exit now

and the daemon fails to start back up, a simple workaround is to open {{Ic|/etc/rc.d/tor}} in your favourite editor and increase the time waited between the shutting down and starting up again of the daemon. For example:

{{hc|/etc/rc.d/tor| ;;

restart)

$0 stop

sleep 35

$0 start

;;}}

This will allow Tor to shutdown cleanly, and restart after a safe period of time. Remember that this file may be overwritten by upgrades.

== 参照 ==

* [https://www.torproject.org/docs/tor-doc-unix.html.en Running the Tor client on Linux/BSD/Unix]

* [https://trac.torproject.org/projects/tor/wiki#Unixish Unix-based Tor Articles]

* [https://trac.torproject.org/projects/tor/wiki/doc/SupportPrograms Software commonly integrated with Tor]

* [https://www.torproject.org/docs/tor-hidden-service.html.en How to set up a Tor ''Hidden Service'']

Show more