【Active Directory】ログオンできる時間を制限すると同時にファイルサーバーの接続を切断する

computer-1
最近は働き方改革というバズワードが飛び交っていますが、その影響で社内システムの利用時間を制限させる企業も多いと聞いています。ウチの会社も社内のシステムを22時で全面利用禁止にする通達が出ました。

制限方法は色々ありますね、PCの電源自体をSKYSEAなどの資産管理ツールを使用してスケジュールで落とす、システムのサーバ側をスケジュールでシャットダウンする、中には時間になったら社内の電気のブレーカーを落とすという荒業もあるようで・・・。

個人的には電源を落とす系の制限は予期せぬPCトラブルが発生しそうであまり使用したくなかったので、PCへのログオンを制御する形で実現する事にしました。この設定方法について書いてみます。
なおこの設定を行うにはActiveDirectoryの環境が構築されている必要があります。

Advertisement

ActiveDirectoryでログオン時間を制御する

ActiveDirectory(以下AD)で作成したユーザーアカウントには様々な設定が可能です。
その一つがログオン時間の設定です。

AD_property1
ADのユーザーアカウントのプロパティの中にある「アカウント」タブの中に「ログオン時間」のボタンから設定可能です。

AD_property2
曜日ごとに1時間毎のログオン許可・拒否の設定が出来ます。
初期状態では全ての曜日・時間で許可の状態です。セルをクリックして右のラジオボタンで拒否に変えれば色が白にかわりその時間はログオン不可になります。
やや不便なのは1時間毎しか設定できない所でしょうか、タスクスケジューラでは出来るのに何故ここでは手を抜くのか・・・。

コマンドでも設定できる

1クリック毎にログオン時間を変更するのは1人ならいいですが、会社だと複数人変更する必要があるでしょう。ここはSEらしくコマンドで変更してみます。

net user (ユーザー名) /times:{曜日・時間 | all}

ドメインユーザーなら/domainを最後に付ける
コマンドはADサーバで実行する必要があります

曜日はM、T、W、Th、F、Sa、Suの頭文字で指定します。

時間は12時間または24時間表記で指定、環境によって変えてください。
12時間表記の場合は、AMまたはA.M.(午前)/PMまたはP.M.(午後)の形で表記します。

なお時間を指定しないとNull(空白)扱いになり、そのユーザーは全くログオンできなくなるので注意です。
曜日の期間設定はハイフン(-)で、曜日と時間はコンマ(,)で、 複数の曜日と時刻の区切りはセミコロン(;)で表記します。

例:「testuser」というドメインユーザーを毎日5時〜21時をログオン許可にする

net user testuser /times:M-Su,5:00-21:00 /DOMAIN

実行後は
logon_time
この通り毎日5時〜21時にログオン許可に変更されています。
(設定が変わるまで10秒前後タイムラグがあるようです)

拒否設定後はログオン不可になる

signin_deny
仮に7:00〜22:00の時間帯でログオン許可にしたとすると、22:00以降にログオンしようとしても画像のようなメッセージが出てログオン出来ません。

また最近ではADと連携してユーザー情報を取得しているシステムが増えましたが、そういったシステムも利用出来なくなります。利用出来なくなるといっても新規ログオン出来なくなるだけなので、システムが停止する訳では無いです(ユーザー情報を利用したシステムの場合はこの限りではありません)

SSL-VPNなどADと連携しているケースが多いと思うので、外出先からのVPN接続を制限するのにも利用できるのではないでしょうか。

自動的にログオフはされない

注意点として、あくまで新規のログオンを制限するのでログオン状態のまま時間を迎えてもログオフはされません。それどころかログオン状態だとシステムは利用できてしまいます。ファイルサーバー等も問題無く利用できてしまいます。

それを解決する方法があります。
それはグループポリシーでログオン許可時間が過ぎたらファイルサーバーへの接続を切断するポリシーを適用するという方法です。

グループポリシーでファイルサーバーの接続を強制切断する

そのポリシーが「ネットワーク セキュリティ: ログオン時間を経過した場合はユーザーを強制的にログオフさせる」です。

ネットワーク セキュリティ: ログオン時間を経過した場合はユーザーを強制的にログオフさせる
https://technet.microsoft.com/ja-jp/library/mt629078(v=vs.85).aspx
出典:Technet

多分想像されているのは、時間が来たら強制的にデスクトップ画面がログオフされてパスワード入力画面まで戻るといった挙動かと思います。いやこの文面だけ見たらそう思うのが普通です、Microsoftの説明はホンマにわかりにくい・・・。

説明を読むと

このポリシーが有効になっている場合、クライアントのログオン時間を経過すると、SMB サーバーとのクライアント セッションが強制的に切断されます。

となっています。つまりSMBプロトコルを使用するサービス、ファイル共有やプリンタなどのセッションを強制切断できるというものです。
上で説明したログオン時間と連動してログオン拒否時間になったらセッションを強制切断します。

ポリシーの場所は
[コンピュータの構成]→[ポリシー]→[Windowsの設定]→[セキュリティの設定]→[ローカルポリシー]→[セキュリティオプション]の中にあります。
GPEditor1
このポリシーを有効にすると、先程設定したログイン可能時間を過ぎるとファイルサーバーとの接続が自動的に切れます。ネットワークドライブを設定していればドライブに☓印が付いてアクセス出来なくなります。

なおこのポリシーは「既定のドメインポリシー」に設定しないと適用されません。
デフォルトでは「Default Domain Policy」という名前のポリシーです。

ファイルサーバーの使用を時間で制限させたい時は、有効なポリシーではないでしょうか。

まとめ

・ ADのユーザープロパティではログオン時間の許可・拒否が設定できる
・ グループポリシーを使用すればログオン時間と連動してファイルサーバーの利用も制限できる

という内容でした。

本当は時間が来たらログオフさせたかったのですが、情報が本当になかったのでグループポリシーではどうやら出来ないようです。
PCの中にログオフコマンドのバッチを仕込んでタスクスケジューラで動かせば出来そうですが、一元管理したかったんだよなぁと思うのは社内SEの性分でしょうかね。