Linuxディストリビューションには様々な種類が存在します。
その中でもサイバーセキュリティに特化したKali Linuxについて解説します。Kali Linuxについて学ぶことで、セキュリティに興味を持つきっかけになればと思います。
Kali Linuxとは
Kali Linuxは、「カーリーリナックス」と呼び、DebianベースのオープンソースLinuxディストリビューションの一つです。サイバーセキュリティに特化したLinuxで、ペネトレーションテスト、コンピュータフォレンジック、リバースエンジニアリングなどのセキュリティに関する数多くのツールがサポートされています。
Kali Linuxを使いセキュリティチェックをすることで、自社サイトの脆弱性を把握することができます。ただしKali Linuxはセルフセキュリティチェックするには非常に便利ですが、他社サイトに使用するとサイバー攻撃とみなされ違法行為になる可能性があるため、使い方には注意が必要です。
Kali Linuxの特徴
-
サイバーセキュリティに関する多くのツールを使うことができる
Kali Linuxでは600を超えるツールを使用することができます。
-
幅広いデバイスに対応
Kali Linuxは幅広いデバイスをサポートしています。様々なハードウェア上で動作し、多くのUSBやワイヤレスデバイスとの互換性があります。
代表的なツール
以下は、代表的なツールです。これら以外にも様々なツールがサポートされているので、目的に応じてKali Linux公式ドキュメントを確認してください。
ポートスキャン
ポートスキャンとは、対象となるIPアドレスの各ポートの稼働状況を調査する手法です。各ポートへ通信し、応答内容から解放されているポートや稼働中のサービスの情報を確認することができます。
ペネトレーションテスト
ペネトレーションテストは、侵入テストのことです。実際に対象のシステムに対して、攻撃者が実行するような手法を用いて侵入します。システムのセキュリティ耐性や、攻撃を受けた際のリスクを把握するために行われます。
DoS攻撃
対象となるWEBサイトやサーバーに対して、大量のアクセスを送る攻撃です。アクセスが集中することにより、対象のWEBサイトへのアクセス困難、サーバーをダウンさせるなど、対象物が正常に動作しないようにすることが目的で行われます。
SQLインジェクション
SQLインジェクションはWEBアプリケーションの脆弱性を利用して、データベースを不正に操作する攻撃のことです。WEBアプリケーションの検索ボックスや入力フォームなどに、不正なSQL文を記入することで実行されます。
これによってデータベースに登録された情報の改ざんや漏洩の被害を受けます。
デジタルフォレンジック
デジタルフォレンジックとは、サイバー攻撃を受けた機器のデータを解析、分析することです。再発防止、被害の原因特定、訴訟の準備などの目的で行われます。
Kali Linuxのインストール方法
Kali Linuxは以下の方法でインストールすることができます。
- PCへ直接Kali ISOのインストール
- 仮想環境(VirtualBox、VMware)へKali ISOのインストール
- コンテナ(Docker)へのインストール
- クラウド(Amazon AWS、Microsoft Azure)を利用したインストール
- USBへのKali ISOのダウンロード
今回は上記の内のDockerとAWSへのインストールについて解説します。
Dockerへのインストール
Kali Linuxコンテナの作成
以下のコマンドでKali Linuxのイメージをpullすることができます。
$ docker pull kalilinux/kali-rolling
取得したイメージからコンテナ作成
$ docker run -itd kalilinux/kali-rolling
上記コマンドでKali Linuxのコンテナを作成することができました。現状では、まだツールのインストールはされていません。ツールをインストールするためにコンテナの中に入ります。
$ docker exec -it <コンテナID> bash
ツールのインストールの前に、以下のコマンドを実行しておきましょう。
# apt update
あとは目的に応じて、必要なツールをインストールするだけです。Kali LinuxではNmap、Metasploit Frameworkなど個々でツールをインストールすることも可能ですが、メタパッケージと呼ばれる目的に応じたツールをパッケージ化したものも提供されています。
これにより個々にapt install git
とインストールする必要はなく、apt install <メタパッケージ名>
で複数のパッケージや依存関係のあるライブラリなどをまとめてインストールすることができます。
主なメタパッケージ
-
kali-linux-headless
gitやvimなどの基本的な機能を主にインストールするパッケージです。公式でも推奨されているため、インストールしておくことをお勧めします。
-
kali-tools-passwords
kali Linuxが提供する全てのパスワードクラッキングツールをインストールすることができます。
-
kali-tools-database
データベースのセキュリティチェックに関するツールをインストールすることができます。sqlmapなどが含まれています。
-
kali-tools-top10
kali Linuxが提供するツールの中で、重要とされる10個のツールをインストールすることができます。aircrack-ng、sqlmap、wiresharkなどが含まれています。
メタパッケージのインストール
それでは、kali-linux-headlessを作成したコンテナにインストールします。以下のコマンドを実行します。
# apt -y install kali-linux-headless
上記コマンドを入力後、数分間でインストールが完了します。ここまでで基本的なKali Linuxの設定は完了しました。必要に応じて、ツールやメタパッケージをインストールして下さい。
AWSへのインストール
AWSのEC2へのKali Linuxのインストールについて解説します。通常のEC2インスタンス作成の手順と基本的には同じように進めていきますが、AMIの選択の部分が通常とは異なります。今回はKali LinuxのEC2へのインストールの解説のため、VPC、サブネットなどの作成、設定は割愛します。またAWSでのKali Linuxの使用は若干の料金が発生することにも注意してください。
EC2の作成
EC2の以下の画面に進み、インスタンスの作成をクリックします。
「インスタンスを起動ページ」のアプリケーションおよびosイメージの検索欄にKali Linuxと入力します。
Kali Linuxを選択します。
続行をクリックします。
以下のようにAMIが反映されます。あとは通常通りEC2の作成を行ってください。
最終的に以下のように表示されると、Kaliインスタンスの作成完了です。
インスタンスへのSSH接続
Kaliインスタンスへの接続は通常のEC2インスタンスへの接続と若干異なるので注意が必要です。通常EC2インスタンスに接続する際、ssh -i <キーペア> ec2-user@<パブリックIPアドレス>
と入力しますが、これではKaliインスタンスに接続することはできません。ユーザー名をec2-userからkaliに変更するとKaliインスタンスに接続することができます。
ssh -i <キーペア> kali@<パブリックIPアドレス>
以下のように表示されると、接続成功です。
┏━(Message from Kali developers)
┃
┃ This is a cloud installation of Kali Linux. Learn more about
┃ the specificities of the various cloud images:
┃ ⇒ https://www.kali.org/docs/troubleshooting/common-cloud-setup/
┃
┗━(Run: “touch ~/.hushlogin” to hide this message)
┌──(kali㉿kali)-[~]
└─$
AWSを使用したKaliインスタンスには、Dockerと異なり多くのツールが既にインストールされています。ただし、インストールされていないツールもあるため使用する際には目的のツールがインストールされているか確認する必要があります。
Nmapを使ってポートスキャン
DockerとAWSのEC2へのKali Linuxのインストールが完了しました。ここでは、DockerにインストールしたKali LinuxでNmapを使用して、簡単なポートスキャンを実行します。冒頭でも説明しましたが、Nmapでポートスキャンする対象は必ず、自身の管理下にあるIPアドレスに対して行ってください。
Nmapのインストール
DockerへのKali Linuxのインストールの項目で、初期設定としてインストールしたkali-linux-headlessの中にNmapも含まれています。kali-linux-headlessのインストールをせずに、Nmapを単体でインストールしたい場合は以下のコマンドを実行してください。
# apt install nmap
Nmapの実行
実際にKaliコンテナからホストPC(127.0.0.1)に対してポートスキャンしてみましょう。
通常Nmapのコマンドは、nmap <対象のIPアドレス>
でポートスキャンを実行します。コンテナの中からホストPCへのポートスキャンの際に、nmap 127.0.0.1とするとホストPCではなくコンテナ自身を指してしまうため今回は以下のコマンドを実行します。これでホストPCに対してポートスキャンを行うことができます。
# nmap host.docker.internal
実行結果
以下のような実行結果を得ることができました。使用されているポートとサービスの一覧が表示され、PostgreSQLなどのサービスが動いていることがわかります。今回は、簡単なポートスキャンだけですが、Kali Linuxに含まれているツールを使用することで様々なセキュリティチェックを行うことができます。
Starting Nmap 7.93 ( https://nmap.org ) at 2022-10-19 09:34 UTC
Nmap scan report for host.docker.internal (192.168.65.2)
Host is up (0.00069s latency).
Not shown: 993 closed tcp ports (reset)
PORT STATE SERVICE
88/tcp open kerberos-sec
5432/tcp open postgresql
5555/tcp open freeciv
5900/tcp open vnc
8000/tcp open http-alt
49152/tcp open unknown
49161/tcp open unknown
まとめ
- Kali Linuxは「カーリーリナックス」と呼び、サイバーセキュリティに特化したDebianベースのLinuxディストリビューションです。
- 600以上のツールと、目的ごとにツールをまとめてインストールできるメタパッケージが提供されています。
- ツールの使用は、自身の管理下にあるサイトやサーバーに対して行ってください。他社サイトに使用するとサイバー攻撃とみなされ違法行為になる可能性があります。
【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。
「フリーランスエンジニア」
近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。
「成功する人とそうでない人の違いは何か?」
私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。
比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。
多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、
エンベーダー編集部
エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。
関連記事
2020.02.25
完全未経験からエンジニアを目指す爆速勉強法
USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
- キャリア・学習法
- エンジニア
2023.02.21
【図解】SYN flood攻撃の仕組みと対策
こちらの記事では、SYN flood攻撃の仕組みと対策方法について、図を用いながら解説します。
- サイバーセキュリティ
2023.11.21
【Part 3/4】AWSの環境構築で学ぶトラブルシューティング【Route53】
今回は、Route53を使用し、特定のインスタンスにドメインでアクセスできるようにする環境を構築します。AWSのプライベートネットワークを介した安全な通信を利用する方法を学習します。
- AWS
2023.09.25
【わかりやすく解説】可用性とは?
可用性について解説しました。システムにおける可用性とは一体何なのか?初心者でもわかるように解説しております。
- AWS
- インフラエンジニア