はじめに
この実験では、LabEx の仮想マシン (VM) 上に OpenSSH サーバーをインストールして設定することで、Hydra のテスト環境をセットアップする方法を学びます。このコントロールされた環境を使用することで、後の演習でパスワードクラッキング技術を安全に練習することができます。
SSH サーバーを設定して、パスワード認証とルートログインを有効にします。これは Hydra テストに不可欠な設定です。このプロセスには、設定ファイルの変更、サービスの再起動、および後続のセキュリティテストのためのセットアップの検証が含まれます。
ローカル SSH サーバーをインストールする
このステップでは、LabEx の仮想マシン (VM) 上に OpenSSH サーバーをインストールします。まず、SSH とは何かを理解しましょう。SSH は Secure Shell の略で、不安全なネットワーク上で 2 台のコンピューター間に安全なチャネルを作成するネットワークプロトコルです。これは、通信を暗号化しながらシステムにリモートアクセスする必要がある場合に特に重要です。
私たちがインストールする OpenSSH サーバーは、Linux システムで最も一般的に使用される SSH プロトコルの実装です。これをセットアップすることで、この実験の後半で Hydra などのパスワードクラッキングツールを安全にテストできるコントロールされた環境を作成します。これは、セキュリティ専門家が安全で孤立した環境でシステムの脆弱性をテストする方法に似ています。
まず、パッケージリストを更新する必要があります。これにより、システムがソフトウェアパッケージの最新バージョンを認識するようになります。
sudo apt updatesudoコマンドは管理者権限を付与し、apt updateはシステムの利用可能なパッケージのリストを更新します。次に、OpenSSH サーバーパッケージをインストールします。これにより、SSH サーバーを実行するために必要なすべてのコンポーネントがダウンロードされ、セットアップされます。
sudo apt install -y openssh-server-yフラグは、インストール中のすべてのプロンプトに自動的に「はい」と回答し、インストールプロセスをスムーズにします。私たちは Docker コンテナ(軽量で孤立した環境)で作業しているため、SSH サービスを手動で起動する必要があります。通常は自動的に起動しますが、その設定については後で扱います。
sudo service ssh startSSH サーバーが正常に動作していることを確認しましょう。このコマンドは SSH サービスの現在の状態を確認します。
sudo service ssh status出力に「active (running)」が含まれているはずで、これはサービスが正常に動作していることを確認するものです。
最後に、SSH サーバーがデフォルトのポート (22) で待機していることを確認します。ポートはサービスが通信するための「ドア」のようなもので、SSH は通常ポート 22 を使用します。
ss -tulnp | grep sshdssコマンドはソケットの統計情報を表示し、SSH に関連するエントリをフィルタリングしています。出力にsshdが*:22または0.0.0.0:22で待機していることが表示されるはずで、これはすべてのネットワークインターフェイスで接続を受け入れる準備ができていることを意味します。
テスト用に SSH サーバーを設定する
このステップでは、SSH サーバーを設定してパスワード認証を有効にします。これは、後のステップで Hydra を使用したテストに必要です。SSH (Secure Shell) は、システムへの安全なリモートアクセスを可能にするプロトコルです。デフォルトでは、最新の SSH 設定ではセキュリティを優先し、パスワード認証を無効にしてキーベースの認証を採用しています。ただし、Hydra はパスワードクラッキングツールであるため、テスト目的で一時的にパスワード認証を有効にする必要があります。
まず、元の SSH 設定ファイルのバックアップを作成します。これは、システムを変更する前の良い習慣であり、必要に応じて元の設定を復元できるようにします。
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bakSSH サーバーの設定ファイルを編集用に開きます。ここでは、初心者に適したシンプルなテキストエディターである nano を使用します。このファイルには、SSH サーバーの動作を制御するすべての設定が含まれています。
sudo nano /etc/ssh/sshd_config以下の行を見つけて変更します(存在しない場合は追加します)。これらの設定により、パスワード認証が有効になり、ルートログインが許可されます。これらはテスト環境に必要な設定です。
PasswordAuthentication yes PermitRootLogin yesファイルを保存します(Ctrl+O、Enter)、そして nano を終了します(Ctrl+X)。SSH サービスを再起動するまで、変更は反映されません。
変更を適用するために SSH サービスを再起動します。これにより、システムに新しい設定で設定ファイルを再読み込みするよう指示されます。
sudo service ssh restart新しい設定が有効になっていることを確認します。このコマンドは現在の SSH 設定を確認し、特定の設定をフィルタリングして、適切に有効になっていることを確認します。
sudo sshd -T | grep -E "passwordauthentication|permitrootlogin"両方の設定が有効になっていることを確認する出力が表示されるはずです。表示されない場合は、ファイルが正しく保存され、サービスが再起動されていることを再度確認してください。
テスト用ユーザーアカウントを作成する
このステップでは、意図的に脆弱なパスワードを持つテスト用ユーザーアカウントを作成します。これらのアカウントは、後で Hydra を使用して SSH ブルートフォース攻撃をデモンストレーションする際のターゲットとして機能します。このようなテスト用アカウントを作成することで、攻撃者が脆弱な資格情報を悪用する可能性のある実際のシナリオを安全にシミュレートすることができます。
一般的な脆弱なパスワードを持つ 3 つのテスト用ユーザーを作成しましょう。これらのパスワードは故意にシンプルにしています。なぜなら、テスト中に Hydra がこれらをクラックできるようにするためです。実際のシステムでは、常に強力で複雑なパスワードを使用する必要があります。
シンプルなパスワードを持つ 3 つのテスト用ユーザーを作成します(これらをテストに使用します)。
sudo useradd -m -s /bin/bash testuser1 echo "testuser1:password123" | sudo chpasswd sudo useradd -m -s /bin/bash testuser2 echo "testuser2:qwerty" | sudo chpasswd sudo useradd -m -s /bin/bash testuser3 echo "testuser3:letmein" | sudo chpasswduseraddコマンドは、各ユーザーにホームディレクトリを作成し (-m)、シェルを bash に設定します (-s /bin/bash)。chpasswdコマンドは、各ユーザーのパスワードを設定します。ユーザーが正常に作成されたことを確認します。
id testuser1 id testuser2 id testuser3idコマンドはユーザー情報を表示します。各ユーザーが存在することを確認する出力が表示されるはずで、ユーザー ID (UID)、グループ ID (GID)、およびグループメンバーシップが含まれます。この確認ステップにより、テストを進める前にテスト用アカウントが適切に設定されていることが保証されます。各ユーザーに切り替えてパスワードが正しく設定されていることを確認します(先ほど設定したパスワードを入力する必要があります)。
su - testuser1 exit su - testuser2 exit su - testuser3 exitsu - usernameコマンドを使用すると、別のユーザーアカウントに切り替えることができます。各パスワードを入力した後、コマンドプロンプトが変更され、そのユーザーとしてログインしていることが一時的に表示されるはずです。exitコマンドを使用すると、元のセッションに戻ります。このステップにより、パスワードが期待通りに機能することが確認されます。(オプション) テスト用の資格情報を含むテキストファイルを作成して参照用に残します。
echo -e "testuser1:password123\ntestuser2:qwerty\ntestuser3:letmein" > ~/project/test_credentials.txtこれにより、ユーザー名:パスワードの形式ですべてのテスト用資格情報がリストされたテキストファイルが作成されます。このファイルは必ずしも必要ではありませんが、テスト中に参照するのに役立つ場合があります。
-eフラグを使用すると、\nなどのバックスラッシュエスケープを解釈できます。
SSH サービスを起動する
このステップでは、SSH サービスが適切に実行され、自動起動するように設定されていることを確認します。SSH (Secure Shell) は、コンピュータ間で安全なリモートアクセスを可能にするネットワークプロトコルです。Hydra のテスト環境では、パスワードクラッキングテストを確実に実行できるように、SSH を継続的に実行する必要があります。
まず、SSH サービスが現在アクティブかどうかを確認しましょう。このコマンドは SSH デーモン (sshd) の現在の状態を表示します。
sudo service ssh statusサービスが実行されていない場合、出力に "inactive (dead)" と表示されます。これは、SSH サービスが現在停止しており、接続を受け付けていないことを意味します。
サービスが実行されていない場合は、起動する必要があります。このコマンドは SSH デーモンを初期化します。
sudo service ssh startサービスを起動した後、適切に実行されていることを確認しましょう。ここで再度状態コマンドを実行すると、異なる出力が表示されるはずです。
sudo service ssh status出力に "active (running)" と表示され、SSH サービスが接続を受け付ける準備ができていることを示します。
Docker コンテナ (軽量で孤立した環境) で作業しているため、コンテナが再起動したときに SSH が自動的に起動するようにする必要があります。この行は、bash 設定ファイルに起動コマンドを追加します。
echo 'sudo service ssh start' >> ~/.bashrc.bashrc ファイルは、新しいターミナルセッションを開始すると自動的に実行されるため、コンテナが起動するたびに SSH が常に起動することが保証されます。
最後に、SSH が正しいネットワークポート (SSH のデフォルトはポート 22) でリッスンしていることを確認しましょう。このコマンドはすべてのアクティブなネットワーク接続を表示します。
sudo netstat -tulnp | grep sshd出力に sshd が 0.0.0.0:22 でリッスンしていることが表示されるはずです。これは、SSH サーバーが標準の SSH ポートで任意のネットワークインターフェイスからの接続を受け付けるように適切に設定されていることを意味します。
SSH サーバーのアクセス可能性を確認する
この最後のステップでは、SSH サーバーが適切に設定され、アクセス可能であることを確認します。これは、後の実験で使用するパスワードクラッキングツールである Hydra が、機能する SSH サービスを対象にテストする必要があるため、非常に重要です。予想通りに動作することを確認するために、いくつかのチェックを行います。
まず、SSH サービスが実際に実行されているかどうかを確認しましょう。サービスは時々起動に失敗したり、予期せずクラッシュすることがあるため、これは最初の健全性チェックです。
sudo service ssh status出力には "active (running)" が明確に表示されるはずです。表示されない場合は、作業を進める前にサービスのトラブルシューティングを行う必要があります。
次に、先ほど作成したテストアカウントの 1 つを使用して、ローカルの SSH アクセスをテストします。これは、Hydra が接続を試みる方法をシミュレートしています。
ssh testuser1@localhostパスワードを求められたら、"password123"(先ほど設定したパスワード)を入力します。ログインに成功した後、
exitと入力してメインセッションに戻ります。これにより、基本的なパスワード認証が機能することが確認されます。次に、パスワード認証を具体的にテストします(Hydra は主にパスワードをブルートフォース攻撃するため)。SSH にパスワード認証を使用するよう強制し、意図的に間違ったパスワードを提供します。
ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no testuser1@localhostパスワードを求められたら、間違ったパスワードを入力します。サーバーは接続を拒否するはずで、これが期待される動作です。
次に、SSH サーバーが正しいネットワークインターフェイスとポートでリッスンしていることを確認します。これにより、(Hydra からのような)リモート接続がサービスに到達できることが保証されます。
sudo netstat -tulnp | grep sshdsshd が 0.0.0.0:22 でリッスンしていることが表示されるはずです。これは、標準の SSH ポート (22) で任意のネットワークインターフェイスからの接続を受け付けることを意味します。
最後に、認証ログを調べて、テスト試行が記録されていることを確認しましょう。ログは、トラブルシューティングや背後で何が起こっているかを理解するために重要です。
sudo tail -n 10 /var/log/auth.log成功したログイン(手順 2)と失敗した試行(手順 3)を示すエントリを探します。これらのログは、後で Hydra の攻撃試行を分析する際にも重要になります。
まとめ
この実験では、LabEx の仮想マシン (VM) 上に OpenSSH サーバーをインストールして設定することで、Hydra のテスト環境を構築する方法を学びました。このプロセスには、パッケージの更新、SSH サーバーのインストール、動作状態の確認、およびテスト目的での認証設定の構成が含まれていました。
また、実際のシナリオを模擬するためのテストユーザーアカウントの作成を練習し、パスワードセキュリティテストのための環境を整えました。この実験は、SSH サーバーの設定とセキュリティツールの実験用の制御された環境の構築に関する重要な実践的な経験を提供しました。


