LinodeでKali Linuxを動かしてセキュリティを学習する環境を構築する

リーズナブルに使えるIaaSサービスのLinodeでセキュリティを学習するための環境を構築してみました。

https://qiita.com/isss802/items/5313c7a6da1d9ed50a38

具体的にはLinodeにKali Linuxマシンを用意し、セキュリティ学習サービスで提供している脆弱なサーバーへVPN接続するまでを説明します。
Kali Linuxはペネトレーションテスト、セキュリティ脆弱性診断、セキュリティの学習などのために利用されているDebian系列のOSです。数百のペネトレーションテスト用のツールが用意されており、誰でも無料で利用することができます。
ターゲットマシンとして今回は[TryHackMe](https://tryhackme.com/signup)というサービスを利用します。Kali LinuxからTryHackMeに対してVPN接続をすることで、TryHackMeで用意されているターゲットマシンへのアクセスができるようになります。


# 用意するもの
・[Linode](https://login.linode.com/)アカウント
・Kali Linux (LinodeのMarketplaceから選択)
・[TryHackMe](https://tryhackme.com/signup)アカウント

# LinodeのMarketplaceからKali Linuxをインストール
標準ディストリビューションからもKali Linuxを選択できますが、Marketplaceからのインストールではユーザーインターフェースとツール一式が含まれているので本記事ではMarketplaceからインストールしていきます。

LinodeにログインしたらCreate -> Marketplaceを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2949494/33a3cdbf-acb2-c7b0-27ba-f4dfa4fd5624.png)

Marketplaceの中にあるKali Linuxを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2949494/75542405-da0e-604b-0c44-c2bbbb4e5149.png)

Setupに必要な情報を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2949494/7927dbdd-7095-a6f3-6d94-5545351dddfa.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2949494/0dc9cd28-50d4-4f4a-544b-072baf5278e3.png)

:::note info
Kali Linuxは4GBのDedicated CPUまたはShared Compute Instanceが推奨されています
https://www.linode.com/ja/marketplace/apps/kali-linux/kali-linux/
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2949494/e05f7dbd-f7a0-5b2e-1670-21a8fc22c3f5.png)

:::note info
Linodeのプロビジョニングが終了してから、ソフトウェアのインストールに45~60分かかります
:::

ソフトウェアのインストールが完了したら、RootユーザーでのパスワードによるSSH接続を無効化するなどの最低限のセキュリティの設定は実施しておきましょう。

https://qiita.com/tarooishi/items/5f8ec51323eeed919818

上記のSetupで作成したVNCユーザーを使い、Kali LinuxへVNC接続をするためのSSHのトンネルを張ります。(やっていることはSSHのポートフォワーディングです)
```
$ ssh -L 61000:localhost:5901 -N -l [username] [ip]
```
もしくはTeratermで実施する場合には、Kali LinuxマシンへSSH接続を確立した後、SSHポート転送の設定で実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2949494/50bc8fd8-d045-3a66-9c04-9dcbf900dc38.png)


VNCクライアントからKali Linuxへ接続します。
Mac OSでは標準でVNCクライアントが利用可能ですが、windows端末ではRealVNCなどのVNCクライアントをインストールしてください。
```
vnc://localhost:61000
```
Setup時に指定したVNCユーザーのパスワードを入力すれば、Kali Linuxに接続できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2949494/a2b83c57-d0a9-af23-e8c5-15b4a588bfc0.png)

# TryHackMeの脆弱なサーバへVPN接続をする
本記事では例として[TryHackMe](https://tryhackme.com/)で提供されている脆弱なサーバーへのVPN接続を説明します。
[TryHackMe](https://tryhackme.com/)へログインしたら、以下のURLからOpen VPNの設定ファイルをダウンロードします。
https://tryhackme.com/access
VPN設定のファイルは[ユーザー名].ovpnという名前でダウンロードされます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2949494/43bde94f-4cc0-5483-b7c7-3e5816fcd5df.png)

:::note info
日本のVPNサーバーは用意されていませんが、"US-West-Regular-1"を指定して問題なく利用できています
:::

ダウンロードしたVPN設定ファイルをわかりやすいところに移動しておきます。
```
$ mkdir tryhackme
$ mv ~/Downloads/<username>.ovpn tryhackme/
```

Kali LinuxにOpenVPNをインストールします。
```
$ sudo apt install openvpn 
```

OpenVPNコマンドを実行してVPN接続をします。
```
sudo openvpn tryhackme/<username>.ovpn 
```

接続のステータスを確認し、Connectedにチェックが入っていればVPN接続ができていることを意味します。
これでTryHackMe内で提供されている脆弱なサーバーへアクセスができるようになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2949494/d4fcfc90-bf8c-46c1-6678-0bab773571f3.png)

# まとめ
今回はLinodeにKali Linuxを容易にインストールできること、そしてTryHackMeへのVPN接続をする方法までを紹介しました。この環境が整えば、今回の例で使用したTryHackMeやその他のサービス([HackTheBox](https://www.hackthebox.com/) など)で学習をするための自分のマシンを持つことができます。


# 関連記事
アカマイ・テクノロジーズ合同会社のQiitaではLinode関連など開発者向けの記事を記載しております。

https://qiita.com/organizations/Akamai