Kali Linux2022.1 でハッキングラボをつくってみる 3 設定編（Virtual Box Guest Additions,ネットワーク）

# 設定のつづき
Guest Additionsのインストールやネットワークの設定を行う。
Virtual BoxのGuestAdditionsのインストールは、『ハッキングラボのつくりかた』の３章の７（p152から）で説明されている。ページが飛ぶが、ネットワークの設定と同時に行う。

## Virtual Box Guest Addtionsのインストール
インストールすると
- シームレスモードが利用可能に
- グラフィックの向上
といったメリットがある。

**インストール**
ゲストOSのウィンドウのメニューバーから「デバイス」>「Guest Additions CDのイメージの挿入...」をクリックしてイメージをゲストOSに挿入。
![Screenshot_20220407_122810.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535888/0c1f3ff4-6cd9-8750-3821-a14ef3fe78a8.png)
以下のコマンドを実行
```
$ sudo apt update
$ sudo apt install linux-headers-$(uname -r)

/*マウントされたディレクトリに移動。環境によって違いがあるかもしれない*/
$ cd /media/cdrom0
$ sudo sh ./VBoxLinuxAdditions.run
```
:::note
「Guest Additions CDのイメージの挿入...」をクリックしてもマウントされない・反応がない場合、再起動するとマウントできる場合がある。
:::
## 共有フォルダの設定
Kali Linuxを終了させて、ゲストOSの「設定」画面から共有フォルダの設定を行う。
| 項目 | 設定 |
| ----- | ----- |
| フォルダパス | ホストOS上の任意のフォルダ・ディレクトリ |
| フォルダ名 | 任意のフォルダ名 |
| 読み込み専用 | ゲストOSで読み込みしかできなくする |
| 自動マウント | ログイン時に自動的にマウント |
| マウントポイント | ゲストOS上の任意のディレクトリをマウントポイントに指定。省略するとVirtualBox側で自動的にマウントポイントを割り当てる |

今回はKaliLinuxからの書込も必要なため、「読み込み専用」にはチェックを入れなかった。
設定を「OK」で完了させる。

![Screenshot_20220407_133143.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535888/61c88220-5d19-ce25-6353-a91bfa6c8291.png)
再度、KaliLinuxを起動させて、ターミナルを立ち上げる。
`sudo ls /media/sf_shareDir`を実行した結果が次の通り。（ファイルの一覧は加工してある。）
![VirtualBox_kali-linux-2022.1-virtualbox-amd64_07_04_2022_14_04_22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535888/ed01435d-a4fa-5c7c-5346-1f473adae2a6.png)

赤い枠線で囲っているように、`sudo ls /media/sf_shareDir`としないと、「許可がない」とはねられてしまう。これは、rootユーザかvboxsfグループに所属しているユーザでしか、アクセスが出来ないためである。

![VirtualBox_kali-linux-2022.1-virtualbox-amd64_07_04_2022_14_11_57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535888/0866b7ee-057f-6c45-0114-86de982da622.png)
これでは面倒なため、次のコマンドで、ユーザーkaliをvboxsfグループに加入させてアクセスしやすいようにする。
```
$ sudo gpasswd --add kali vboxsf 
```
使いやすくするため、デスクトップにシンボリックリンクを作成する
```
$ cd $HOME/Desktop
$ ln -s /media/sf_shareDir
```
同書のp.156〜160では、別の方法によってマウントポイントを作成しているが、簡易的にすませるために、上記のシンボリックリンクで代用した。


## ネットワークの設定
これまではNATのみでネットワークに接続していたが、これでは、他のゲストOSをkaliLinuxからネットワーク経由でハッキングすることができない。ネットワークの設定を変更することで、それが可能になる。
Kali Linuxを終了させて、ゲストOSの「設定」画面からネットワークの設定を行う。
同書p.76の指示に従って、ネットワークの設定を行う。
VirtualBoxのゲストOS選択画面からKali Linuxの「設定」ウィンドウを開き、「ネットワーク」に移動。

**以下の表の通りに設定する**
| 仮想ネットワークアダプタ名 | アダプタ１ | アダプタ２ |
| :---: | :----------: | :----------: |
| 割当 | ホストオンリアダプタ | NAT |
| IPアドレスの割り振り | 静的IPアドレス | 動的IPアドレス |
| 用途 | ハッキング用 | インターネット用 |

VirtualBoxの環境によっては、ホストオンリアダプタのプライベートIPアドレスが10.0.2.0のような形にならないことがあるが(同書の記述では、そうなっている)、運用上に支障はなさそうなので、今回はデフォルトのままでいく。気になる場合は、VirtualBoxの「環境設定」から変更可能。
KaliLinuxを起動させて、`ip a`コマンドで確認すると、どちらか片方のネットワークしか利用できない状態となっている。両方とも同時に利用したいので、以下のように設定ファイルを書き換える。
エディタを立ち上げて/etc/network/interfacesファイルを編集する。(要sudo)
編集前の
```shell: /etc/network/interfaces　編集前
# This file describes the network interfaces available on your system
# and how to acticate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

#The loopback network interface
auto lo
iface lo inet loopback
```
を
```shell: /etc/network/interfaces 編集後
# This file describes the network interfaces available on your system
# and how to acticate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

#The loopback network interface
auto lo
iface lo inet loopback
#以下を追記して、両方のネットワークを同時利用可能にする。ハッキングラボ作成のため
#プライマリインターフェースeth0
allow-hotplug eth0
iface eth0 inet static
address 192.168.56.2
#上記のaddressは環境によって違う
netmask 255.255.255.0

#セカンダリインターフェースeth1
allow-hotplug eth1
iface eth1 inet dhcp
```
:::note warn
プライマリインターフェースeth0にgatewayを指定すると、ルーティングテーブルにゲートウェイのレコードが２つ出現して、通信に支障をきたすことが同書で触れられている。(セカンダリeth1のdhcpですでにgatewayを取得したため)
実際に試してみた所、インターネットへの通信が不可能になった。ホストオンリネットワークのホストOSのみ通信可能だった。
:::

設定ファイルを編集して保存、再起動する。
起動後に
`ip a`
`route`
を実行すると、下のようになる。
![VirtualBox_kali-linux-2022.1-virtualbox-amd64_07_04_2022_17_21_31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535888/90b33060-6dd8-da0f-ef5e-ce671f203a75.png)
`ping -c 3 8.8.8.8`
`ping -c 3 192.168.1.1`　物理ルータのIPアドレス例
`ping -c 3 192.168.56.1`  ホストオンリネットワークのホストOSのIPアドレス例
`ping -c 3 www.yahoo.co.jp`
などを実行して、通信に支障がないかどうかを確認する。

## 終わりに
おおまかな設定を終えると、再起動や再ログインするケースが多いことに気づいた。
同書では、設定したあとに再起動するかどうかは触れられていない箇所もある。設定がうまく反映できていなくても、再起動すれば反映されていた。
また、前回の記事を作成しているときに、apt updateを実行したらエラーが出て先に進めなくなったことがあったが、これも再起動をすると治っていた。