RDP

RDP – Remote Desktop Protocol (Удаленный Рабочий Стол)

В первую очередь, здесь пойдет речь о StandAlone Server. То есть, об отдельно – стоящем сервере. А не о контроллерах домена и корпоративных сетях. (там как раз требуются высококвалифицированные специалисты)

Ситуация, когда тебе в голову пришла некая идея и ты решил ее воплотить в жизнь. И для ее реализации тебе необходимо наличие Сервера, который ты арендуешь в неком дата-центре.

Выбрал подходящий тариф, заплатил деньги и вот у тебя уже есть Сервер, на котором установлено необходимое тебе ПО. В большинстве случаев, для таких пробных проектов достаточно Windows 2003 Server. Вполне бюджетно и эффективно.

Техподдержка тебе выдаст IP адрес, Логин и Пароль для RDP доступа, и ты начинаешь свое путешествие, полное …, ну вообщем – мало не покажется.

По умолчанию, можно сказать, что этот сервис в Windows настроен так, чтобы доставить пользователю немало хлопот и проблем.

Хотя, конечно – он сам по себе работает и прекрасно выполняет свою функцию. Но со временем, (иногда, это может оказаться слишком поздно) беспечный владелец удаленного сервера ужаснется осознав, что реально творится с его системой и какая толпа жаждущих крови стоит вокруг стен его крепости.
Это как отключить инфракрасный фильтр у видеорегистратора и начать вдруг, видеть источники видеосъемки – камеры ГИБДД с фотофиксацией, и сигналы пультов дистанционного управления телевизором.

Ты начинаешь видеть и потом, возможно понимать.

С одной стороны – разработчики программного обеспечения делают вид, что они делают свои системы для обычного человека, и ты начинаешь этому верить.

Но с другой стороны – эти же разработчики, предполагают, что клавиатуру может взять в руки только сертифицированный специалист. И чтобы сертификат был этого года.

Такой вот парадокс.

Давай я расскажу тебе как все выглядит на самом деле.

А на самом деле, орды кулхацкеров прочитав дюжину строк на форумах скачивают готовые списки серверов у которых открыт RDP порт. И начинают ломиться на твою машину. Кто в ручную, (но это редко), а в основном разными программами, запуская словари по перебору: логин – пароль. И никто их ни в чем не ограничивает. Им там даже тесно порой.

Terminal Services Manager

Причем, я вот смотрю на логи, и вижу, что в большинстве своем, это одни и те же словари.

А твой сервер – вынужден отбиваться. А ты – не в курсе. И не понимаешь, почему у тебя низкая производительность, почему долго выполняются запросы.

Ты же о великом думаешь. Стратегически, о функционале. А тут – какие то тормоза не понятные.

Поэтому, ты начнешь оптимизировать память, удалять временные переменные, дефрагментировать диски и т.д.

И может быть даже внимательно посмотришь на вкладку “События” в оснастке управления.

Не вижу - значит нет проблемы.

Но уверяю тебя, что ты там не увидишь причину! Потому, что там не отображаются попытки неверного ввода логина и пароля. Возможно, ты даже будешь спорить с другими людьми, что тебя вот не ломают, потому, что боятся или уважают.
Нет. Уверяю тебя, просто разработчики – они такие веселые парни. И изначально немножко перевешивают чашу весов в сторону тьмы. Они говорят, что если бы эти события отображались бы, то нагрузка на сервер была бы более высокой.
Но вот, только надо заметить, что первое, что каждый должен сделать – это включить это отображение. Хотя, конечно существуют полностью закрытые от внешнего мира некие технологические системы, где никто и никогда ни чего не взламывает. Но там как раз такие системы и обслуживают целые команды профи.

Так, что давай, для начала – поправим эту ситуацию и приведем систему в нормальный рабочий вид.

Что мы сделаем:

  1. Ограничим количество разрешенных одновременно открытых сеансов.
    (Если ты сам администрируешь свой удаленный сервер, зачем тебе надо, чтобы кто-то кроме тебя одновременно с тобой управлял сервером?
    Хотя, еще один может понадобиться – например для техподдержки. А больше – зачем?)
  2. И включим свет. То есть позволим системе отображать в оснастке “Events” неудачные попытки входа.
    И вот тут – ты удивишься.
  3. Запретим доступ к серверу с более чем 3000 IP адресов, которые собственно говоря ничем другим не занимаются, кроме доставлять людям проблемы. Импортируем Черный Список.

Если ты от нечего делать сделаешь запросы в сети о настройке RDP, то встретишь очень много советов (и я сам долго был уверен, что они весьма эффективны, пока не решил провести эксперимент)

Суть массовых рекомендаций сводится к тому, (и это выгляди вполне логично и разумно), что необходимо:

  1. Ограничить количество разрешенных ошибочных попыток входа.
    (Если ты не пьян – то 3х раз тебе хватит, чтобы понять, что клавиатура не на том языке и не на том регистре.)
  2. Ограничить время для этих 3х попыток.
    (Можно ведь, 3 раза за неделю, а можно – 3 раза в секунду, да еще и многопоточно. И потому, как никто из кулхацкеров не тычет в клавиатуру одним пальцем долго выбирая букву, то там идет приличный трафик, который за 10 минут, которые определили разработчики успеет перебрать несколько сотен, пару тысяч комбинаций.)
  3. Установить время блокировки для входа в случае, если ты пьян, или если – ты – это не ты.
    (По умолчанию – 3 минуты ни кого не огорчат. Выставим пол-часа. Пусть устанут ждать.)

Признаюсь, я очень обрадовался, когда нашел такие статьи, и тут же все сделал как надо. Был уверен, что вот теперь можно сосредоточиться на самом проекте, и не беспокоиться сильно за безопасность.

Local Security Settings

Однако.

Как были десятки тысяч попыток в течении суток. (а я не сижу уткнувшись в монитор целый день, но раз в день захожу проверить работоспособность своих приложений) Так все и осталось.

И все никак не мог понять, как же так, вот я вижу, что у меня настроено 3 попытки и потом блокировка на 30 минут. А этот бот фигачит уже шесть часов без устали перебирая логины от “Administrator” до “ферапонта”.
Но все было не досуг. И потом – я же все настроил, значит – должно работать!

Однажды, пришлось переносить один свой проект с одного сервера на другой, по причине выхода из строя RAID массива. И старый сервер, в течении некоторого времени был мне доступен, но на нем можно было без опасений попробовать провести опасные и не очень эксперименты. Поэтому – я решил на нем проверить.

Для этого, в течении нескольких минут пытался залогиниться с неправильным паролем, ожидая, что вот сейчас меня система аутентификации заблокирует. Фигушки. Ничего не произошло.

Я потратил пару дней на более детальное изучение этой проблемы. Погрузился в мануалы и скудные комментарии. Все как один уверяют на форумах – такой способ супер эффективный.

И вот, что я теперь тебе скажу:

  • во первых – этот способ работает только под контроллером домена (не знаешь – что это такое? Плюнь – это тебе не надо) а для standalone server – нужно погрузиться в специальные знания и выучить заклинания.
  • во вторых  – оказывается, и видимо многие ошибочно и наивно предполагают иное (как и я сам), что при реализации такого механизма будет заблокирован тот, кто пытается войти.
    Нет – как раз, не он. А будешь заблокирован Ты!
    Да – именно твой аккаунт будет заблокирован на то время, которое там ты прописал. И ты сам ни за что не сможешь войти на свой собственный сервер!

Выходя из дома и заперев дверь – сломаю замок. Отморожу уши – назло Бабушке.

Но думаю, что расставание с такими иллюзиями – стоило пары дней мучений.

С преамбулой покончили. Давай займемся делом.

1. Ограничим количество разрешенных одновременно открытых сеансов.

Находим и открываем оснастку “Terminal Services Configuration”:

Terminal Services Configuration

В этой оснастке выбираем открываем в “свойствах” RDP-Tcp вкладку [Network Adapter], где и ограничиваем “Msximum Connections” до 2х, для всех сетевых адаптеров.

RDP-Tcp Properties

Жмем ОК. Теперь, одновременно с тобой сможет зайти только еще один человек. А без тебя – всем желающим придется становиться в шеренги по двое.
В очередь – сукины дети!

2. Включаем отображение неудачных попыток входа в оснастке “Events”.

Находим и открываем оснастку “Local Security Settings”  и в ней – раздел: “Audit Policy”:

Local Security Settings - Audit Policy

И изменяем значения свойств всех записей “Audit” – как показано на скриншоте. Надо будет затем перезагрузиться, чтобы изменения стали активны.

Можно подождать и через несколько часов посмотреть на теперь уже реальную картину, чтобы осмыслить в каком мире мы живем, и кто нас в действительности окружает.

Event Viewer - after

3. Запрещаем доступ к серверу от 100% зловредных IP адресов. Импортируем Черный Список.

Тут у тебя 2 варианта:

  • Быстрый и сразу все.
  • Ручной, с пониманием, что именно ты делаешь.
Быстрый способ.
  1.  Заходишь на страницу Download BlackList и скачиваешь Пакетное обновление.
  2. Загружаешь файл пакетного обновления на свой Сервер.
  3. Открываешь оснастку “Local Security Settings”, Меню [All Tasks], раздел “Import Policies” и указываешь на загруженный файл. Жмешь [OK]
    Local Security Settings - Import Policies

После чего, у тебя должно получиться вот так:

Local Security Settings - Result

 Ручной способ, с пониманием.
  1. Вначале, необходимо создать дополнительную политику. Открываешь оснастку “Local Security Settings”.
  2. Выбираешь раздел “IP Security Policies on Local Computer” и правой кнопкой: “manage IP filter list and filter actions…”  запускаешь Мастер настройки.Local Security Settings - Create IP Security Policy
  3. Придумываешь имя для нового Правила. Например: “Block IP”.
    IP Security Policy Wizard - step2
  4. Дальше, на все вопросы жми [Next] и в завершении у тебя будет форма для редактирования свойств Политики.
    Block IP Properties
  5. Добавляем новое Правило. Жмем [Add]. и если стоит галочка Wizard, то запустится еще один Мастер, на вопросы которого нужно ответить.
    Security Rule Wizard
  6. Tunnel Endpoint.  жми [Next]
    Security Rule Wizard - Tunnel Endpoint
  7. Network Type. Там уже стоит “All network connections”.  жми [Next]
    Security Rule Wizard - Network Type
  8. IP Filter List.
    Добавляем новый Фильтр. Жмем [Add] и придумываем осмысленное Имя.
    Security Rule Wizard - IP Filter List
    Например: Block brute forcing IP.
    Список у него пока, что пустой. Сохраняем как есть.
    Local Security Settings - Manage IP filter list - Add
    жми [Next].
  9.  Добавляем Filter Action. Создаем [Add] новое действие, например с названием: Block Access, выбрав метод = Block.
    Security Rule Wizard - Filter Action - Block Access
    жми [Next].
  10. В результате, у тебя получится новая Политика, с новым Фильтром.
    Security Rule Wizard - Result
    жми [OK]
  11. Осталось только активировать ее.
    Правой кнопкой мыши жми на новом Правиле и выбирай “Assign”
    Local Security Settings - Sign
    После чего, новой Правило обретет зелененький индикатор.
  12. И вот только теперь – можно вводить в новое Правило “Block IP” новые IP адреса для блокировки. (Кликни по нему и дальше если ты все это проделал внимательно, то разберешься где нажать “Edit”, а где “Add”.
    Local Security Settings - Result - Add

Читайте вторую часть об RDP: RDP – DDoS

Читайте третью часть об RDP: RDP — “Долговременная Распределенная Атака Супер – Короткими Уникальными Сеансами”

 

 

 




  • 

    RDP: 2 комментария

    1. Заметил подозрительную сетевую активность по порту 3389, добавление в сетевой экран каспера, никак не остановило ее. Помогла ваша статья, спасибо!

    2. Автор явный еблан! Статья у него написана для рядового пользователя, ибо профи и так это всё знают, но рядовой пользователь ничего не поймёт из этой статьи так как написано максимально по идиотски! Пример: Находим и открываем оснастку “Terminal Services Configuration”: – где её находим? как? зачем? В общем вы поняли!
      Отдельно замечу что у большинства пользователей виндовс русифицированный, так что эта статья им совсем не поможет!

    Добавить комментарий

    Ваш e-mail не будет опубликован. Обязательные поля помечены *