私は大きな疑問があるのでここに書いています。カスタム開発されたWebアプリケーション(ASP.NET)で技術的なセキュリティ評価を行っています。
アプリケーション:
私の評価はリスクに基づいており、HTTPSを介したNTLMに関連して公開されているリソースをいくつか読んだことがあります認証を変更するかどうかを提案する必要があるかどうか、明確なアイデアを思いつきません
私は学んだ:
kind of
クライアントをKerberosに移動しようとしています。これは本当ですか?これはインターネット向けのWebアプリに適用されますか?私の難問は:
安全なプロトコルと暗号を使用する必要がありますが、HTTPSの使用は素晴らしいです。これをテストする脆弱性スキャナーがいくつかあります。次に2つの例を示します。
NTLMv1とNTLMv2のどちらを使用するかは指定しませんでした。前者(NTLMv1)の場合、これは間違いなく発見であり、懸念の原因となります。このプロトコルが今日特に公共向けのアプリケーションで使用されている理由はありません。 NTLMv2は完全に問題なく、実際のパスワードがサーバーに送信されないチャレンジ/レスポンスで機能するため、代替手段よりも安全であると考える人もいます。例として、Microsoft SharePointおよびExchangeは、NTLM認証を使用して、一般に公開されているコンポーネントを持つことができます。
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はこれを軽減します。それはまた達成します:
このアプローチでは、Webアプリケーションの再構築が必要になります。次の2つの注意点に注意してください。
これらの認証の問題に対処する最善の方法は、シングルサインオン(SSO)プロバイダーを実装することです。それでも、新しい認証方法のためにWebアプリケーションを再構築する必要があります。ただし、企業の認証を集中化するため、長期的にはこれが最良のアプローチです。