ssh-auditでSSHサーバーの脆弱性を徹底調査:2024年標準の脆弱なアルゴリズム排除ガイド

Security tutorial - IT technology blog
Security tutorial - IT technology blog

5分で完了:SSHサーバーのスキャンを試してみる

新しいVPSを借りたばかりですか?それとも、長年運用しているサーバーを管理していますか?プロバイダーのデフォルト設定を盲信してはいけません。実際、多くのLinuxディストリビューションは、互換性を維持するために古いアルゴリズムを有効にしたままにしており、それが意図せず攻撃者に隙を与える原因となっています。

UbuntuやDebianへのssh-auditのインストールは数秒で終わります:

sudo apt update
sudo apt install ssh-audit -y

Macユーザーや、Pythonのpip経由で最新版を使用したい場合は:

pip3 install ssh-audit

それでは、すぐにチェックしてみましょう(IPはご自身のサーバーのアドレスに置き換えてください):

ssh-audit 1.2.3.4

実行結果は3つの色で明確に表示されます:(安全)、黄色(警告)、(危険)。もしCiphers(暗号化方式)やMACs(メッセージ認証コード)の項目に「真っ赤」なリストが表示されたら、そのサーバーは至急対策が必要です。

なぜデフォルト設定は「安全ではない」ことが多いのか?

多くの管理者は、なぜUbuntuやCentOSがいまだに脆弱なアルゴリズムを残しているのか疑問に思うでしょう。唯一の理由は互換性です。10年以上前のクライアント端末でも接続できるように配慮しているのです。しかし、ボットネットが毎日数千回もポート22をスキャンしている現在の環境では、この妥協は極めて危険です。

以前、顧客のシステム監査を行った際、いまだにdiffie-hellman-group1-sha1を使用しているサーバーを見つけました。これは「先史時代」のアルゴリズムであり、中スペックのハードウェアでも簡単に解読されたり、ダウングレード攻撃(downgrade attack)を受けたりする可能性があります。ssh-auditは、設定ファイルを目で見ただけでは気づけないTerrapin(CVE-2023-48795)のような脆弱性も暴き出してくれます。

ssh-auditが検査する主要コンポーネントの解説

このツールは、主に以下の4つのコアセキュリティ層を分析します:

  • Host Keys: サーバーの識別情報。ed25519rsa-sha2-512を優先しましょう。SHA-1を使用するssh-rsaが見つかった場合は、すぐに削除してください。
  • Key Exchange (KEX): 鍵交換方式。curve25519-sha256は現在、速度とセキュリティの両面で敵なしの選択肢です。
  • Ciphers: データの暗号化層。chacha20-poly1305またはaes-gcmのみを使用すべきです。
  • MACs: 通信途中でデータが改ざんされていないことを保証します。

レポートの読み方:色だけでなく詳細を見る

ssh-auditの最大のメリットは、スキャン結果の最後にあるRecommendations(推奨事項)セクションです。単にエラーを表示するだけでな、コピー&ペーストで使える具体的な設定コマンドをリストアップして「手取り足取り」教えてくれます。技術ドキュメントを調べる時間を少なくとも30分は節約できるでしょう。

「要塞化」された標準SSH構成への最適化

弱点を特定したら、サーバーのハードニングを進めてセキュリティを強化しましょう。以下のコマンドでメインの設定ファイルを開きます:

sudo nano /etc/ssh/sshd_config

以下は、私がよく適用する現代的な標準設定のテンプレートです。古いアルゴリズムを完全に排除し、強力なものだけを残しています:

# 高セキュリティな鍵交換
KexAlgorithms curve25519-sha256,[email protected],diffie-hellman-group16-sha512,diffie-hellman-group18-sha512

# Terrapin攻撃を防ぐ現代的な暗号化アルゴリズム
Ciphers [email protected],[email protected],[email protected]

# 強力なデータ認証 (EtM)
MACs [email protected],[email protected],[email protected]

# 安全なホスト鍵アルゴリズム
HostKeyAlgorithms ssh-ed25519,[email protected],rsa-sha2-512,rsa-sha2-256

再起動する前に、構文エラーがないか確認してください:

sudo sshd -t
sudo systemctl restart ssh

警告: SSHクライアント(最新のPuTTYやTermiusなど)がこれらのアルゴリズムをサポートしていることを必ず確認してください。古すぎるバージョンを使用している場合、サーバーから即座に締め出される可能性があります!

サーバーを常に安全に保つための実践的な経験

まだSSH鍵を設定していない場合は、toolcraft.app/ja/tools/security/password-generatorのパスワード生成ツールを活用してください。このツールはブラウザ上で完全に動作するため、複雑なパスワードがネットワーク経由で漏洩することはありません。

アルゴリズムを絞る以外にも、以下の3つの小さくも極めて効果的なコツを適用することをお勧めします:

  1. デフォルトのSSHポートを変更: ポート22からランダムな番号(例:2289)に変更することで、ボットネットによる自動スキャンの最大90%を回避できます。
  2. パスワード認証の廃止: SSH鍵認証に切り替え、PasswordAuthenticationを完全にオフにします。これが総当たり(Brute-force)攻撃に対する最も強力な障壁となります。
  3. アクセスIPの制限: 固定IPをお持ちの場合は、ファイアウォール(UFW)を使用して、自分だけがサーバーにアクセスできるように制限しましょう。

セキュリティは継続的なプロセスであり、一度設定して終わりではありません。システムを更新するたびに、1分かけてssh-auditを再実行し、すべてが管理下にあることを確認してください。鉄壁のシステムを構築できることを願っています!

Share: