Kali Linuxを使いこなす:コマンド、設定、カスタマイズ徹底ガイド
Kali Linuxは、ペネトレーションテストやセキュリティ監査のために設計されたDebianベースのLinuxディストリビューションです。セキュリティ専門家や情報セキュリティに関心のある人々にとって、Kali Linuxは強力なツールセットを提供し、システムやネットワークの脆弱性を評価し、攻撃者の視点からセキュリティを強化するのに役立ちます。
この記事では、Kali Linuxの基本的な使い方から、より高度なコマンド、設定、カスタマイズまでを網羅的に解説します。Kali Linuxを最大限に活用し、セキュリティスキルの向上に役立てていただけるよう、実践的な情報と具体的な例を交えて説明していきます。
目次
-
Kali Linux入門
- Kali Linuxとは?
- Kali Linuxのインストール
- 仮想環境へのインストール(VirtualBox/VMware)
- デュアルブート/シングルブートインストール
- Kali Linuxの基本操作
- GUI(Graphical User Interface)の概要
- ターミナルの基本操作
- ファイルシステムの基本操作
- Kali Linuxのパッケージ管理
- aptコマンドの基本
- パッケージの検索、インストール、アップグレード、削除
-
Kali Linuxの必須コマンド
- システム情報取得コマンド
uname
lscpu
lsblk
df
free
top
/htop
ps
netstat
/ss
- ネットワーク関連コマンド
ifconfig
/ip
ping
traceroute
nslookup
/dig
ssh
nmap
tcpdump
wireshark
- ファイル操作コマンド
ls
cd
pwd
mkdir
rmdir
touch
cp
mv
rm
cat
less
/more
head
tail
grep
find
chmod
chown
- セキュリティ関連コマンド
hashcat
john
aircrack-ng
metasploit
- システム情報取得コマンド
-
Kali Linuxの設定
- ネットワーク設定
- 有線/無線ネットワークの設定
- IPアドレスの静的割り当て
- DNSサーバーの設定
- VPNの設定
- ユーザーアカウント管理
- 新しいユーザーの作成
- ユーザーパスワードの変更
- ユーザーグループの管理
- sudo権限の設定
- SSHサーバーの設定
- SSHの有効化/無効化
- ポート番号の変更
- 公開鍵認証の設定
- ブルートフォース攻撃対策
- ファイアウォールの設定
- ufwの基本操作
- 特定のポートの許可/拒否
- ログの確認
- システムアップデートとアップグレード
- 定期的なアップデートの重要性
apt update
とapt upgrade
の違い- ディストリビューションのアップグレード
- ネットワーク設定
-
Kali Linuxのカスタマイズ
- デスクトップ環境のカスタマイズ
- テーマの変更
- アイコンの変更
- フォントの変更
- ドックの設定
- コンテキストメニューのカスタマイズ
- ターミナルのカスタマイズ
- プロンプトの変更
- エイリアスの設定
- ターミナルエミュレーターの変更
- zshの導入とoh-my-zshの設定
- ツールのインストールと設定
- よく使うツールのインストール
- ツールの設定ファイルの編集
- 独自のツールスクリプトの作成
- 自動化スクリプトの作成
- Bashスクリプトの基本
- セキュリティ監査の自動化
- レポート生成の自動化
- デスクトップ環境のカスタマイズ
-
Kali Linuxのトラブルシューティング
- よくある問題とその解決策
- ネットワーク接続の問題
- パッケージインストールの問題
- GUIの問題
- システム起動の問題
- ログファイルの活用
- システムログの場所と内容
- エラーログの解析
- Kali Linuxコミュニティの活用
- 公式フォーラム
- メーリングリスト
- IRCチャンネル
- オンラインドキュメント
- よくある問題とその解決策
-
Kali Linuxのセキュリティベストプラクティス
- rootアカウントの使用を避ける
- 強力なパスワードの使用
- 定期的なシステムアップデート
- 不要なサービスの停止
- ファイアウォールの設定
- SSHセキュリティの強化
- ログの監視
- 暗号化の使用
- マルウェア対策
1. Kali Linux入門
1.1 Kali Linuxとは?
Kali Linuxは、セキュリティ監査とペネトレーションテストのために特別に設計されたDebianベースのLinuxディストリビューションです。Offensive Security Ltd.によって開発され、ネットワークセキュリティ専門家、倫理的ハッカー、およびセキュリティ愛好家がシステムとネットワークの脆弱性を評価し、セキュリティを強化するために使用されます。
Kali Linuxには、600以上のペネトレーションテストツールがプリインストールされており、情報収集、脆弱性分析、ワイヤレス攻撃、Webアプリケーション分析、エクスプロイト、フォレンジック、リバースエンジニアリングなど、さまざまなセキュリティタスクを簡単に実行できます。
Kali Linuxはオープンソースであり、無料でダウンロードして使用できます。また、活発なコミュニティがあり、ユーザーは互いに助け合い、知識を共有することができます。
1.2 Kali Linuxのインストール
Kali Linuxのインストール方法はいくつかあります。
- 仮想環境へのインストール(VirtualBox/VMware): 既存のオペレーティングシステム上に仮想環境を構築し、その中でKali Linuxを実行する方法です。最も安全で簡単な方法であり、Kali Linuxを試すのに最適です。
- デュアルブート/シングルブートインストール: 既存のオペレーティングシステムとKali Linuxを同じコンピュータにインストールする方法です。デュアルブートでは、起動時にどちらのオペレーティングシステムを起動するかを選択できます。シングルブートでは、Kali Linuxのみをインストールします。
1.2.1 仮想環境へのインストール(VirtualBox/VMware)
ここでは、VirtualBoxへのインストールを例に説明します。
- VirtualBoxのダウンロードとインストール: VirtualBoxの公式サイト(https://www.virtualbox.org/)から、お使いのオペレーティングシステムに合ったバージョンをダウンロードしてインストールします。
- Kali LinuxのISOイメージファイルのダウンロード: Kali Linuxの公式サイト(https://www.kali.org/downloads/)から、仮想マシン用のISOイメージファイルをダウンロードします。
- VirtualBoxで新しい仮想マシンを作成: VirtualBoxを起動し、「新規」ボタンをクリックして、新しい仮想マシンを作成します。
- 仮想マシンの設定:
- 名前: Kali Linuxなどの分かりやすい名前を入力します。
- タイプ: Linuxを選択します。
- バージョン: Debian (64-bit)またはお使いのKali Linuxのアーキテクチャに合ったものを選択します。
- メモリサイズ: 2GB以上を推奨します。
- 仮想ハードディスク: 「仮想ハードディスクを作成する」を選択し、VDI形式を選択します。
- ストレージの種類: 「可変サイズ」を選択します。
- ハードディスクのサイズ: 20GB以上を推奨します。
- 仮想マシンの詳細設定: 仮想マシンを選択し、「設定」ボタンをクリックします。
- システム: プロセッサのタブで、割り当てるプロセッサの数を調整します。
- ストレージ: ストレージのタブで、「空」と表示されているIDEコントローラを選択し、ディスクアイコンをクリックして、ダウンロードしたKali LinuxのISOイメージファイルを選択します。
- ネットワーク: ネットワークのタブで、ネットワークアダプタを「NAT」または「ブリッジアダプタ」に設定します。NATはホストOSとインターネットを共有し、ブリッジアダプタは仮想マシンに直接ネットワーク接続を提供します。
- Kali Linuxのインストール: 仮想マシンを起動すると、Kali Linuxのインストーラが起動します。画面の指示に従ってインストールを進めます。
- グラフィカルインストールを選択します。
- キーボードレイアウトを選択します。
- ネットワーク設定を行います。
- ユーザー名とパスワードを設定します。
- ディスクのパーティショニング: 「ガイド – ディスク全体を使用」を選択します。
- GRUBブートローダーをインストールします。
- インストール完了: インストールが完了したら、仮想マシンを再起動します。Kali Linuxが起動し、ログイン画面が表示されます。
1.2.2 デュアルブート/シングルブートインストール
デュアルブートまたはシングルブートでKali Linuxをインストールする場合は、次の手順に従います。
- Kali LinuxのISOイメージファイルのダウンロード: Kali Linuxの公式サイト(https://www.kali.org/downloads/)から、お使いのコンピュータのアーキテクチャに合ったISOイメージファイルをダウンロードします。
- ブータブルUSBドライブの作成: Rufusなどのツールを使用して、ダウンロードしたISOイメージファイルからブータブルUSBドライブを作成します。
- コンピュータのBIOS/UEFI設定の変更: コンピュータを起動し、BIOS/UEFI設定画面に入り、起動順序をUSBドライブに変更します。
- Kali Linuxのインストール: USBドライブからコンピュータを起動すると、Kali Linuxのインストーラが起動します。画面の指示に従ってインストールを進めます。
- グラフィカルインストールを選択します。
- キーボードレイアウトを選択します。
- ネットワーク設定を行います。
- ユーザー名とパスワードを設定します。
- ディスクのパーティショニング: デュアルブートの場合は、「手動」を選択し、Kali Linux用のパーティションを作成します。シングルブートの場合は、「ガイド – ディスク全体を使用」を選択します。
- GRUBブートローダーをインストールします。
- インストール完了: インストールが完了したら、コンピュータを再起動します。デュアルブートの場合は、起動時にどちらのオペレーティングシステムを起動するかを選択できます。
注意: デュアルブート/シングルブートインストールは、既存のデータを失う可能性があるため、事前にバックアップを取ることをお勧めします。
1.3 Kali Linuxの基本操作
1.3.1 GUI(Graphical User Interface)の概要
Kali Linuxは、Xfceという軽量なデスクトップ環境を標準で使用しています。Xfceは、リソース消費が少なく、カスタマイズ性が高いのが特徴です。
- デスクトップ: アプリケーションのショートカットやファイルを表示する領域です。
- パネル: 画面の上部または下部に配置され、メニュー、タスクバー、システムトレイなどが含まれます。
- メニュー: アプリケーションを起動したり、システム設定を変更したりするためのメニューです。
- タスクバー: 起動中のアプリケーションのウィンドウを表示し、切り替えるためのバーです。
- システムトレイ: システムの状態(ネットワーク接続、バッテリー残量など)を表示する領域です。
1.3.2 ターミナルの基本操作
ターミナルは、コマンドを入力してシステムを操作するためのインターフェースです。Kali Linuxでは、Xfce端末というターミナルエミュレーターが標準で使用されています。
- ターミナルの起動: メニューから「ターミナル」を検索して起動します。
- コマンドの実行: コマンドを入力し、Enterキーを押すと、コマンドが実行されます。
- コマンド履歴: 上矢印キーと下矢印キーを使用して、以前に実行したコマンドを呼び出すことができます。
- Tab補完: コマンドやファイル名の入力をTabキーで補完することができます。
- コマンドの終了: Ctrl + Cキーを押すと、実行中のコマンドを強制終了することができます。
1.3.3 ファイルシステムの基本操作
Kali Linuxのファイルシステムは、Unix系のファイルシステム構造に従っています。
- ルートディレクトリ (/): ファイルシステムの最上位ディレクトリです。
- ホームディレクトリ (/home/username): 各ユーザーの個人用ファイルを保存するディレクトリです。
- 絶対パス: ルートディレクトリからの完全なパスです (例: /home/user/documents/file.txt)。
- 相対パス: 現在のディレクトリからのパスです (例: documents/file.txt)。
基本的なファイル操作コマンド:
ls
: ファイルやディレクトリの一覧を表示します。cd
: ディレクトリを移動します。pwd
: 現在のディレクトリを表示します。mkdir
: 新しいディレクトリを作成します。rmdir
: 空のディレクトリを削除します。touch
: 空のファイルを作成します。cp
: ファイルやディレクトリをコピーします。mv
: ファイルやディレクトリを移動またはリネームします。rm
: ファイルやディレクトリを削除します。
1.4 Kali Linuxのパッケージ管理
Kali Linuxは、Debianベースのディストリビューションであるため、apt
というパッケージ管理システムを使用します。apt
を使用することで、簡単にパッケージのインストール、アップグレード、削除を行うことができます。
1.4.1 aptコマンドの基本
apt
コマンドの基本的な使い方を以下に示します。
apt update
: パッケージリストを更新します。apt upgrade
: インストールされているパッケージをアップグレードします。apt install package_name
: パッケージをインストールします。apt remove package_name
: パッケージを削除します。apt purge package_name
: パッケージとその設定ファイルを削除します。apt search package_name
: パッケージを検索します。apt show package_name
: パッケージの詳細情報を表示します。
1.4.2 パッケージの検索、インストール、アップグレード、削除
パッケージの検索:
bash
apt search nmap
パッケージのインストール:
bash
sudo apt install nmap
パッケージのアップグレード:
bash
sudo apt update
sudo apt upgrade
パッケージの削除:
bash
sudo apt remove nmap
2. Kali Linuxの必須コマンド
Kali Linuxを効果的に使用するためには、様々なコマンドを理解し、使いこなせるようにすることが重要です。以下に、Kali Linuxで頻繁に使用されるコマンドとその使い方を詳細に説明します。
2.1 システム情報取得コマンド
これらのコマンドは、システムのハードウェア構成、リソース使用状況、実行中のプロセスなど、システムの基本的な情報を取得するために使用されます。
uname
: カーネル情報を表示します。uname -a
: すべての情報を表示します (カーネル名、ホスト名、カーネルリリース、カーネルバージョン、マシンアーキテクチャ、プロセッサタイプ、オペレーティングシステム)。uname -r
: カーネルリリースを表示します。
lscpu
: CPUの詳細情報を表示します。- CPUのモデル名、クロック速度、コア数、スレッド数などを確認できます。
lsblk
: ブロックデバイス(ディスク、パーティション)の情報を表示します。- ディスクのサイズ、パーティション構成、マウントポイントなどを確認できます。
df
: ディスクの使用状況を表示します。df -h
: 人間が読みやすい形式(KB、MB、GB)で表示します。
free
: メモリの使用状況を表示します。free -h
: 人間が読みやすい形式で表示します。
top
/htop
: システムのリソース使用状況をリアルタイムで表示します。top
: 標準的なプロセスモニター。htop
:top
の改良版で、色分け表示やインタラクティブな操作が可能です。sudo apt install htop
でインストールできます。
ps
: 実行中のプロセスを表示します。ps aux
: すべてのユーザーのすべてのプロセスを表示します。ps -ef
: プロセスID (PID)、親プロセスID (PPID)、ユーザーID (UID) などを含む詳細情報を表示します。
netstat
/ss
: ネットワーク接続情報を表示します。netstat -an
: すべてのアクティブなネットワーク接続とリスニングポートを表示します。netstat -tulnp
: TCP、UDPのリスニングポートを表示します。ss -tulnp
:netstat
の代替コマンド。より高速で効率的です。ss -lntu
でTCPとUDPのリスニングポートを表示します。
2.2 ネットワーク関連コマンド
これらのコマンドは、ネットワーク接続の確認、ネットワーク診断、パケットキャプチャ、ポートスキャンなど、ネットワーク関連のタスクを実行するために使用されます。
ifconfig
/ip
: ネットワークインターフェースの設定を表示および変更します。ifconfig
: 古いコマンド。ネットワークインターフェースの情報(IPアドレス、MACアドレス、ネットマスクなど)を表示します。ip addr show
:ifconfig
の代替コマンド。より高度な機能を提供します。ip link show
でインターフェースの状態を確認できます。
ping
: ホストへの到達可能性をテストします。ping google.com
: google.comへの接続をテストします。Ctrl + Cで停止します。ping -c 4 google.com
: google.comに4回pingを送信します。
traceroute
: パケットがホストに到達するまでの経路を表示します。traceroute google.com
: google.comへの経路を表示します。
nslookup
/dig
: DNS情報を照会します。nslookup google.com
: google.comのIPアドレスを取得します。dig google.com
: より詳細なDNS情報を取得します。
ssh
: リモートホストにセキュアに接続します。ssh user@host
: userとしてhostに接続します。ssh -p port user@host
: 指定されたポート番号でhostに接続します。
nmap
: ネットワークスキャナ。ホストのポートスキャン、サービス検出、OS検出などを行います。nmap 192.168.1.1
: 192.168.1.1のポートスキャンを行います。nmap -sV 192.168.1.1
: 192.168.1.1のサービスのバージョンを検出します。nmap -O 192.168.1.1
: 192.168.1.1のOSを検出します。
tcpdump
: パケットキャプチャツール。ネットワークトラフィックを監視し、パケットをキャプチャします。tcpdump -i eth0
: eth0インターフェースのすべてのトラフィックをキャプチャします。tcpdump -i eth0 port 80
: eth0インターフェースのポート80のトラフィックをキャプチャします。
wireshark
: パケットアナライザ。キャプチャされたパケットを解析し、プロトコル分析、トラフィック分析などを行います。- GUIベースのツールであり、
tcpdump
でキャプチャしたパケットを解析するのに便利です。
- GUIベースのツールであり、
2.3 ファイル操作コマンド
これらのコマンドは、ファイルやディレクトリの作成、移動、コピー、削除、内容表示など、ファイルシステムの操作に使用されます。
ls
: ファイルやディレクトリの一覧を表示します。ls -l
: 詳細な情報を表示します(パーミッション、所有者、サイズ、最終更新日時など)。ls -a
: 隠しファイルやディレクトリも表示します。ls -t
: 最終更新日時の降順で表示します。
cd
: ディレクトリを移動します。cd ..
: 親ディレクトリに移動します。cd ~
: ホームディレクトリに移動します。cd /path/to/directory
: 指定されたディレクトリに移動します。
pwd
: 現在のディレクトリを表示します。mkdir
: 新しいディレクトリを作成します。mkdir directory_name
: directory_nameという名前のディレクトリを作成します。mkdir -p /path/to/new/directory
: 存在しない親ディレクトリも同時に作成します。
rmdir
: 空のディレクトリを削除します。rmdir directory_name
: directory_nameという名前の空のディレクトリを削除します。
touch
: 空のファイルを作成します。touch file_name
: file_nameという名前の空のファイルを作成します。
cp
: ファイルやディレクトリをコピーします。cp file1 file2
: file1をfile2にコピーします。cp -r directory1 directory2
: directory1をdirectory2に再帰的にコピーします。
mv
: ファイルやディレクトリを移動またはリネームします。mv file1 file2
: file1をfile2にリネームします。mv file /path/to/directory
: fileを指定されたディレクトリに移動します。
rm
: ファイルやディレクトリを削除します。rm file_name
: file_nameという名前のファイルを削除します。rm -r directory_name
: directory_nameという名前のディレクトリを再帰的に削除します。rm -f file_name
: ファイルの削除を強制します(確認を求められません)。
cat
: ファイルの内容を表示します。cat file_name
: file_nameという名前のファイルの内容を表示します。
less
/more
: ファイルの内容をページごとに表示します。less file_name
: file_nameという名前のファイルの内容をページごとに表示します。more file_name
:less
と同様ですが、スクロールバックできません。
head
: ファイルの先頭数行を表示します。head -n 10 file_name
: file_nameという名前のファイルの先頭10行を表示します。
tail
: ファイルの末尾数行を表示します。tail -n 10 file_name
: file_nameという名前のファイルの末尾10行を表示します。tail -f file_name
: ファイルの末尾を表示し、ファイルが更新されるたびに新しい行を表示します(ログファイルの監視に便利です)。
grep
: ファイルから指定されたパターンを検索します。grep "pattern" file_name
: file_nameという名前のファイルから”pattern”を含む行を検索します。grep -i "pattern" file_name
: 大文字と小文字を区別せずに検索します。grep -r "pattern" directory_name
: 指定されたディレクトリとそのサブディレクトリから再帰的に検索します。
find
: ファイルシステムから指定された条件に一致するファイルを検索します。find . -name "file_name"
: 現在のディレクトリとそのサブディレクトリからfile_nameという名前のファイルを検索します。find / -type d -name "directory_name"
: ルートディレクトリからdirectory_nameという名前のディレクトリを検索します。find . -size +1M
: 現在のディレクトリとそのサブディレクトリから1MBを超えるファイルを検索します。
chmod
: ファイルやディレクトリのパーミッションを変更します。chmod 755 file_name
: file_nameという名前のファイルのパーミッションを755に変更します。chmod +x file_name
: file_nameという名前のファイルに実行権限を追加します。
chown
: ファイルやディレクトリの所有者を変更します。chown user file_name
: file_nameという名前のファイルの所有者をuserに変更します。chown user:group file_name
: file_nameという名前のファイルの所有者とグループをuserとgroupに変更します。
2.4 セキュリティ関連コマンド
これらのコマンドは、パスワードクラッキング、ワイヤレスセキュリティテスト、脆弱性分析など、セキュリティ関連のタスクを実行するために使用されます。
hashcat
: パスワードハッシュクラッキングツール。- 様々なハッシュアルゴリズムをサポートしており、高速なGPUベースのクラッキングが可能です。
hashcat -m 0 hash_file dictionary.txt
: MD5ハッシュを辞書攻撃でクラッキングします。
john
: パスワードクラッキングツール。- 様々なクラッキングモード(辞書攻撃、ブルートフォース攻撃など)をサポートしています。
john hash_file
: hash_fileに含まれるハッシュをクラッキングします。
aircrack-ng
: ワイヤレスセキュリティテストツールスイート。- Wi-Fiネットワークのパケットキャプチャ、WPA/WPA2パスワードクラッキングなどを行います。
airodump-ng wlan0
: 周囲のWi-Fiネットワークをスキャンします。aircrack-ng captured_packets.cap -w password_list.txt
: キャプチャされたパケットからWPA/WPA2パスワードをクラッキングします。
metasploit
: 脆弱性分析とエクスプロイトフレームワーク。- 様々な脆弱性に対するエクスプロイトモジュールを提供し、ペネトレーションテストを自動化できます。
msfconsole
: Metasploitコンソールを起動します。search exploit/smb/ms17_010
: MS17-010 (EternalBlue) エクスプロイトを検索します。
3. Kali Linuxの設定
Kali Linuxを効果的に使用するためには、ネットワーク設定、ユーザーアカウント管理、SSHサーバー設定、ファイアウォール設定などを適切に行うことが重要です。
3.1 ネットワーク設定
3.1.1 有線/無線ネットワークの設定
Kali Linuxは、NetworkManagerというネットワーク管理ツールを使用しています。
- GUIでの設定: パネルのネットワークアイコンをクリックして、ネットワーク接続を設定できます。
- ターミナルでの設定:
nmcli device status
: ネットワークデバイスの状態を表示します。nmcli connection show
: ネットワーク接続の設定を表示します。nmcli connection up "Wired connection 1"
: “Wired connection 1″という名前の有線接続をアクティブにします。nmcli connection down "Wired connection 1"
: “Wired connection 1″という名前の有線接続を非アクティブにします。nmcli dev wifi list
: 利用可能なWi-Fiネットワークをリスト表示します。nmcli dev wifi connect "SSID" password "password"
: SSIDが”SSID”でパスワードが”password”のWi-Fiネットワークに接続します。
3.1.2 IPアドレスの静的割り当て
デフォルトでは、Kali LinuxはDHCPサーバーからIPアドレスを自動的に取得します。IPアドレスを静的に割り当てるには、次の手順に従います。
- /etc/network/interfaces ファイルを編集します。
bash
sudo nano /etc/network/interfaces - 以下の行を追加または編集します。
auto eth0
iface eth0 inet static
address 192.168.1.100 # 割り当てるIPアドレス
netmask 255.255.255.0 # ネットマスク
gateway 192.168.1.1 # ゲートウェイ
dns-nameservers 8.8.8.8 8.8.4.4 # DNSサーバー - ネットワークインターフェースを再起動します。
bash
sudo systemctl restart networking
3.1.3 DNSサーバーの設定
DNSサーバーは、ドメイン名をIPアドレスに解決するために使用されます。DNSサーバーの設定は、/etc/resolv.confファイルで行います。
bash
sudo nano /etc/resolv.conf
以下の行を追加または編集します。
nameserver 8.8.8.8 # Google Public DNS
nameserver 8.8.4.4 # Google Public DNS
3.1.4 VPNの設定
VPN (Virtual Private Network) は、インターネット接続を暗号化し、IPアドレスを隠すことで、オンラインプライバシーを保護します。
- GUIでの設定: NetworkManagerからVPN接続を設定できます。
- ターミナルでの設定:
- OpenVPNなどのVPNクライアントをインストールします。
bash
sudo apt install openvpn - VPNプロバイダーから設定ファイル (.ovpn) をダウンロードします。
- OpenVPNを使用してVPN接続を確立します。
bash
sudo openvpn --config vpn_config.ovpn
- OpenVPNなどのVPNクライアントをインストールします。
3.2 ユーザーアカウント管理
3.2.1 新しいユーザーの作成
bash
sudo adduser new_user
新しいユーザーのパスワードを設定し、その他の情報を入力します。
3.2.2 ユーザーパスワードの変更
bash
sudo passwd user
指定されたユーザーの新しいパスワードを設定します。
3.2.3 ユーザーグループの管理
bash
sudo usermod -a -G group user
指定されたユーザーをグループに追加します。
3.2.4 sudo権限の設定
sudo権限を持つユーザーは、root権限でコマンドを実行できます。sudo権限を付与するには、ユーザーをsudo
グループに追加します。
bash
sudo usermod -a -G sudo user
3.3 SSHサーバーの設定
SSH (Secure Shell) は、リモートホストに安全に接続するためのプロトコルです。Kali Linuxでは、SSHサーバーがデフォルトで有効になっていますが、セキュリティを強化するために設定を変更することをお勧めします。
3.3.1 SSHの有効化/無効化
bash
sudo systemctl start ssh # SSHサーバーを起動します
sudo systemctl stop ssh # SSHサーバーを停止します
sudo systemctl enable ssh # システム起動時にSSHサーバーを自動的に起動します
sudo systemctl disable ssh # システム起動時にSSHサーバーを自動的に起動しないようにします
3.3.2 ポート番号の変更
デフォルトのSSHポートは22ですが、セキュリティのため、別のポートに変更することをお勧めします。
- /etc/ssh/sshd_config ファイルを編集します。
bash
sudo nano /etc/ssh/sshd_config Port 22
の行をコメントアウトし、新しいポート番号を指定します。
#Port 22
Port 2222- SSHサーバーを再起動します。
bash
sudo systemctl restart ssh
3.3.3 公開鍵認証の設定
パスワード認証の代わりに、公開鍵認証を使用することで、SSHのセキュリティを大幅に向上させることができます。
- クライアント側で鍵ペアを生成します。
bash
ssh-keygen -t rsa - 公開鍵をサーバーにコピーします。
bash
ssh-copy-id user@host - /etc/ssh/sshd_config ファイルを編集し、パスワード認証を無効にします。
bash
sudo nano /etc/ssh/sshd_config - 以下の行を編集します。
PasswordAuthentication no
- SSHサーバーを再起動します。
bash
sudo systemctl restart ssh
3.3.4 ブルートフォース攻撃対策
ブルートフォース攻撃は、SSHサーバーに繰り返しログインを試み、パスワードを推測しようとする攻撃です。ブルートフォース攻撃を防ぐために、fail2banなどのツールを使用することをお勧めします。
bash
sudo apt install fail2ban
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
3.4 ファイアウォールの設定
ファイアウォールは、ネットワークトラフィックを監視し、不正なアクセスを防止するためのセキュリティシステムです。Kali Linuxでは、ufw (Uncomplicated Firewall) というファイアウォールが使用できます。
3.4.1 ufwの基本操作
bash
sudo ufw enable # ファイアウォールを有効にします
sudo ufw disable # ファイアウォールを無効にします
sudo ufw status # ファイアウォールの状態を表示します
3.4.2 特定のポートの許可/拒否
bash
sudo ufw allow 22 # ポート22へのトラフィックを許可します
sudo ufw deny 22 # ポート22へのトラフィックを拒否します
sudo ufw allow ssh # SSHへのトラフィックを許可します
sudo ufw allow from 192.168.1.0/24 # 192.168.1.0/24からのトラフィックを許可します
3.4.3 ログの確認
ufwのログは、/var/log/ufw.log ファイルに保存されます。
bash
sudo tail -f /var/log/ufw.log
3.5 システムアップデートとアップグレード
3.5.1 定期的なアップデートの重要性
セキュリティ脆弱性やバグの修正、新機能の追加など、システムを最新の状態に保つことは、セキュリティ対策の基本です。
3.5.2 apt update
とapt upgrade
の違い
apt update
: パッケージリストを更新します。このコマンドは、インストール可能なパッケージの最新情報を取得しますが、実際にパッケージをアップグレードするわけではありません。apt upgrade
: インストールされているパッケージをアップグレードします。このコマンドは、apt update
で更新されたパッケージリストに基づいて、最新バージョンのパッケージをインストールします。
3.5.3 ディストリビューションのアップグレード