web-dev-qa-db-ja.com

IIS)のNTLM(HTTPS経由)はインターネットに接続するWebサイトに適しています

私は大きな疑問があるのでここに書いています。カスタム開発されたWebアプリケーション(ASP.NET)で技術的なセキュリティ評価を行っています。

アプリケーション:

  • インターネットに面しています
  • HTTPSを使用します
  • 使用IIS NTLMS認証とNTLMSSPメッセージプロトコル
  • HSTSの欠如
  • ASP.NETフレームワークは更新されていません(v.4.0.xxx)-これは別の観察になります

私の評価はリスクに基づいており、HTTPSを介したNTLMに関連して公開されているリソースをいくつか読んだことがあります認証を変更するかどうかを提案する必要があるかどうか、明確なアイデアを思いつきません

私は学んだ:

  • NTLM over HTTPSはベーシックまたはダイジェストよりも優れています。NTLMはネットワーク経由で資格情報を送信せず、暗号化されたチャレンジ/レスポンスメッセージを送信するためです。
  • マイクロソフトはkind ofクライアントをKerberosに移動しようとしています。これは本当ですか?これはインターネット向けのWebアプリに適用されますか?
  • NTLMは、過去の、最近の複数の脆弱性の影響を受けていました:CVE-2019-1040、CVE-2019-1019。私の理解では、SMBリレー攻撃のシナリオが当てはまるはずですが、可能性は低いようです(攻撃者はネットワーク内の特権的な位置にあり、攻撃をリレーする別のサーバーを持っている必要があります)。 、プロトコルには懸念事項があります: https://www.preempt.com/blog/the-security-risks-of-ntlm-proceed-with-caution/
  • NTLMはMFAをサポートしていません
  • NTLMプロトコルが古い

私の難問は:

  • 「この認証プロトコルを非セキュアとして指摘する必要がありますか?」 (つまり、システム所有者に認証プロトコルを変更するように言うべきですか?)
  • 私がそうした場合、「代替案またはリスク是正策は何ですか?」
5
Lux

安全なHTTPS

安全なプロトコルと暗号を使用する必要がありますが、HTTPSの使用は素晴らしいです。これをテストする脆弱性スキャナーがいくつかあります。次に2つの例を示します。

  1. Qualys SSLサーバーテスト
  2. Nmap ssl-enum-ciphers

NTLMv2は問題ありません

NTLMv1とNTLMv2のどちらを使用するかは指定しませんでした。前者(NTLMv1)の場合、これは間違いなく発見であり、懸念の原因となります。このプロトコルが今日特に公共向けのアプリケーションで使用されている理由はありません。 NTLMv2は完全に問題なく、実際のパスワードがサーバーに送信されないチャレンジ/レスポンスで機能するため、代替手段よりも安全であると考える人もいます。例として、Microsoft SharePointおよびExchangeは、NTLM認証を使用して、一般に公開されているコンポーネントを持つことができます。

Windows認証の難しさ

Kerberosなし

NTLM認証は、アプリケーションがWindows Authenticationを使用するように構成されている場合のデフォルトの認証方法です。これは、Kerberosには追加の構成手順が必要であり、クライアントはKerberosインフラストラクチャ(ドメインコントローラーなど)にアクセスする必要があるためです。これは、WebアプリケーションがLANまたはVPNを介してのみアクセスされる場合は問題ありません。ただし、一般に公開されているWebアプリケーションでは、これを実現可能なオプションにすることはできません。

セッション管理の欠如

Windows認証では、セッション管理を制御できません。たとえばForms Authenticationを使用するアプリを例にとると、セッションCookieは指定された時間の経過後に期限切れになるか、リクエストごとに延長されます。これは、Windows認証を使用するアプリケーションには当てはまりません。セッションを適切に終了しないことは、間違いなく発見です。

ブランドログインページはありません

Windows認証ログインボックスは、ブラウザによって提供される汎用ウィンドウです。多くの場合、ユーザーが「ブランド」のログインページを提供することを好みます。これにより、ユーザーはログインしようとしているアプリケーションをより意識することができます。 URLバーをチェックして、場所が正確で、証明書が有効であることを確認します(例:緑に着色)。これは、フィッシング防止と優れたセキュリティ意識に関するエンドユーザー教育を活用しています。あなたの環境によっては、これは発見かもしれません。

ブルートフォース保護なし

一般に、ブルートフォースログインの試みからWebサイトを保護する方法は2つあります。MFAとキャプチャです。デフォルトでは、Windows認証を使用するWebアプリケーションはMFAをサポートしていません。これを達成するためにモジュールを活用するプロバイダーを見つけるかもしれませんが、それらのプロバイダーの1つを使用していないと思います。キャプチャについては、それを実装する方法はありません。これには、ブルートフォースログインの試行についてWebアプリケーションを監視する必要があります。

これに対処するために、PowerShellモジュール WebsiteFailedLogins を作成しました。 READMEから:

このPowerShellモジュールは、IISホストされているWebサイトに影響する次のシナリオを識別するために作成されました。

  • ブルートフォースログインの試行-単一のIPアドレスからのログインの失敗回数が多く、多くの場合、単一のアカウントを対象としています。
  • パスワードスプレー試行-複数のユーザーアカウントで単一のパスワードを使用して、単一のIPアドレスから過度に失敗したログイン。
  • 分散ログイン試行-上記のいずれかの手法は、複数のIPアドレスから発生します。

Microsoft Logparserと構成ファイルを利用して、ターゲットWebサイトのIISログを解析します。しきい値に達するか、しきい値を超えると、標準出力、電子メール、またはWindowsイベントへの書き込みによってアラートが生成されますログ。Webサーバーでの変更は必要ありません。このモジュールは、IISログにアクセスできる別のシステムで実行することもできます。

古いフレームワーク

これは必ずしも調査結果ではありません。 IISを実行しているサーバー上で、Windows Updateまたはセキュリティ更新の管理に使用する製品を実行します。欠落している更新がある場合は、明らかに結果になります。 [〜#〜] cve [〜#〜] をチェックして、WebアプリケーションCLRのアドレス指定を確認します。おそらく、欠落しているセキュリティ更新がない場合、オープンなCVEはありません。

サポートコンポーネントの確認

古いフレームワークについて心配している場合は、これにより、アプリケーション自体が古いものであると思います。安全でないバージョンを使用していないことを確認するために、jqueryなどのサポートコンポーネントを調べます。これは発見を明らかにするかもしれません。

代替-フォーム認証

安全なプロトコルと暗号を使用するようにHTTPSが構成されている場合、最善の代替策はForms Authenticationです。ログイン認証情報はクリアテキストで送信されますが、安全なHTTPSはこれを軽減します。それはまた達成します:

  1. より良いセッション管理
  2. ブランドのログオンページ
  3. MFAまたはCaptcha統合

このアプローチでは、Webアプリケーションの再構築が必要になります。次の2つの注意点に注意してください。

  1. Webアプリケーションは、バックエンドで資格情報を認証する安全な方法を使用する必要があります。 KerberosであれLDAPSであれ、認証情報が安全でない方法でバックエンドで共有されていないことを確認してください。
  2. 安全でない方法でリソースにアクセスできないことを確認するために、アクセスをテストする必要があります。たとえば、デフォルトでは、MVCアプリケーションは静的ハンドラーを使用して、.jsファイルと.cssファイルを提供するときのパフォーマンスを向上させ、認証要件をバイパスします。場合によっては、これらのリソースは認証されたユーザーだけがアクセスできるようにする必要があります。

代替-SSO

これらの認証の問題に対処する最善の方法は、シングルサインオン(SSO)プロバイダーを実装することです。それでも、新しい認証方法のためにWebアプリケーションを再構築する必要があります。ただし、企業の認証を集中化するため、長期的にはこれが最良のアプローチです。

2
phbits