Kali Linux 環境のセットアップ

LinuxBeginner
オンラインで実践に進む

はじめに

Kali Linux はセキュリティテスト用の Linux ディストリビューションです。このコースでは、セキュリティツールを使う前に必要な、日常的なターミナル操作から始めます。Linux や Docker の経験は不要です。

LabEx マシンは Ubuntu を実行し、その上で独立した Kali コンテナが動作します。コンテナはホストの Linux カーネルを共有しながら、独自のファイルとプログラムを提供します。この実習では環境が準備されています。一般ユーザーとして Kali に入り、システムを識別し、コマンドのヘルプを読み、小さな環境記録を保存します。この最初の実習にはスキャン対象はありません。

実習全体で Terminal インターフェースを使ってください。デスクトップ、Docker Hub アカウント、ソフトウェアのインストール作業は不要です。

Kali に入り、最初のファイルを書く

このステップでは、準備された Kali 環境に入り、ユーザーと作業ディレクトリを確認して、短いテキストファイルを書きます。

ターミナルは文字を表示するウィンドウで、シェルはコマンドを読み取るプログラムです。Terminal 内をクリックしてコマンドを入力し、Enter を押します。前に表示されるプロンプトを含めず、コマンドだけをコピーしてください。

最初のターミナルは、Ubuntu ホスト上の labex のものです。実習では、準備済みのコンテナ内で Bash シェルを開く kali というコマンドを提供します。コンテナのセットアップは完了しているため、自分で Docker コマンドを実行する必要はありません。

kali

プロンプトが次のようになります。

kali@kali-training:/home/labex/project$

ここで、kali はユーザー名、kali-training はこのコンテナの名前、パスは現在のディレクトリです。末尾の $ は慣例として一般ユーザーを示します。root 管理者のプロンプトでは、多くの場合 # を使います。プロンプトは変更できるため、実効ユーザー名を表示する whoami で確認しましょう。

whoami

想定される出力:

kali

root ではなく一般ユーザーとして作業しています。管理操作はコースの後半で紹介します。

相対名のファイルがどこに書き込まれるかを調べるには、作業ディレクトリを表示する pwd を使います。

pwd

想定される出力:

/home/labex/project

/ で始まるパスは絶対パスです。このプロジェクトディレクトリは、Ubuntu ホストの同じパスと共有されています。ここに保存したファイルは LabEx からも利用できます。/etc/os-release など、その他のコンテナ内のパスは Kali に属します。コンテナユーザーのホームディレクトリは /home/kali で、共有プロジェクトディレクトリとは異なります。

echo はメッセージを表示します。シングルクォートは単語をひとまとまりの文字列として保持します。シェルの > 演算子は、画面の代わりにファイルへ出力し、ファイルを作成するか、既存の内容を置き換えます。これを使って最初の演習ファイルを作成しましょう。

echo 'Kali practice started' > welcome.txt

出力は表示されません。メッセージは現在のディレクトリの welcome.txt に入りました。cat はファイルを読み、内容を表示します。

cat welcome.txt

想定される出力:

Kali practice started

これで、Kali ワークスペースでファイルを作成して読めることが確認できました。次のステップでも、この Kali シェルを使い続けてください。ターミナルを閉じた場合は、新しい Terminal を開き、もう一度 kali を実行します。Kali 内で exit と入力するとホストに戻ります。コンテナやプロジェクトファイルは削除されません。

Kali を識別し、リリース情報を保存する

このステップでは、Kali のシステム識別情報を読み、組み込みのコマンドヘルプを使い、特定のバージョン番号を前提にせずリリース記録を保存します。

Linux ディストリビューションは、KEY=value 形式の項目を持つテキストファイル /etc/os-release を提供します。/etc にはシステムの設定ファイルや識別ファイルがあります。ステップ 1 で開いた Kali シェル内で、このファイルを読みます。

cat /etc/os-release

出力の中から次の項目を探してください。

PRETTY_NAME="Kali GNU/Linux Rolling"
...
ID=kali
...

ID はディストリビューションを識別し、PRETTY_NAME は人が読める名前です。VERSION_ID、VERSION、VERSION_CODENAME など、VERSION で始まる項目は、存在する場合にリリースを示します。検証済みの実習イメージには現在これらのフィールドがありますが、すべての Linux ディストリビューションが同じバージョンフィールドを提供するわけではありません。チュートリアルからバージョンをコピーせず、実際に表示された値を読んでください。ID が ubuntu なら、まだホストにいます。kali を実行し、コマンドをもう一度実行してください。

Kali はローリングリリースのディストリビューションなので、ソフトウェアは時間とともに変化します。この実習では、再現性を保つために固定したイメージを使います。環境を識別するために、ソフトウェアを更新・アップグレードする必要はありません。また、最小限の Kali コンテナには、すべてのセキュリティツールが含まれているわけではありません。

コマンドの使い方を学ぶため、多くのプログラムは --help オプションを用意しています。オプションは要求する動作を変えるもので、--help はファイルの読み取りの代わりに使い方を表示します。cat で試しましょう。

cat --help

先頭近くに、次の表示があるはずです。

Usage: cat [OPTION]... [FILE]...
Concatenate FILE(s) to standard output.

[FILE] はファイルパスのプレースホルダーで、そのまま入力する文字列ではありません。省略可能な部分は角括弧で囲まれます。このヘルプから、ファイルの内容は通常、これまでターミナルで読んでいた標準出力へ送られることが分かります。

ステップ 1 の > をもう一度使い、出力を保存しましょう。今回は、入力したメッセージではなく、コマンドが実際のリリース情報を出力します。

cat /etc/os-release > kali-release.txt

これは /etc/os-release を読み、プロジェクトディレクトリ内の別のファイルに書き込みます。システム識別ファイルは変更しません。保存した記録を読んでください。

cat kali-release.txt

出力は、ID=kali と存在するすべての VERSION 項目を含め、先ほど読んだ元の内容と一致するはずです。小さなファイル全体を保存すれば、まだ学んでいない絞り込みコマンドを使わずに、元の値と引用符を保持できます。これで、/home/labex/project/kali-release.txt に読みやすい環境記録ができました。

まとめ

Ubuntu ホストから準備済みの Kali コンテナに入り、一般ユーザーのプロンプトを理解し、ユーザー情報と作業ディレクトリを確認しました。テキストファイルを作成して読み、cat --help を使い、共有ワークスペースに Kali の実際のリリース情報を保存しました。

対応するチャレンジでは、同じスキルを使って、新しい独立した環境で正確なリリース記録を作成します。