ポート 3389 をインターネットに開けると何が起きるか
RDP が公開された瞬間から Windows サーバーに届くものの記録、自分のサーバーが公開されているかの確認方法、そして対処。
「公開されている」の実際の意味
TCP 3389 がインターネット上のどのアドレスからも到達できるサーバーは、目立たない存在ではありません。すでに一覧に載っています。スキャンサービスは IPv4 空間全体を継続的に索引化しており——Shodan も Censys も検索可能な形で結果を公開しています——ある時点で 3389 に応答する Windows マシンの数は数百万に達します。
つまり露出は確率ではなく、予定表です。あなたのアドレスが誰かに特別に発見される必要はありません。すでに一覧に載っており、その一覧は資格情報攻撃を行う全員に売買され、共有され、再スキャンされています。
実務上の帰結は、公開したばかりのサーバーに静かな期間は存在しない、ということです。既定設定のまま置いておいて来週から堅牢化に取りかかる、という窓は開きません。
最初の 1 週間、時間を追って
パターンは予測できるほど一貫しています。RDP を開けたまま保護のない新品の Windows Server で見込まれる数字です:
- 最初の 1 時間——スキャナーからの最初の接続試行。大規模スキャナーは予定ではなく継続的に走査しているため、数分以内であることも珍しくありません。
- 初日——数十から数百件のログイン失敗。アカウント名は定番の一覧から来ます:Administrator、admin、user、test、sql、backup、scanner。
- 最初の 1 週間——1 日あたり数千件、昼夜を通して一定。この時点で複数の別々のボットネットに捕捉されており、互いに調整しないので量は積み上がります。
- 最初の 1 か月——しばしば数万件。セキュリティログの回転が速くなり、古いイベントは誰かが読む前に消えていきます。
- その後——ペースは安定します。減衰はしません。ボットが「ここは試す価値がない」と判断する仕組みは存在しないからです。
実際に何を試みているのか
異なる 2 つの手法が同じトラフィックの形をとります。防御が違うので、見分けることが重要です。
古典的なブルートフォースは 1 つのアカウント——たいてい Administrator——を集中的に攻め、パスワード一覧を回します。騒がしく、ロックアウトポリシーを発動させ、一覧にないパスワードには通用しません。
パスワードスプレーはこれを反転させます。よくあるパスワードを 1 つ、多数のアカウント名に対して 1 回ずつ試し、休止し、次のパスワードへ。設計上ロックアウトのしきい値を下回り続け、そして実際に成功するのはこちらです。アカウント数が十分な組織なら、誰かが季節のパスワードを使っているからです。
どちらも同じ 4625 のストリームに現れ、どちらも同じもので止まります——一覧を回り切る前に送信元を遮断すること。そしてどちらもロックアウトポリシーでは止まりません。スプレーはそれを回避するために作られており、ブルートフォースはそれを自作自演のサービス停止に変えてしまいます。
公開されているかを確認する
自分のネットワークの外から行ってください。LAN 内ではすべてが応答し、それは何も語りません。別の回線の別のマシンから:
# 自ネットワーク外のマシンから、サーバーの公開 IP に対して:
Test-NetConnection -ComputerName 203.0.113.10 -Port 3389
# サーバー上で:何が、どのインターフェイスで待ち受けているか
Get-NetTCPConnection -State Listen |
Where-Object LocalPort -in 3389,3390 |
Select-Object LocalAddress, LocalPort, OwningProcess
# そして現在どのファイアウォール規則が RDP を通しているか:
Get-NetFirewallRule -Direction Inbound -Enabled True -Action Allow |
Where-Object { ($_ | Get-NetFirewallPortFilter).LocalPort -contains 3389 } |
Select-Object DisplayName, Profile閉じる方法、望ましい順に
それぞれの選択肢が実際に取り除くリスクの量で並べると:
- そもそも公開しない。VPN、RD ゲートウェイ、踏み台経由でサーバーに到達する。これは露出を管理するのではなく取り除く方法で、以下はすべてこれに対する妥協です。
- 送信元を限定する。正規のアドレス集合が小さく安定しているなら——オフィスのレンジ、VPN の出口、踏み台——ファイアウォールでそれだけを許可し、残りは破棄します。当てはまるときは非常に有効で、誰かが出張した瞬間に当てはまらなくなります。
- 攻撃元を自動で遮断する。失敗のストリームを監視し、しきい値を超えたものをサブネット単位で恒久的にファイアウォール遮断する。任意のアドレスから到達可能である必要がある場合の答えです。
- 3389 から移す。無差別な量を約 90% 削り、狙って探してくる相手には何の防御にもなりません。上記のいずれかに加えるノイズ低減としては有用ですが、代替には決してなりません。
開けたままにするしかない場合
VPN の後ろに置けないサーバーは数多くあります——委託先、顧客所有のマシン、どこからでも接続するチーム。それが実情なら、露出は前提であり、仕事はそれを耐えられるものにすることです。
ネットワークレベル認証を有効にし、未認証のクライアントにセッションが作られないようにします。リモートログインできるすべてのアカウントに長いパスワードと多要素認証を要求します。組み込みの Administrator アカウントは改名するか無効化してください。どの一覧でも最初に試される名前です。ホストにはパッチを当て続けてください。RDP には認証前に成立する脆弱性が過去にもあり、これからもあります。
そのうえで、Windows が同梱していない部分を足します。失敗のストリームを監視し、ファイアウォール規則へ変換するものです。RDP Protector がやるのはまさにそれで、サブネット遮断、再起動を越えて残る恒久ブロック、そして何かを遮断する前にあなた自身のアドレスが入るホワイトリストを備えます。1 台は永年無料なので、推測ではなく実数を見るには十分です。
FAQ
- 公開された RDP サーバーはどれくらい早く見つかりますか?
- 通常はポートを開けてから 1 時間以内、多くは数分です。大規模スキャナーは IPv4 空間全体を継続的に走査しているため、発見は誰かがあなたを狙っているかどうかとは無関係です。あなたのアドレスはすでに、絶えず再スキャンされる一覧に載っています。堅牢化を後回しにできる静かな期間はありません。
- RDP をインターネットに直接公開しても安全なことはありますか?
- 許容できる状態にはできますが、リスクがないという意味で安全にはできません。やむを得ない場合は、ネットワークレベル認証、多要素認証、長く固有のパスワード、無効化または改名した組み込み Administrator アカウント、最新のパッチ、そして繰り返し失敗する送信元の自動ファイアウォール遮断を組み合わせてください。どれか 1 つ欠けるだけでリスクは目に見えて上がります。
- 自分の RDP ポートがインターネットから開いているか、どう確認しますか?
- 自分のネットワークの外からテストしてください——別回線から Test-NetConnection -ComputerName <公開IP> -Port 3389。LAN 内でのテストは何も証明しません。内部トラフィックは境界を迂回するからです。サーバー上では Get-WinEvent ではなく Get-NetTCPConnection が、サービスが 0.0.0.0、つまり公開を含む全インターフェイスで待ち受けているかを示します。
- ブルートフォースとパスワードスプレーの違いは?
- ブルートフォースは 1 つのアカウントを多数のパスワードで叩き、スプレーはロックアウトのしきい値を下回るよう、よくあるパスワード 1 つを多数のアカウントにゆっくり試します。実際に成功しやすいのはスプレーで、そしてそれこそアカウントロックアウトポリシーが止められない手法です。どちらもイベント 4625 として現れ、どちらもファイアウォールで送信元を遮断すれば止まります。
