2023年 09月 25日
そのままじゃ危険だらけ:リモートデスクトップの安全対策
近年、世間を騒がせているランサムウェアの被害は、VPN 装置の脆弱性を突いた所から始まりますが、その起点から、侵入したネットワークの中の、 Windows Remote Desktop (RDP) を踏み台に次々とシステムを則っていくパターンが多いようです。

大病院で起きた大規模サイバーテロ:閉塞網が作る慢心が産んだ惨事
Windows のリモートデスクトップを使う場合、必ずデフォルトのポートを変えておくことです。これで第一の被害は避けることができます。次のレジストリの PortNumber の値を10進数、3389 から、大胆に変更しておきます。小手先で一つ動かすのではなく、全然違う値にしておくことです。
C:¥ > regedit\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp

ポートを変更したら、リモートデスクトップで Server_IP : Port_nam で接続します。

スタート(田)ボタン > 右クリック > コンピュータの管理、から、ローカルユーザグループで、ユーザを作成し、Administrator グループに所属させ、るとリモートデスクトップは利用できてしまいます。。
使わない Administrator ビルトインアカウントは必ず無効化してあることを確認してください。Guest アカウントも無効化しておきます。Windows サーバの場合はデフォルトで利用可能状態なので、破ってくれ、と言わんばかりの抜け穴です。
多くのランサムウェアインシデントでは、ビルトイン Administrator に対してパスワードアタック仕掛けて、この Administrator アカウントとパスワードで水平攻撃によって幾つもの Windows Server が被害を受けたようです。Administraot は共通ですから、パスワード攻撃だけであっさりと落城します。
Administrator : ******** で単純に辞書攻撃すれば破られてしまいますが、Administrator を利用禁止にしておけば、UID+++++ : ****** でかなり複雑な攻撃をしなければならないので安全です。管理者として RDP 接続する場合は、root や Admin と言った、「いかにも管理者」アカウント名を使わない事です。これらのアカウント名も、攻撃者の辞書にはありそうなログイン名のリストに入っています。

その代わり、リモートデスクトップの専用ユーザを作成します。ここでは大人しくアルファベット英数字アカウントではなく、日本語の2バイト文字のユーザを使ってリモートデスクトップユーザとしてしまいましょう。それもアイディアです。
日本語のアカウントを作る
性善説を述べているわけではないのですが、悪意とヤル気のある連中は、まず日本国内の日本人ではなく、多くは足跡が残らない追跡が困難な海外からチャレンジして挑んできます。ここで日本語のユーザ ID を使うと、かなり彼らの「ヤル気」を削げるはず。使い勝手はいろいろ問題ありそうですが、こういう対策も効果がありそうです。

なお、Windows11 Pro 系OSでは、Administrartor グループに所属するユーザは自動的にリモートデスクトップが利用できるようになり、リモートデスクトップ機能を有効にすると管理者アカウントは自動的にセキュリティホールになってしまいます。排除することはできません。例えば、パワーユーザを作ってリモートデスクトップは使えるけれど、Administrator グループは、直接端末にログインしないとイケナイ、というルールが作れないのです。
本当に、この仕様はなんとかしてほしい。Windows がセキュリティに弱いと言われる一面です。

理想を言うと、リモートデスクトップユーザは、パワーユーザー(PowerUsers)のみとして、Administrators はリモートアクセスできないようにしたいのですが、Windows では Administrator に RDP 接続を禁止する方法は無いようです。知っている方が居ればコメント下さい。

万が一、悪意のある熱心な人々の侵入を受けても、被害をその PC だけに留めて置くには、端末にログインできても、その他のサーバーにはシングルサインオンできないようにするのが良いでしょう。
そのためには、PC とファイルサーバー、NAS、Web システムなどには、別々な ID/ パスワードで接続するようにして、重要なシステムやバックアップ装置などは、同じドメインで運用しないことです。
Windows には、接続した時のサービスのIDとパスワードを暗記してくれる実に脆弱な機能があるので、この「資格情報」の保存を拒否して、他のサービス、例えばファイルサーバーなどに接続する場合には、ログインダイアログを出すようにすると良いでしょう。
これにより一台の端末がハックされても、LAN 内部の共有システムの読み書き可能なデータを被害から守ることができます。最悪なのは、Administraotr でログインできてしまって、同じ Administraot で同じパスワードを使いまわしているケースです。

コントロールパネル > ユーザアカウント > 資格情報マネージャー > ”Windows 資格情報の管理” から、記憶されている接続サービスを選び「削除」

これで、記憶している資格情報は削除できます。
資格情報はコマンドラインでも削除できます。
C:¥ > net use ¥¥Target_name¥share /delete
でセッションを削除したら
C:¥ > cmdkey /delete:Target_name
でキーを削除します。
資格情報自体を保存させたくない。PC にログインしたら、LAN 内のサービスに接続するためには必ず ID / パスワードを求めるにはグループポリシーを修正しておきます。
C:\> gpedit
ローカルコンピュータ > コンピューター構成 > Windowsの設定 > セキュリティの設定 > ローカルセキュリティ > セキュリティオプション > 「ネットワーク アクセス: ネットワーク認証のためにパスワードおよび資格情報を保存することを許可しない」を有効にします。

これで、ユーザは何かネットワークのリソースを利用するためには ID とパスワードが必要になります。
ログオフなしでファイルサーバーとのセッションを切断するには-資格情報の削除
リモートデスクトップのパスワードを必ず求める
重要なシステムに関わらず、リモートデスクトップが利用できるサーバー側は、パスワードなしで、キャッシュされたセッション情報で接続されないように設定します。いったんどこかのリモートデスクトップターミナルが乗っ取られたらそこから芋蔓方式で乗っ取られるわけですから、被害を拡大させないよう、RDP接続を受ける端末は、全てのセッションごとにパスワードを求めるべきです。
C:¥> gpeditローカルコンピューターポリシー+コンピューターの構成+管理用テンプレート+WIndows コンポーネント+リモートデスクトップサービス+リモートデスクトップセッションホスト+セキュリティ
接続するたびにパスワードを要求する 有効

Windows のパスワード管理は
「複雑さの要件を満たすパスワード」
で大文字小文字混じりの英数字を指定できますが、一文字だけ変えた、「ほぼ使いまわしパスワード」や、ユーザ ID と同じパスワード、同じ文字の繰り返し、qwerty パスワードなど、ほぼ「使ってはイケナイパスワード」をノーチェックで受け付けてしまいます。Linux など UNIX 系 OS ならば、使える文字種、同じアルファベットや数字の繰り返し、前回と少なくとも数文字は変えなければならない、などの厳密なパスワードポリシーで厳しくパスワードを制御できますが、Windows にはこの機能がありません。
こうなったらやっぱり、Windows のセキュリティは「セキュリティ根性論」でユーザが自ら守るしかありません。システム管理者には手が届かない機能なのです。「複雑な要件を満たすパスワード」とは、は所詮 「Windows のセキュリティ上のアリバイ機能」、「一応はね、あるよ〜」程度の貧弱なもので、非常に機能が劣ります。
それでも最低限、「複雑さの要件を満たすパスワード」だけはグループポリシーでチェックしておくことです。もっとも、ドメイン上のグループポリシーの問題で、非ドメインユーザの場合は、ユーザ根性を鍛えるしかありません。実際の Administrator グループに所属するエンドユーザは無邪気にこの機能をオフにできるわけです。やっぱりパワーユーザに制限したほうがいい。
C:¥ > gpedit

パスワードを間違えた場合のロックアウトポリシーを設定します。例えば「3度パスワードを間違えたら1分間ログインできない」というルールです。辞書をつかった総当たり攻撃や、類推できるパスワード、数文字変えただけの、「準・使い回しパスワード」などの攻撃が連続するとアカウントがロックアウトされます。これはオフラインアタックには効きませんが、オンラインアタックには強力な防御手段になります。

ただし、よく「あなたのパスワードの強度をチェック!」などのサイトで試そうとしないことです。悪意とその気があるサイトでは、
「へぇ〜、そういうパスワード使っているんだ」
と教えているようなもので、それを収集してアタック用の辞書に登録しているのかもしれません。信用しないことです。CrockLib-Check の Windows 版の様なスタンドアローンのものがあるといいのですが、フリーウェアでも怖いですね。
パスワードポリシー強化各種設定のいろいろ、文字数、文字種を指定
Windows Server についてはこちらをご参考ください。
今すぐできる Windows リモートデスクトップの脆弱対策
Windows11po 23H2 ローカルアカウントのパスワードを変更できない