CentOS8にTorをインストールする

CentOS8にTorをインストールし、WindowsのブラウザにproxyとしてTorを指定してみます。

Torのサポートページを確認すると、TorはCentOS、RHEL、Fedora用の独自のRPMパッケージリポジトリを維持メンテしていると記載されています。
※ほかにもDebian系のリポジトリもあるようです。


Torインストール

主にサポートページに記載があるとおりにインストールを実行します。

epel-releaseリポジトリを追加

# dnf install -y epel-release

メタデータの期限切れの最終確認: 0:03:29 時間前の 2020年11月01日 20時21分49秒 に実施しました。
依存関係が解決しました。
=======================================================================================================================================================================================================================
 パッケージ                                              アーキテクチャー                                  バージョン                                          リポジトリー                                      サイズ
=======================================================================================================================================================================================================================
インストール中:
 epel-release                                            noarch                                            8-8.el8                                             extras                                             23 k

トランザクションの概要
=======================================================================================================================================================================================================================
インストール  1 パッケージ

ダウンロードサイズの合計: 23 k
インストール済みのサイズ: 32 k
パッケージのダウンロード:
epel-release-8-8.el8.noarch.rpm                                                                                                                                                         43 kB/s |  23 kB     00:00    
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
合計                                                                                                                                                                                    18 kB/s |  23 kB     00:01     
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備              :                                                                                                                                                                                              1/1 
  インストール中    : epel-release-8-8.el8.noarch                                                                                                                                                                  1/1 
  scriptlet の実行中: epel-release-8-8.el8.noarch                                                                                                                                                                  1/1 
  検証              : epel-release-8-8.el8.noarch                                                                                                                                                                  1/1 

インストール済み:
  epel-release-8-8.el8.noarch                                                                                                                                                                                          

完了しました!

Tor リポジトリを/etc/yum.repos.d/tor.repo に設定

# vi /etc/yum.repos.d/tor.repo
[tor]
name=Tor for Enterprise Linux $releasever - $basearch
baseurl=https://rpm.torproject.org/centos/$releasever/$basearch
enabled=1
gpgcheck=1
gpgkey=https://rpm.torproject.org/centos/public_gpg.key
cost=100

Torパッケージをインストールします

# dnf install -y tor

Torの設定

/etc/tor/torrcを編集していきます。

デフォルトでは、最低限の設定しかされていません。
/etc/tor/torrcを覗いてみると、以下が有効になっています。

ControlSocket /run/tor/control
ControlSocketsGroupWritable 1
CookieAuthentication 1
CookieAuthFile /run/tor/control.authcookie
CookieAuthFileGroupReadable 1

追加で以下の設定を行います。
以下がコメントアウトされていますので、コメントインもしくは末尾に追記してください。

SOCKSPort 9050 # Default: Bind to localhost:9050 for local connections.
SOCKSPort サーバーのIPアドレス:9100 # Bind to this address:port too.
※サーバーのIPアドレス部分は、proxyサーバーとして使いたくなければ設定しなくて良いです。

SOCKSPolicy accept 127.0.0.1 # localhostのアクセスを許可する
SOCKSPolicy accept 192.168.0.0/24 # ローカルネットワークのアクセスを許可する
SOCKSPolicy reject * # その他アクセスはすべて拒否

Log notice file /var/log/tor/notices.log # ログをファイル出力する

%include /etc/torrc.d/ # このあと追加設定を行うため有効化

firewallを設定し、proxyサーバーとして外から通信を受け付ける。
ローカルネットワーク(192.168.0.0/24)からの9100ポートアクセスを許可する

# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.0/24" port protocol="tcp" port="9100" accept"
sucess
# firewall-cmd --reload
# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens192
  sources: 
  services: cockpit dhcpv6-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
        rule family="ipv4" source address="192.168.0.0/24" port port="9100" protocol="tcp" accept

torを起動します。

# systemctl start tor
# systemctl enable tor

ここまでで、Socks5 プロキシサーバーの構築は出来ていますので、FirefoxなどのSocksホストにこのサーバーを指定してあげることで疎通確認ができると思います。

確認するには、以下のサイトにアクセスすることで確認可能です。
https://check.torproject.org/

Torの追加設定

基本的な設定だけであれば、Torの設定部分だけ行えば使い始めることができますが、Torを使う上で信頼できない国やIPなどをノードとして使わないように設定することができます。

この設定を行うか行わないかでセキュリティ的には大分変ってくるかと思います。
もし、不安に感じる場合は、追加で設定を行いましょう。
以下はあくまで設定の一部で、ご自身のセキュリティ観点で増減させてください。

# mkdir /etc/torrc.d/
# vi /etc/torrc.d/custom.conf
ExcludeNodes {jp},{us},{gb},{ca},{au},{nz},{dk},{fr},{nl},{no},{de},{be},{it},{es},{il},{sg},{kr},{se},127.0.0.1,192.168.0.31,SlowServer # どこの国にノードを通さないかを設定できます
ExcludeExitNodes {jp},{us},{gb},{ca},{au},{nz},{dk},{fr},{nl},{no},{de},{be},{it},{es},{il},{sg},{kr},{se},{bg},{cz},{fi},{hu},{ie},{lv},{lt},{lu},{ro},{se},{ch},{ru},{hk},127.0.0.1 # 一番重要!どこの国を出口にしないかを決められます
StrictNodes 1 # 1の場合は、上記の設定に従い絶対に接続しない 0の場合は接続する場合がある。

NumEntryGuards 10 # 中継数の設定。通常はEntry->Relay->Exitの3回路で接続する。多すぎてもあまり意味はないと思う

使えるオプションは、以下に乗っていますので、必要に応じて設定してください。

https://2019.www.torproject.org/docs/tor-manual.html.en