DockerでKali Linuxコンテナをインストール


はじめに

タイトルの通りDockerでKali Linuxをインストールします
注意:Dockerの場合?Kali LinuxはGUIではなくCUIです.

インストールの前に...
DockerはホストのOSと異なるものをインストールできない(WindowsならWindowsのみ)ので,
Kali LinuxをDockerで建てるにはUbuntuなど(Linux)にDockerをインストールすることになると思います.
したがって,WindowsであればVirtualBoxなどでUbuntuを立ち上げてから,などの操作が必要だと思います.

今回は,自分で入れたUbuntuにDockerをインストールしてあるので,そこでKali Linux環境を作ります.

UbuntuにDockerはインストールされているとして説明します.

まだまだ初心者なのでわからないことが多いです. 
ご指摘お待ちしてます.

Dockerの起動

$ sudo systemctl start docker

Kali Linuxの公式イメージをダウンロード

docker hubのurl:https://hub.docker.com/search?q=kalilinux&type=image
ここでkalilinux/kali-rollingのDownloads数が500K+なので安心できるimageだと分かります.多分...

それでは,実際にこのimageをpull(自分のDockerに持ってくる)したいのですが,次のコマンドを使います.

$ docker pull kalilinux/kali-rolling

ここで色々エラーが出るかもしれないですが,考えられることは
・dockerコマンドの前に sudo をつけなければならない(dockerの設定で変えられるけど,初期状態ではsudoが必須)→私は初期状態のまま行きます.
・Docker Hubにログインしていない → Docker Hubのアカウントを作成し,sudo docker login でログインする
・そもそもDocker Hub上にある最新版のimageが変わっているかも
の3つとかかと思います.

イメージの確認

$ sudo docker image ls        
REPOSITORY               TAG       IMAGE ID       CREATED         SIZE
kalilinux/kali-rolling   latest    fa869fcfbd43   2 days ago      125MB

これでkalilinux/kali-rollingがレポジトリにあることを確認してください

コンテナをデタッチドモードで起動

$ sudo docker run -itd --rm kalilinux/kali-rolling
→ CONTAINER_IDが表示される

このCONTAINER_IDは覚えておいてください(先頭の4文字くらいでも良いし,最悪忘れてしまっても確認できる).
実際のところ

$ sudo docker run -itd --rm kalilinux/kali-rolling
0de7ee9ba6aa82ed7dc8f0949607b479ac81dca468f69dee60712f51b50b5466

こうなります

コンテナ内のシェルを起動

$ sudo docker exec -it さっきのCONTAINER_ID /bin/bash

実際には次のようなコマンドになります.

$ sudo docker exec -it 0de7ee9ba6aa82ed7dc8f0949607b479ac81dca468f69dee60712f51b50b5466 /bin/bash

これでKali Linuxのbashが起動するかと思います.
これまでのUbuntuのシェルのコマンドの先頭は$でしたが,Kali Linuxのbash上でのコマンドの先頭は今後#で示します.

Kali Linuxのパッケージインストール

ここまでで,Kali Linuxのbashを起動して操作できるようになったのですが,vimやpingなどのコマンドがインストールされていません.(最初焦りました...)
パケージをインストールする必要があるみたいです.
url: https://tools.kali.org/kali-metapackages
このサイトでkali-linux-coreやkali-linux-defaultなどのパッケージの説明がありました.
他の方のQiitaの記事にあるkali-linux-fullのパッケージがインストールできず,このサイトを探し出すのにどれだけ苦労したことやら,って感じです.(正直そこまでですが...)
https://www.kali.org/blog/major-metapackage-makeover/ ←ここにもパッケージの詳細が書いてあります!
はい,インストールしていきましょう.
最初はアップデートしておきましょう.

# apt-get update

次にお好きなパッケージをインストールしていきましょう.

# apt-get install 好きなパッケージ

私の場合は

# apt-get install -y kali-linux-core kali-linux-default kali-tools-web

って感じです.
途中の-yオプションはインストールの途中で聞かれるyes|noに対して全てyesで答えるものでしたね.
このインストールには時間がかかるかと思います.
私は寝る前にしたのでどれくらいかかったか分かりませんが...
インストールし終えたら

# exit

でbashから抜けましょう.

インストールしたコンテナをイメージとして保存

bashから抜けてもまだコンテナは起動しているので,色々インストールしたコンテナを保存しましょう.
何もせずにコンテナを終了してしまうと,これまでインストールしたものまで消えてしまうので注意.

$ sudo docker commit 前に出てきたCONTAINER_ID new_name

このコマンドで実行できますが,
CONTAINER_IDがわからないとき,

$ sudo docker container ls

で調べられます.

最終的に,具体的なコマンドは次のようになります.

$ sudo docker commit 0de7 my-kali

ここで,CONTAINER_IDは起動しているコンテナの中で一意に識別できれば良いので先頭の4文字だけでも大丈夫です.
あ,新しいレポジトリ?イメージ?の名前はmy-kaliにしました.

起動中の初期Kali Linuxコンテナを停止

これで保存できたので,コンテナを次のコマンドで停止します.

$ sudo docker container stop CONTAINER_ID

ここもCONTAINER_IDは先頭4文字とかで大丈夫です.

色々インストールしたKali Linuxコンテナに接続

いよいよmy-kaliに会えます

$ sudo docker run -it --rm container_name

container_nameは先ほどつけた名前です.
私の場合,my-kaliになります.
したがって,

$ sudo docker run -it --rm my-kali

です.
これでちゃんとmy-kaliのbashを起動できるので,exitで一回抜けましょう.

付録:kaliコマンドで起動させよう

この付録も参考サイトから抜粋ですが,少し詳しく.
Kali Linuxを起動させるとき,毎回毎回

$ sudo docker run -it --rm my-kali

と打たなければいけません.
これを

$ kali

このkaliコマンドだけで実行しようってことです.

$ echo "alias kali='docker run out --rm my-kali /bin/bash'" >> ~/.bash_profile
$ source ~/.bash_profile

これで,

$ kali

のコマンドのみでKali Linuxを起動できるようになります.
ただ,これは自分のUbuntuの環境のシェルがbashである場合なので,そこは自分の環境に合わせてください.
私の場合,シェルがzshなので.zshrcにしました.
自分のシェルが何かを調べるコマンドもあるので調べてみてください〜

終わりに

今回の内容を日本語で調べてもなかなかヒットしなかったので,これは是非ともと思って記事にしました.
今回が初めての記事なので色々と雑なところがあったかもしれないですが,LGTMを押してもらえると励みになりますのでポチッとお願いします.
また,英語で調べるのも大切だとしみじみ思いました.
TOEICも勉強しないとなあ...

参考