リモートデスクトップ接続を制限する。夜間に接続できないように設定してみた

今日も運用寄りのお話。

ターミナルサービスなどでリモートデスクトップを使ってサーバーに接続してアプリケーションを利用している。

ある時、夜間にサーバーのメンテナンスがあるので、利用者をサーバーに接続させたくない。または毎晩決まった時間にバックアップを取得するなど夜間の作業があるため接続させたくない、そんなシーンを想定して設定をしてみます。

 

作業内容

タスクマネージャーでコマンドを実行しRDPの接続を無効にする。

 

コマンドファイルの準備

今日使うコマンドはchange logon コマンドです。

タスクスケジューラに仕掛けるコマンドファイルを用意します。

 

まずはテキストエディタを開いて

change logon /disable

echo y | logoff rdp-tcp

と2行を入力して「logoff.cmd」(コマンドファイル)として保存します。

 

ちなみに2行目はコマンド実行時ににRDPで接続しているユーザーがいたらこちらからログオフさせるように書いています。ここでのECHO表示は実行されたかどうか見るためで、実際にやるときは必ずしも実行されたウィンドウを表示する必要はないかも。

f:id:tetsunari_jp:20150401220435p:plain

.cmdファイルで保存します。

f:id:tetsunari_jp:20150401220442p:plain

拡張子.cmdで保存するとコマンドファイルが出来上がります。

f:id:tetsunari_jp:20150401220741p:plain

 

 

上のコマンドでdisable状態にすると接続できなくなるので指定の時間で元に戻るよう接続できるようにするコマンドも用意します。

change logon /enable

 

ここでは「logon.cmd」と保存します。 

f:id:tetsunari_jp:20150401220451p:plain

 

実行される時間に利用している人ががいるかもしれないのでコマンドが実行される5分前くらいにメッセージを出してみます。

msg * 夜間更新処理を行います。接続を終了してください。

これを「logoffmsg.cmd」で保存します。

f:id:tetsunari_jp:20150401220456p:plain

 

 

タスクスケジューラの設定

まず、設定するサーバーに管理者でコンソールまたはリモートデスクトップで接続します。次に、上で作成したコマンドファイルをC:¥にコピーします。

(今回はCドライブ直下で行ってしまいます。細かいこと言うとアクセス権とか色々ありますが今回は考えません)

タスクスケジューラの起動 

タスクスケジューラを起動します。

f:id:tetsunari_jp:20150330125548p:plain

 

タスクの作成をクリックして設定します。

f:id:tetsunari_jp:20150330125556p:plain

全般タブの設定

名前を仮に「夜間接続拒否」とします。

セキュリティオプションを「ユーザーがログオンしているかどうかにかかわらず実行する」にチェックします。

タスク実行に使うユーザーアカウントが管理者になっていることを確認します。

トリガタブの設定

接続拒否したい時間を設定します。

例えば毎日0:00に接続できないようにする場合は「毎日」にチェックして日時(今表示されている次の日)を入力します。

操作タブの設定

上で作成したコマンドファイルのパスを入力します。次の画像はlogoffコマンドを設定しているところです。

f:id:tetsunari_jp:20150401221252p:plain 

 

change logonコマンドの実行 

 実際にタスクが動いてchange logon /disableが実行されると下の画像のように「リモートログオンは現在無効です。」と表示されリモート接続できなくなりました。

f:id:tetsunari_jp:20150401091842p:plain

 

このままだと困るので「change logon /enable」を実行して接続できるように戻します。

無事接続できるようになりました。

f:id:tetsunari_jp:20150401091850p:plain

 

具体的な設定例としてまとめると

ログオフしたい時間の5分前に「logoffmsg.cmd」

接続しているユーザーをログオフさせて、以降接続させない時間に「logoff.cmd」

作業完了後、以降接続していい時間に「logon.cmd」

以上3つのタスクスケジュールを設定します。

 

 

ちなみにこの作業、CitrixのXenAppやXenDesktopの環境でも応用すること(コマンドを多少いじるだけ)で使う事ができます。

change logon /disable

echo y | logoff ica-tcp

 rdpをicaに編集するだけ。簡単ですね。

 

最後に注意点として、無効化した後はlogon状態をenableに戻すのを忘れないようにしてください。接続できませんので; 

また、この設定は、設定した管理者ですらリモート接続はできなくなります。設定を間違えると治すのに一手間必要です。遠隔地にある場合は抜け道を用意しておかないといけません。なのでまずはコンソールで触れる環境で試すことをお勧めしめします。

抜け道の設定例はついてはまたの機会にまとめようと思います。

 

また、あくまでも個人的な検証なので日々の運用で、と考えられる場合は自己責任で確実な検証の元、試してみてください。