WSL2に匿名化Kubuntuを入れる

KDE(Ubuntu10.04)にTorを入れて遊ぼう


正式にWSL2が来たので試してみた。既にWSLが問題なく動いている事が前提です。

始めに
WSL/WSL2を利用するにあたりホストのIPを固定しておく事を強くお勧めします。
このドキュメントではX転送と音の転送を行うので毎度IPが変わると面倒です。
またあくまで仮想環境ですので画面描画については期待しないで下さい。

WSL2の有効化
このあたりを参考に。
https://forest.watch.impress.co.jp/docs/news/1272017.html

UbuntuとX Serverをインストール
UbuntuをMSストアから入手するだけです。
X Serverは同じくストアからX410(有料)を入手するか、VcXsrvをインストールします。
https://sourceforge.net/projects/vcxsrv/

Ubuntuの初期設定
ストアからインストールしたUbuntuを起動して指示に従ってユーザー名とパスワードを設定する。

KDEとTorBrowserと日本語環境のインストール。

sudo apt install kubuntu-desktop torbrowser-launcher mozc


デスクトップ環境の起動
X ServerのIPアドレスを設定する。(IPは自分の環境に合わせて変更してね)

export DISPLAY=192.168.111.111:0.0


Windows側でX Serverを最大画面で起動する。

Linuxのデスクトップ環境を起動する。

startplasma-x11

※rootで起動してはダメ!

TorBrowserの起動
デスクトップが起動したらスタートメニューの「Internet」の中にお目当てがいます。


Kubuntuで日本語入力の設定
環境によって異なる場合がありますが、
Kubuntuにはデフォルトでibusが入っている。

環境変数の追加
.bashrcあたりに追加

export XMODIFIERS=@im=ibus
export GTK_IM_MODULE=ibus
export QT_IM_MODULE=ibus
export NO_AT_BRIDGE=1
ibus-daemon -d -x
None

ibusの設定
ログイン後にibus-setupを実行してmozcを追加する。
その後はお好みに合わせて設定を。
※設定が反映されない場合はログアウトだけではなくUbuntuのウィンドウを閉じて再起動してみる。


WSLで音を出す
PulseAudioのサーバーをWindowsで実行し、Linuxからサウンドを転送して音を出す。

PulseAudioをDL
Windows用をDL
https://www.freedesktop.org/wiki/Software/PulseAudio/Ports/Windows/Support/

設定ファイルの編集
etc/pulse/default.pa
42行目…

load-module module-waveout sink_name=output source_name=input

load-module module-waveout sink_name=output source_name=input record=0


61行目…

#load -module module-native-protocol-tcp

load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;10.0.0.0/8;172.16.0.0/12;192.168.0.0/16


etc/pulse/daemon.conf
39行目…

; exit-idle-time = 20

exit-idle-time = -1


実行スクリプト作成
以下のようなvbsで実行するとコマンドプロンプトの画面が表示されない。
スタートアップなりタスクスケジューラなり。

Option Explicit
Dim objWShell
Set objWShell = CreateObject("WScript.Shell")
objWShell.Run "C:\pulseaudio\bin\pulseaudio.exe", 0, False
Set objWShell = Nothing
None

Linux側の環境変数
WindowsのIPを指定(IPは自分の環境に合わせて変更してね)

export PULSE_SERVER=192.168.111.111


実行
Windowsのサーバーを起動してからLinuxを起動。
サーバー側でよく分からないエラーが出るけど気にしなくてOK。


Tor透過プロキシ(強力)とdns2tcpdnsの強制
全ての通信をTor経由にして.onionを含む全ての名前解決をTCP経由にしてファイアウォールでガチガチにします。
ローカルエリア以外からの通信を全て遮断するので、ファイル共有ソフトなどが動作しなくなる可能性があります。

必要なプログラムのインストール
sudo apt install tor php-cli


torの設定
/etc/tor/torrcに以下を追加。(もしくは修正)

VirtualAddrNetworkIPv4 10.192.0.0/10
AutomapHostsOnResolve 1
TransPort 127.0.0.1:9040 IsolateClientAddr IsolateClientProtocol IsolateDestAddr IsolateDestPort
DNSPort 127.0.0.1:5353
None

IPTablesの設定
以下の内容のスクリプトを作成します。

#!/bin/sh

_tor_uid=`id -u debian-tor`
_trans_port="9040"
_dns_port="10053"
_virt_addr="10.192.0.0/10"
_out_if="eth0"
_non_tor="127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16"
_resv_iana="0.0.0.0/8 100.64.0.0/10 169.254.0.0/16 192.0.0.0/24 192.0.2.0/24 192.88.99.0/24 198.18.0.0/15 198.51.100.0/24 203.0.113.0/24 224.0.0.0/4 240.0.0.0/4 255.255.255.255/32"

iptables -F
iptables -t nat -F

iptables -t nat -A OUTPUT -d $_virt_addr -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports $_trans_port
iptables -t nat -A OUTPUT -p udp -m udp --dport 53 -j DNAT --to-destination 127.0.0.1:$_dns_port
iptables -t nat -A OUTPUT -m owner --uid-owner $_tor_uid -j RETURN
iptables -t nat -A OUTPUT -o lo -j RETURN

for _lan in $_non_tor; do
iptables -A INPUT -d $_lan -j ACCEPT
iptables -A OUTPUT -d $_lan -j ACCEPT
iptables -t nat -A OUTPUT -d $_lan -j RETURN
done

for _iana in $_resv_iana; do
iptables -t nat -A OUTPUT -d $_iana -j RETURN
done

iptables -t nat -A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports $_trans_port
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -j DROP
iptables -A FORWARD -j DROP
iptables -A OUTPUT -m state --state INVALID -j DROP
iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o $_out_if -m owner --uid-owner $_tor_uid -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j ACCEPT
iptables -A OUTPUT -d 127.0.0.1/32 -o lo -j ACCEPT
iptables -A OUTPUT -d 127.0.0.1/32 -p tcp -m tcp --dport $_trans_port --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
iptables -A OUTPUT -j DROP

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

ip6tables -P INPUT DROP
ip6tables -P FORWARD DROP
ip6tables -P OUTPUT DROP
None

dns2tcpdnsの設定
以下からダウンロードを行います。
http://secysonfrxo2qmpzz7zox65gp65zyiys327mrdst4jdtfqo3a4lm3vqd.onion/?tcpdns

ファイルを開いて設定を変更します。

define('TOR_DNS_PORT', 9053);

define('TOR_DNS_PORT', 5353);


define('MY_LOCAL_PORT', 53);

define('MY_LOCAL_PORT', 10053);


実行
torと上記2つのスクリプトを起動時に実行して下さい。
TorBrowser以外のブラウザからでも.onionドメインのサイトが参照できれば成功です。
※Firefoxの場合はabout:configから

network.dns.blockDotOnion

false
にして下さい。

完成
これで高セキュリティで実用性のあるKubuntuが完成しました。

いいなと思ったら応援しよう!