torを使った学び
お久しぶりです。大学時代の同期に敬語が使えたの?と驚かれたSRE部のm-ishizukaです。 今年も早いもので既に12月・・・なんということでしょう。
あらまし。
自宅でtorでsocks proxyを立てている夢をみましたが、複数立てるのが管理上面倒そうでした。 一つにしたら外向きIPがそれぞれ変わるのか?それともtor daemonで一つなのか?を確認してみたかった。
せっかくなので合わせてdockerの勉強教材にもなるかな?と思い綺麗に書いてみました。
注意事項
- 他人への迷惑行為はやめましょう
- torやifconfig.ioに対して過度なリクエストなど
- その他の社会的によくない行為など
- dockerのインストールは自分で頑張りましょう
事前準備
windows / macは茨の道, 頑張ってください
- docker
- docker-compose (3.6以上,最新がおすすめ)
- hadolint
- CLI環境で戦う心構え
部材ダウンロード
作業ディレクトリでダウンロードしてください。
tord contianerビルド
- docker-compose build
ビルド中に中身をみてみよう
~ Dockerfile ~
- hadolint Dockerfile
宗教的な意味で、package pinning だけはしないです。最新版を常に使う方が脆弱性対応的に楽だから・・・という運用目線での対応
worker process
- 趣味の問題でbuildpack-deps:curl
- curlをsocks5h proxyでifconifg.ioにアクセス、完了時刻・tor出口IP・curlの応答までの時間・実施したworkerIDを記録
- 60秒毎に実施
- 本当はtiniとかを噛ませた方が良い
result
- mkdir data
- touch data/ip
- chmod +x entrypoint.sh
- docker-compose up -d tord
- docker-compose up worker0 worker1 worker2
- tail -f data/ip
結果は自身の目でみましょう。(Tor nodeのIPをここに記述したくないので・・・)
ちなみに、私が実施した際は
- worker0 ~ 2でそれぞれ異なるIPを記録
- 一つのworkerに着目した時、数分間は同一IPだが、数分後に異なるIPを記録
- worker数を手動で増やすとそれだけ異なるIPを記録
結論
- 社内勉強の素材的にはいい感じのネタにできた
- dockerで少し遊べるようになる
- ブラックボックス的な調査の結果,torはクライアントのIP毎にトンネルを掘ってくれるっぽい