はじめに
タイトルの通り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も勉強しないとなあ...
参考