Порт 3389 открыт в интернет: что происходит дальше
Почасовая хроника того, что прилетает на Windows-сервер с момента, когда RDP становится доступен извне, как проверить, открыт ли ваш, и что с этим делать.
Что «открыт» значит на практике
Сервер с доступным из интернета TCP 3389 не является чем-то незаметным. Он перечислен в списках. Сканирующие сервисы непрерывно индексируют всё адресное пространство IPv4 — Shodan и Censys публикуют результаты в виде поиска, — и число машин Windows, отвечающих на 3389 в любой момент времени, измеряется миллионами.
Это значит, что открытость — не вероятность, а расписание. Вашему адресу не нужно быть кем-то найденным: он уже в списке, а список покупают, передают и пересканируют все, кто занимается подбором учётных данных.
Практическое следствие: у только что открытого сервера нет тихого периода. Нет окна, в течение которого можно оставить настройки по умолчанию и заняться защитой на следующей неделе.
Первая неделя, по часам
Картина повторяется достаточно стабильно, чтобы её предсказывать. Вот цифры, которых стоит ожидать на свежем Windows Server с открытым RDP и без защиты:
- Первый час — первая попытка подключения от сканера. Часто в течение нескольких минут, потому что массовые сканеры работают непрерывно, а не по расписанию.
- Первые сутки — от десятков до сотен неудачных входов. Имена учётных записей берутся из стандартного списка: Administrator, admin, user, test, sql, backup, scanner.
- Первая неделя — несколько тысяч в сутки, ровно, круглосуточно. Вас нашли уже несколько разных ботнетов, они не согласуются между собой, поэтому объёмы складываются.
- Первый месяц — часто десятки тысяч. Журнал безопасности начинает ротироваться так быстро, что старые события исчезают раньше, чем кто-то до них доберётся.
- Дальше — темп стабилизируется. Он не затухает: не существует механизма, по которому боты решили бы, что вас не стоит пробовать.
Что именно они пробуют
Два разных приёма дают похожий профиль трафика, и различать их важно, потому что защищаются от них по-разному.
Классический брутфорс долбит одну учётную запись — обычно Administrator — и перебирает список паролей. Он шумный, он срабатывает по политике блокировки и бесполезен против любого пароля, которого нет в списке.
Password spraying устроен наоборот: один распространённый пароль пробуется по одному разу против множества имён, потом пауза, потом следующий пароль. Он специально держится ниже порогов блокировки, и именно он обычно и срабатывает: в организации с достаточным числом учёток кто-нибудь да использует сезонный пароль.
Оба видны в одном и том же потоке 4625, и оба останавливаются одним и тем же — блокировкой источника до того, как он пройдёт список. Ни один из них не останавливается политикой блокировки: spraying создан её обходить, а брутфорс превращает её в самостоятельно устроенный отказ в обслуживании.
Как проверить, открыты ли вы
Делайте это снаружи собственной сети. Внутри 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 Gateway или бастион. Это убирает открытость, а не управляет ею, и всё нижеследующее — компромисс по отношению к этому пункту.
- Ограничить источник. Если множество легитимных адресов мало и постоянно — офисные диапазоны, точка выхода VPN, jump-хост — разрешите в фаерволе только их, остальное отбрасывайте. Отлично, когда подходит, и перестаёт подходить в тот момент, когда кто-то поехал в командировку.
- Автоматически банить атакующие источники. Следить за потоком неудачных входов и блокировать на фаерволе всё, что перешло порог, подсетями, навсегда. Это то, что делают, когда сервис обязан оставаться доступным с произвольных адресов.
- Уйти с 3389. Срезает нецелевой объём примерно на 90% и не защищает ни от чего, что ищет именно вас. Полезно как снижение шума поверх одного из пунктов выше, но никогда как замена.
Если закрыть нельзя
Множество серверов не может уйти за VPN — подрядчики, машины клиентов, команды, подключающиеся откуда угодно. Если это про вас, открытость — данность, и задача в том, чтобы сделать её выживаемой.
Включите Network Level Authentication, чтобы сессия никогда не создавалась для неаутентифицированного клиента. Требуйте длинные пароли и многофакторную аутентификацию для каждой учётной записи с удалённым входом. Переименуйте или отключите встроенную запись Administrator — это первое имя из любого списка. Держите хост пропатченным: у RDP уже бывали уязвимости, срабатывающие до аутентификации, и будут ещё.
И добавьте то, чего Windows не поставляет: то, что следит за потоком отказов и превращает его в правила фаервола. RDP Protector делает ровно это — баны подсетями, постоянные блокировки, переживающие перезагрузку, и белый список, куда ваш адрес попадает раньше, чем что-либо будет заблокировано. Один сервер бесплатен навсегда, и этого достаточно, чтобы увидеть свои реальные цифры, а не оценивать их.
FAQ
- Как быстро находят открытый RDP-сервер?
- Обычно в течение часа с момента открытия порта, часто за минуты. Массовые сканеры непрерывно обходят всё адресное пространство IPv4, так что обнаружение не зависит от того, интересуетесь ли вы кому-то персонально: ваш адрес уже в списках, которые постоянно пересканируют. Тихого периода, в течение которого можно отложить защиту, не существует.
- Бывает ли безопасно держать RDP открытым в интернет?
- Это можно сделать приемлемым, но не безопасным в смысле отсутствия риска. Если приходится, сочетайте Network Level Authentication, многофакторную аутентификацию, длинные уникальные пароли, отключённую или переименованную встроенную запись Administrator, актуальные обновления и автоматическую блокировку на фаерволе источников с повторяющимися отказами. Отсутствие любого из пунктов заметно повышает риск.
- Как проверить, открыт ли мой порт RDP из интернета?
- Проверяйте снаружи своей сети — Test-NetConnection -ComputerName <публичный-ip> -Port 3389 с другого подключения. Проверка внутри LAN не доказывает ничего, потому что внутренний трафик минует периметр. На сервере Get-NetTCPConnection покажет, слушает ли служба на 0.0.0.0, то есть на всех интерфейсах, включая публичный.
- Чем брутфорс отличается от password spraying?
- Брутфорс долбит одну учётную запись множеством паролей; spraying пробует один распространённый пароль против множества учёток, медленно, чтобы не задеть пороги блокировки. Успешным чаще оказывается именно spraying, и именно его политика блокировки учётных записей остановить не может. Оба видны как событие 4625, и оба останавливаются блокировкой источника на фаерволе.
