【ハッキング・ラボ③】Kali Linuxのネットワークを構築する

Kali Linuxのネットワークを構築していきます。

構成は以下のようになります。
アダプター1はハッキング実験用のホストオンリーアダプター、アダプター2はインターネット接続用のNATです。
<img width="600" alt="hacking-lab-part3-1" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/c8d2b662-4452-e6c6-527b-0d8269003217.jpeg">

また、Kali Linuxに新しいユーザーを追加します。
<br>
まとめ記事（①〜⑯をまとめてます）
[【ハッキング・ラボのつくりかた】をやってみた](https://qiita.com/nakatatsu711/items/e90e6e0962bb787bf4a9)



## システム環境
`仮想化ソフト`：VirtualBox 6.1.0
`ホストOS`：Windows10
`ゲストOS`：Kali Linux 2020.1



## ネットワークの構築
### 仮想LANアダプターの追加
仮想LANアダプターを追加します。
VirtualBoxの「設定」→「ネットワーク」から追加します。


### ホストオンリーネットワークの設定
ホストオンリーネットワークの設定を行います。
「ファイル」→「ホストネットワークマネージャー」から以下の画像のようにIPアドレスやDHCPサーバ等の設定をします。
<img width="600" alt="hacking-lab-part3-2" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/b4f37719-e4c5-e2f6-8f10-744cd175a2dd.jpeg">
<img width="600" alt="hacking-lab-part3-3" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/d2f6b30c-fba1-43e5-79c9-00eb9fe9e3a2.jpeg">



### 静的IPアドレスの設定
今の設定のままでは、Debian特有のnetwork-managerの仕様により、2つのアダプターを認識することができず、片方にしかIPアドレスが割り振られていません。

この問題を解決するために/etc/network/interfacesファイルに設定を直接書き込んでいきます。

```
# vi /etc/network/interfaces
```

```:interfaces
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
address 10.0.0.2
netmask 255.255.255.0
  
# The secondary network interface
allow-hotplug eth1
iface eth1 inet dhcp
```


再起動して、ifconfigコマンドで確認すると、2つのアダプター両方ともIPアドレスが割り振られていることがわかります。
ここでは、アダプター1には10.0.0.2、アダプター2には10.0.3.15が割り振られています。
<img width="600" alt="hacking-lab-part3-4" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/d4afcf91-a3e7-b7a2-796d-16c5a7ac4f54.jpeg">



## ユーザー追加
新しくユーザーを追加します。
今回はnakatatsuというユーザーを追加します。
さらにパスワードを変更、sudoコマンドの使用権限の付与、ログインシェルをbashに設定します。
以下のコマンドを入力します。

```
# useradd -m nakatatsu
# passwd nakatatsu
# usermod -a -G sudo nakatatsu
# chsh -s /bin/bash nakatatsu
```

また、passwdコマンドでrootユーザーのパスワードを変更しておきましょう。



## SSH環境の構築
SSH環境を構築します。
SSHを使うと、セキュアな通信でリモートアクセスすることができます。

接続される側（ゲストOS）にはSSHサービスを提供するsshdを起動し、接続する側（ホストOS）にはSSHクライアントとして[Tera Term](https://ja.osdn.net/projects/ttssh2/)を使用します。


### SSHホスト鍵を再生成
SSHホスト鍵はあらかじめ生成されていますが、ここでは再生成しておきます。
過去のSSHホスト鍵をバックアップしてからSSHホスト鍵を再生成します。

```
# cd /etc/ssh
# mkdir default_keys
# mv ssh_host_* default _keys/
# dpkg-reconfigure openssh-server
```

生成した鍵とデフォルトの鍵のハッシュ値を比較して、別のものであることを確認します。

```
# md5sum ssh_host_*
# md5sum ./default_keys/ssh_host_*
```


### sshdを起動
sshdを起動します。
合わせてブート時も起動するように設定します。

```
# service ssh start
# update-rc.d ssh enable
```


### ホストOSからSSHでアクセス
ホストOSからSSHでアクセスします。
Tera Termを起動し、ホストにKaliのIPアドレスを指定します。
初回は警告が出ますが、信頼できるホストなのでそのまま「続行」ボタンを押します。
<img width="600" alt="hacking-lab-part3-5" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/fcd684f5-531a-b2cb-7cc9-2b6e0d1060e4.jpeg">

次に認証画面が表示されるので、ユーザー名とパスフレーズを入力し、「OK」ボタンを押します。
<img width="600" alt="hacking-lab-part3-6" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/9fe575e6-f9c2-96dc-2ab8-077c7abfa498.jpeg">

ログインできれば、プロンプトが返ってきます。
<img width="600" alt="hacking-lab-part3-7" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/2cb03552-38ce-9276-6750-485cac735ce6.jpeg">


### rootユーザーのログインを許可する
ホストOSからSSHでアクセスできるようにしましたが、今のままではrootユーザーのログインができないようになっています。
そこでrootユーザーで直接ログインできるようにしていきます。

Kali Linuxを起動し、/etc/ssh/sshd_configファイルを編集します。

```:sshd_config（編集前）
#PermitRootLogin prohibit-password
```

```:sshd_config（編集後）
PermitRootLogin yes
```

以下のコマンドを入力し、sshdを再起動すれば、rootユーザーでログインできるようになります。

```
# systemctl restart ssh
```


### 公開鍵認証の設定
これでパスワード認証によりログインできるようになりましたが、セキュリティを高めるため公開鍵認証を採用することにします。
公開鍵認証ではユーザー名、パスフレーズ、秘密鍵の3つが揃わないとログインすることができません。

公開鍵認証の原理は以下のようになっています。
<img width="600" alt="hacking-lab-part3-8" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/0491d142-78d0-cfc8-a5fc-d2343eac6f7c.jpeg">

まずTera Termで公開鍵と秘密鍵を生成します。
「設定」→「SSH鍵生成」と進み、生成します。
<img width="600" alt="hacking-lab-part3-9" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/75db2b81-a78d-41c0-94b4-11bcf80e3b8b.jpeg">

次にKali Linuxに公開鍵を転送します。
パスワード認証でログイン後、「ファイル」→「SSH SCP」と進み、公開鍵を転送します。
<img width="600" alt="hacking-lab-part3-10" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/8a0b576b-6e0f-d368-9a1d-5a980d991424.jpeg">

Kali Linux側で公開鍵認証を有効にします。
まず公開鍵（id_rsa.pub）をauthorized_keysファイルにコピーし、さらに権限を変更します。

```
# cat id_rsa.pub >> ./.ssh/authorized_keys
# chmod -R 700 ./.ssh/
# chmod -R 600 ./.ssh/authorized_keys
```

そして、/etc/ssh/sshd_configファイルにて以下のようにコメントアウトし、公開鍵認証を有効にします。

```:sshd_config
PubkeyAuthentication yes
AuthorizedKeysFile    .ssh/authorized_keys .ssh/authorized_keys2
```

sshdを再起動すれば、公開鍵認証でログインできるようになります。  

```
# systemctl restart ssh
```

<img width="600" alt="hacking-lab-part3-11" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/9ce44409-4f97-81eb-461a-5928caf7f9c2.jpeg">

パスワード認証は必要ないので無効にしておきます。
/etc/ssh/sshd_configファイルを編集します。

```:sshd_config（編集前）
#PasswordAuthentication yes
```

```:sshd_config（編集後）
PasswordAuthentication no
```