Kali LinuxでVPN over Tor接続する際にKILLスイッチを使う方法

本記事はプロモーションを含みます

AirVPNでVPN over Torを使う際に注意しないといけないのは、NetworkLockを使うとVPN over Torが失敗することです。

AirVPNではNetworkLockという名称でKILLスイッチ機能を提供しています。KILLスイッチとは、VPNが切断された状態でインターネットに接続してしまい本当のIPアドレスが漏洩することを防ぐ機能です。

ではなぜNetworkLockを有効化した状態でVPN over Tor接続が失敗するのかというと、それはVPN over Tor接続に必要なTor接続がNetworkLockにより遮断されてしまうためです。

そのためAirVPNでVPN over Torで接続するためにはNetworkLockを無効化しなくてはいけません。

しかしNetworkLockを無効化するというのは危険を伴うためおすすめできません。そこで、NetworkLockを無効化した状態でも安全な状態を保つ方法を紹介します。

今回はKali Linuxを対象としていますが、Debian LinuxやUbuntu Linuxでも同様の方法で対処できます。

FW(ファイアウォール)をインストールする

システムが最新の状態に保たれていることを前提にしています。

$ sudo apt update
$ sudo apt upgrade -y
$ sudo apt autoremove -y
$ sudo apt autoclean

ファイアウォールとして ufw をインストールします。

$ sudo apt install ufw

いったん設定をリセットしておきます。

$ sudo ufw reset

インストール直後の状態であれば ufw は inactive のはずです。

┌──(kali㉿kali)-[~]
└─$ sudo ufw status
Status: inactive
                                                                             
┌──(kali㉿kali)-[~]
└─$ 

追加するルール

次のルールを追加します。

項番インタフェース送信元IP送信元ポート送信先IP送信先ポート
1eth0anyanyany9001/tcp
2loanyanyany9150/tcp
3loanyanyany9151/tcp
4tun0anyanyanyany
FWルール

項番1はTor接続するためのルールです。インタフェースは”eth0″としていますが、環境によってethではなくensになっているかも知れません。自分の環境のインタフェースが分からない場合は ifconfig コマンドでインタフェース名を確認してください。
ifconfigコマンドがシステムにない場合はip aコマンドを実行してください。

┌──(kali㉿kali)-[~]
└─$ ifconfig
eth0: flags=4163  mtu 1500
        inet 192.168.37.132  netmask 255.255.255.0  broadcast 192.168.37.255
        inet6 fe80::20c:29ff:fea0:4a9e  prefixlen 64  scopeid 0x20
        ether 00:0c:29:a0:4a:9e  txqueuelen 1000  (Ethernet)
        RX packets 642236  bytes 964082513 (919.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 65065  bytes 4053924 (3.8 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

項番2はTorのデータ通信です。インタフェースはlo(ループバックインタフェース)です。通常は「lo」ですが、念のため ifconfig コマンドで確認してみてください。

項番3はTorのコントロール通信です。

最後の項番4はVPN接続後のトンネル通信です。トンネルを通る通信はすべて許可しておく必要があります。インタフェース名はOpenVPNで使う仮想インタフェースである「tun0」としています。通常は「tun0」で問題ありませんが、複数の仮想インタフェースを作成している場合は「tun1」や「tun2」が存在している可能性があるので注意してください。

トンネルインタフェース(tun0)はAirVPNで接続しないと ifconfig コマンドで表示されませんから注意してください。

ここまで確認できましたら、以下の4つのコマンドを実行してルールを追加してください。

FWルール追加設定コマンド

sudo ufw allow out on eth0 from any to any port 9001 proto tcp
sudo ufw allow out on lo from any to any port 9150 proto tcp
sudo ufw allow out on lo from any to any port 9151 proto tcp
sudo ufw allow out on tun0 from any to any

デフォルト設定を変える

FWルールを追加したらufwを起動します。

$ sudo ufw enable

エラーなく起動したらステータスを確認します。

$ sudo ufw status verbose

コマンドを実行すると以下のように表示されるはずです。

┌──(kali㉿kali)-[~]
└─$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
9001/tcp                   ALLOW OUT   Anywhere on eth0          
9150/tcp                   ALLOW OUT   Anywhere on lo            
9151/tcp                   ALLOW OUT   Anywhere on lo            
Anywhere                   ALLOW OUT   Anywhere on tun0          
9001/tcp (v6)              ALLOW OUT   Anywhere (v6) on eth0     
9150/tcp (v6)              ALLOW OUT   Anywhere (v6) on lo       
9151/tcp (v6)              ALLOW OUT   Anywhere (v6) on lo       
Anywhere (v6)              ALLOW OUT   Anywhere (v6) on tun0     

                                                                             
┌──(kali㉿kali)-[~]
└─$ 

ここで注意が必要です。

Default: deny (incoming), allow (outgoing), disabled (routed)

上記のように表示されている場合(おそらく皆さん該当するはず)、デフォルト設定を変えなければいけません。というのも「allow (outgoing)」は外向けの通信がデフォルトですべて許可されるためです。

試しにgoogle.comにPingを実行すると成功するはずです。

┌──(kali㉿kali)-[~]
└─$ ping google.com -c3
PING google.com (172.217.161.46) 56(84) bytes of data.
64 bytes from nrt12s23-in-f14.1e100.net (172.217.161.46): icmp_seq=1 ttl=128 time=15.6 ms
64 bytes from nrt12s23-in-f14.1e100.net (172.217.161.46): icmp_seq=2 ttl=128 time=13.6 ms
64 bytes from nrt12s23-in-f14.1e100.net (172.217.161.46): icmp_seq=3 ttl=128 time=13.1 ms

--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2016ms
rtt min/avg/max/mdev = 13.067/14.094/15.610/1.093 ms
                                                                             
┌──(kali㉿kali)-[~]
└─$ 

デフォルト設定を変えるには次のコマンドを実行します。

$ sudo ufw default deny outgoing

実行すると次のように表示されます。

┌──(kali㉿kali)-[~]
└─$ sudo ufw default deny outgoing
Default outgoing policy changed to 'deny'
(be sure to update your rules accordingly)

では改めてステータスを表示します。

┌──(kali㉿kali)-[~]
└─$ sudo ufw status verbose       
Status: active
Logging: on (low)
Default: deny (incoming), deny (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
9001/tcp                   ALLOW OUT   Anywhere on eth0          
9150/tcp                   ALLOW OUT   Anywhere on lo            
9151/tcp                   ALLOW OUT   Anywhere on lo            
Anywhere                   ALLOW OUT   Anywhere on tun0          
9001/tcp (v6)              ALLOW OUT   Anywhere (v6) on eth0     
9150/tcp (v6)              ALLOW OUT   Anywhere (v6) on lo       
9151/tcp (v6)              ALLOW OUT   Anywhere (v6) on lo       
Anywhere (v6)              ALLOW OUT   Anywhere (v6) on tun0     

                                                                             
┌──(kali㉿kali)-[~]
└─$ 

こんどはoutgoingもdenyになっていますね。

Default: deny (incoming), deny (outgoing), disabled (routed)

google.comへPingするとDNS通信が遮断されているため名前解決に失敗します。

┌──(kali㉿kali)-[~]
└─$ ping google.com -c3
ping: google.com: Temporary failure in name resolution

次にIPアドレスを指定してPingを実行しても通信が遮断されて応答がないことを確認します。この状態であればFWで通信が遮断されています。

┌──(kali㉿kali)-[~]
└─$ ping 1.1.1.1 -c3   
PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.

--- 1.1.1.1 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2032ms

FWの起動と停止、状態確認をおこなうコマンド

ufwを起動して通信を遮断する場合は sudo ufw enable を実行します。

ufwを停止してすべての通信を許可する場合は sudo ufw disable を実行します。

現在のufwステータスを確認する場合は sudo ufw status verbose を実行します。

VPN over Torで接続できることを確認する

あとは通常のVPN over Tor接続をおこなうだけです。詳細はVPN over Tor接続の解説記事でご紹介しているので参考にしてみてください。

2 COMMENTS

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。
また、スパム対策のため投稿して頂いたコメントが表示されるまで時間がかかる場合がありますが、ご了承ください。