web-dev-qa-db-ja.com

ロックアウトしないようにサービスアカウントを設定する必要があります

私は最近セキュリティチームと話し合っています。このグループから回答を得たいと思います。

現在のセキュリティポリシーでは、5回の試行に失敗するとドメインアカウントがロックアウトされると規定されています。これは、サービスアカウントを含むすべてのドメインアカウントに当てはまります。明確にするために、私はサービスアカウントを、そのユーザーとして認証および「実行」するためにアプリケーションが使用するアカウントと呼びます。

サービスアカウントのロックアウトを許可することには大きな問題があり、そのサービスに対して簡単なDoSが作成されます。アカウントを知っている悪意のある従業員は5回のログイン試行に失敗するだけで、データベースや他のサーバーと通信できなくなるため、サービスが停止します。新しいサーバーをセットアップするアカウントをロックアウトし、パスワードの最後に余分なスペースを設けました。

リスクを考えると、x回失敗したログインの後でサービスアカウントをロックアウトする必要があるのはなぜですか?

7
Brettski

自動ロックはオンライン辞書攻撃に対する防御メカニズムです。攻撃者は、正しいパスワードが見つかるまで、潜在的なパスワードを繰り返し試したいと考えています。 5回試行した後にブロックすると、攻撃が実際に機能しなくなります。

これは、パスワードisが辞書攻撃に対して脆弱である場合、つまりパスワードが人間の脳のプライバシーで生成された場合にのみ意味があります。そのような生物学的実体は、ランダムであることは単に得意ではありません。したがって、人間が選択したパスワードは強力ではなく、追加の保護が必要です。

serviceアカウントには、人間が選択した脆弱なパスワードを含めないでください。このようなパスワードは、設定フェーズ中にのみ管理者が入力します。管理者はnotを覚えておく必要があります。サービスアカウントのパスワードはコンピューターで生成する必要があり、非常にランダムである必要があります。 16個のランダムな文字(大文字と小文字、数字、および2つの句読記号)を使用すると、96ビットのエントロピーが得られます。これは、辞書攻撃に耐えるのに十分な量です。これは、サービスアカウントに必要なパスワードの種類です。そのようなパスワードを使用すると、自動ロックは役に立たなくなり、(ご存じのように)不便な副作用があるため、パスワードを無効にすることができます。


このようなランダムなパスワードを生成するには、任意のLinuxマシンで次のコマンドラインを使用します。

(dd if=/dev/urandom bs=12 count=1 2>/dev/null) | openssl base64 -a -e

Windowsでは、PowerShellを使用します。

$rng = New-Object System.Security.Cryptography.RNGCryptoServiceProvider
$buf = New-Object byte[] 12
$rng.GetBytes($buf)
[System.Convert]::ToBase64String($buf)
9
Tom Leek

ロックアウトされるユーザーの苛立ちを上回るメリットがあると思います。はい、悪意のある従業員があなたをDoSできますが、今やあなたはあなたが対処できる問題を抱えています。この不正な従業員を見つけて、彼に良い話をする必要があります。これは、悪意のある従業員が弱いパスワードを強引に押し付けるよりもはるかに優れています。 5回の試行でロックアウトされるという問題が発生している場合は、10にプッシュしてください。この数は十分に少ないため、ブルートフォースを実行してもあまりメリットはありません。

0
Krtko