web-dev-qa-db-ja.com

SSH暗号、MACおよび鍵交換(およびそのペンテスト)

職場では、外部向けのサービスを、包含性のポリシー(できるだけ多くの人々を受け入れようとしたポリシー)から、よりセキュリティ重視のセットアップに移行しようとしています。

最初のステップは、アプリケーションコードの弱点に重点が置かれるコアWebアプリケーションの一部をペンテストすることでしたが、SSL/TLSスイートと暗号については多くのことが言われてきました。これらのテスト結果の裏側で、​​QualysテストでA-、A、A +の「等級」を達成することに関心を持つ人々を少なくとも十分に獲得することができました(== --- ==)(定量化可能な等級のような管理-誰が知っていましたか?!)

ただし、一部のソフトウェアのもう1つの重要なコンポーネントは、SFTPを介した(SSHを介した)一括ファイルアップロード/ダウンロードです。私は常に、SFTPサーバーで判断できる限りの良い方法を適用しようとしました。

  • キーのみの認証
  • 認証失敗のブラックリスト化
  • 2,048ビットキー
  • シェル、exec、ポート転送を無効にする

しかし、私は暗号の実装についてほとんど知らないので、デフォルト設定がほとんど常に使用されていることを認めなければなりません。ただし、ペンテスターがRC4、3DES、MD5などにフラグを立てた場合、私は推定します。 TLSベースのセットアップでは、SFTPサーバーでこれらのアルゴリズムにフラグを立てます(スコープ内に含まれていた場合)。

私は主にWindowsスタックで作業しており、私たちは長年にわたり、VanDyke VShellをSFTPサーバーとして選択してきました。デフォルトでは、「Kerberos」および「Kerberos(グループ交換)」を除くすべての暗号およびMACオプション(「なし」を除く)およびすべての鍵交換オプションが有効になっています。

これにより、VShellアプリケーションによって名前が付けられた次のアルゴリズムが残ります。

  • 鍵交換: diffie-hellman-group14、diffie-hellman、diffie-hellman-group
  • Cipher: AES-256-CTR、AES-192-CTR、AES-128-CTR、AES-256、AES-192、AES-128、Twofish、Blowfish、3DES、RC4
  • MAC: SHA1、SHA1-96、MD5、MD5-96、UMAC-64(および、より新しいバージョンでは) SHA2-512、SHA2-256

質問に関しては:

  1. これらのうちどれが現在使用するには弱すぎると見なされているかを判断するための最良の参照はどこにありますか?
  2. これらのいずれかを無効にすると、エンドユーザーに悪影響が及ぶかどうかをどのように判断すればよいですか?
  3. これらのサーバーを定期的に評価するために使用できるQualysに似たテストはありますか?
8
jimbobmcgee
  1. 残念ながら、標準化団体は、SSL/TLSまたはSSHセキュリティの暗号の単一リストに完全に同意していません。次のドキュメントとその内部参照は非常に役立ちます。一般に、owasp.orgは弱い暗号に追いつくのに最適な場所だと思いますが、残念ながら現時点では1つの普遍的なリストはありません。

    https://www.owasp.org/index.php/Transport_Layer_Protection_Cheat_Sheet

    SSHの強化については、特に次の点を確認してください。

    https://stribika.github.io/2015/01/04/secure-secure-Shell.html

    最終的には、サポートされている暗号をマッピングした最新のリストが、それぞれの価値が下がったという理由で役立つでしょうが、私はまだそのような努力をしていません。

  2. エンドユーザーが何を使用しているかを知る最良の方法は、サイトへの実際のトラフィックを監視することです。 SFTPサーバーまたはWebサーバーで暗号スイートのロギングを有効にするか、WireShark(特にtshark)などのプロトコルアナライザーを使用するだけです。

    https://www.wireshark.org/

    一般的に、過去5〜10年間のほとんどのクライアントが幅広い暗号をサポートしているため、暗号スイートの制限は実際には簡単です。

  3. これをテストするには、nmap ssl enumerate ciphers .NSEスクリプトを使用するか、SSHの場合はSSH2 enumerateアルゴリズムスクリプトを使用することを強くお勧めします。

    https://nmap.org/nsedoc/scripts/ssl-enum-ciphers.html

    Webサイトをテストするコマンドは、次のようになります。

    nmap --script ssl-enum-ciphers -p 443 www.website.org
    

    他のプロトコルにも同様のスクリプトがあり、SSHの場合は次のように機能します

    https://nmap.org/nsedoc/scripts/ssh2-enum-algos.html

    この情報は、ssh -vvvオプションのdebug2情報から収集できますが、nmapの方が自動化がはるかに簡単です。

    外部でテストしているWebサイトには、HTTPSベースのサービスの廃止されたSSL/TLS暗号についての情報を提供する次のようなサイトがあります。

    https://www.ssllabs.com/ssltest/

現時点では、「SSHのSSLテストWebサイトと一致するテストWebサイトのようなQualys」はありません。SSHの同様の情報を取得する最も近い方法は、ssh -vvvオプションを使用するか、nmap NSEスクリプトssh2-enum-algos.htmlを使用することです。これには他の解決策がありますが、nmapはおそらく実装が最も簡単であり、非常にスクリプト化が可能なため、膨大な数のIPを簡単にテストできます。

4
Trey Blalock