ADFSサーバーでは、インターネットから行われる認証はADFSプロキシ(Windows Server 2012 R2以降ではWebアプリケーションプロキシ)を経由します。
今回のテーマは、ADFSプロキシでロックアウトを設定し、一定回数以上、間違ったユーザー名/パスワードを入力したときにサインイン自体をできなくさせてしまうという設定です。
という話をすると、こんなことを思い浮かべる人もいるかもしれません。
「Active Directoryにはロックアウトの設定があるのだから、ADFSでロックアウトの設定をしなくてもよいではないか?」という疑問です。
確かにADのロックアウトを使えば、ロックアウト設定を一元管理できて便利ですが、
ADユーザーアカウントをロックアウトされると、ユーザーは自分のPCにサインインすらできなくなってしまうという問題点があります。
悪いヤツがADFSプロキシに不正アクセスして、ユーザー名/パスワードを適当に何回か入力して、ロックアウトさせてしまえば、ユーザーを困らせる攻撃だって成立するのです。(一般にDoS攻撃と呼ばれている攻撃手法ですね)
このような問題を回避するため、ADFSではADとは別にロックアウト設定を持ち、ADFSプロキシ経由の不正アクセスに対しては、ADFSプロキシ経由のアクセスだけをロックアウトできるようになっています。
■ ■ ■
おさらい
Office365をはじめとするADFSによるシングルサインオンは社内ネットワーク経由のアクセスと、インターネット経由のアクセスでは異なる動作になります。
Office365の場合でお話をすると、社内ネットワークからユーザー名を入力すると、
自動的にシングルサインオンの処理が働き、Office365のサイトにアクセスできるようになります。
それに対して、インターネット経由でユーザー名を入力すると、
ADFSプロキシにリダイレクトされるため、ユーザー名/パスワードの入力を求められます。
ユーザー名/パスワードが正しいことが確認できると、Office365のサイトにアクセスできるようになります。
ロックアウトを設定しよう
ここまでお話すれば、「ADFSプロキシにアクセスすると、ユーザー名/パスワードの入力を求められるのであれば、ADFSプロキシでロックアウトの設定を実装するのだな」ということは想像がついていると思います。
はい、そのとおりです。ただし、正確にいうとADFSサーバーからロックアウトを設定すると、ADFSプロキシにその設定が反映されるという仕組みになります。
まずは現状の設定を確認しましょう。設定の確認にはGet-AdfsPropertiesコマンドレットを使います。
設定を確認すると、3つの設定項目があることがわかります。
・ExtranetLockoutThreshold:ロックアウトされるまでの回数
・ExtranetLockoutEnabled:ロックアウト設定の有効/無効
・ExtranetObservationWindow:ロックアウト期間
これらの設定を変更します。
■ロックアウトの有効化
Set-AdfsProperties –EnableExtranetLockout $True
■ロックアウトされるまでの回数を5回に設定
Set-AdfsProperties –ExtranetLockoutThreshold 5
これで設定は完了です。
確認してみましょう。
一定回数以上パスワードを間違えた後に、正しいパスワードを入力すると、
正しいパスワードを受け付けなくなっていることが分かります。
ただし、画面を見てもわかるように「ロックアウトされた」とか、全くわかりません。
強いてあげるなら、
イベントビューア-ADFSログのイベントID342で識別することができます。
ユーザー名/パスワードを間違えた場合は以下のように表示されますが、
ロックアウトされた場合は
と、なります。
違いはわかりましたか?