Как починить «сломанный» сервер VDS на Windows



    Закончился наш конкурс «Админ 80 уровня». Задачей участников было починить «сломанный» VDS сервер. Поздравляем наших Победителей. Главный приз уходит в Саратов, Михаилу Гоч. Победитель справился с задачей менее чем за 2 часа, отличный результат.
    Все участники конкурса, не занявшие призовые места, получат 10% скидку на пользование серверами VDS от компании RUVDS пожизненно. Вам будет выслано персональное уведомление на e-mail, указанный при регистрации в конкурсе.

    Выкладываем решение.

    Итак, начнём!
    Пробуем подключиться к серверу стандартным способом через RDP-client. Не выходит. Возможно это и есть одна из задумок конкурса?
    Подключаемся через аварийный режим в личном кабинете. Подключились!

    Замечаем, что аватарка администратора не загрузилась, поэтому, вероятнее всего, используется non-gui режим.
    Вводим учетные данные. Перед нами тёмный экран. Обычно в non-gui режиме сразу открывается cmd.exe, но в данный момент утилита почему-то незапущена.
    Вероятно, у текущего пользователя нет прав на её запуск или сам исполняемый файл отсутствует.

    Отправляем команду ctrl+alt+del, нажав на кнопку и открываем Task manager. Нам нужно как-то запустить интерпретатор командной строки.
    File > New Task… как раз подходит для этой цели. Пробуем дать необходимые права для файла cmd.exe, для этого выполняем команду:
    cacls «c:\windows\system32\cmd.exe» /G Administrator:R (используем cacls, так как запуск icacls под текущим пользователем запрещён)

    Теперь пробуем запустить cmd.exe через New task… Получилось!
    Далее, нам нужно установить компоненты системы, которые необходимы для запуска операционной системы в GUI режиме.
    Выполняем:
    cacls «C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe» /G Administrator:R

    Затем запускаем powershell и выполняем команду:
    Add-WindowsFeature Server-Gui-Shell, Server-Gui-Mgmt-Infra

    Дожидаемся завершения установки, перезагружаемся. Теперь мы в привычном GUI-режиме, так гораздо удобнее!
    Замечаем, что отключено правило, разрешающее входящие подключения на порт 3389. Вот что нам мешало подключиться к нашему серверу по RDP. Включаем и подключаемся через RDP.
    Устанавливаем IIS Manager и открываем его.

    Заходим в раздел Application Pools и видим, что пул ruvds contest отключен. Включаем…
    Далее идём в корневую директорию сайта и открываем файл web.config.

    Он содержит следующее:
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
    <system.webServer>
      <security>
       <requestFiltering>
        <verbs allowUnlisted="true">
         <add verb="GET" allowed="false" />
        </verbs>
       </requestFiltering>
      </security>
            <staticContent>
                <remove fileExtension=".png" />
            </staticContent>
            <defaultDocument enabled="false" />
     </system.webServer>
    </configuration>
    
    <add verb="GET" allowed="false" />  <!-- мы не сможем получить контент страницы через http GET-запрос -->
    <remove fileExtension=".png" /> <!--  возникнут проблемы с загрузкой файла с расширением *.png -->
    <defaultDocument enabled="false" /> <!-- веб-сервер не сможет определить документ по умолчанию -->
    

    Приходим к выводу, что нам следует поскорее избавиться от данного файла.
    Удаляем…

    Вроде бы всё готово… Пробуем открыть адрес YOUR_VPS_IP. Невозможно установить соединение. Похоже, нужно заглянуть в настройки файрвола.
    Находим правило World Wide Web Services (HTTP Traffic-In) и замечаем, что для профиля public данное правило не действует.
    Активируем правило.

    Пробуем загрузить страницу — загрузка началась, но происходит очень медленно… Возможно стоит заглянуть в настройки сайта.
    Заходим в настройки Limits для нашего сайта.
    Замечаем галочку возле Limit bandwidth usage и значение 1024. С такими настройками быстрая загрузка страницы невозможна. Убираем…

    Пробуем загрузить страницу…


    Вы обладатель бесплатного VPS на год!

    Список победителей, так как имена мы не спрашивали, указываем только начальные символы e-mail:
    1. место: mgot
    2. место: a.svyat
    3. место: nightw
    4. место: wolf_k


    Надеюсь, это было увлекательно. До новых встреч!
    Напишите в комментариях, что вам не понравилось, или понравилось, что бы вы хотели изменить в следующий раз. Спасибо.
    RUVDS.com
    858.87
    RUVDS – хостинг VDS/VPS серверов
    Share post

    Comments 14

      +3
      Маленькое уточнение:
      Устанавливаем IIS Manager и открываем его.

      Не противоречит правилу 3:
      3. Нельзя отключать firewall и переустанавливать IIS (веб-сервер)

      ?
        –1
        Не противоречит, так как это разные компоненты.
        0
        А список всех победителей?
          0
          Опубликовали в конце статьи
          0
          Зачем ставить GUI, если из cmd/powershell все и так прекрасно настраивается?
          К тому же в Core версии ОС менее прожорлива.
            0
            Спасибо за ваш комментарий! GUI ставить не обязательно, это лишь один из вариантов решения задачи, который нам показался относительно простым.
              +1
              Покажите команды…
                0
                netsh advfirewall firewall set rule group=«remote desktop» new enable=Yes — Rdp
                netsh advfirewall firewall add rule name=«Open Port 80» dir=in action=allow protocol=TCP localport=80 — правильноее поменять существующее правило, но в моём случае так оказалось быстрее.

                C IIS в powershell можно работать через WebAdministration(ps snap-in или C#) или напрямую в конфиги писать.
                Import-Module WebAdministration
                Start-WebAppPool 'pool-name'

                Лимиты правил в applicationhost.config через блокнот. Можно было на ps написать какой-нибудь replace.
              0
              не так хотелось скидку, как кружку…
                +1
                Есть вариации на тему.
                cmd.exe запрещен, но его 32-битная версия из SysWOW64 — нет. Запускаем — есть командная строка.
                Чтобы включить RDP вводим что-то вроде netsh firewall set service type = remotedesktop mode =enable
                Вместо powershell.exe можем использовать dism.exe, чтобы включить нужные фичи.

                Два часа потрачено на разгадку, и, уверен, гораздо больше времени и сил было потрачено на подготовку задания и развертывания.
                Спасибо большое, было увлекательно и интересно.
                  +3
                  > так как имена мы не спрашивали… символы e-mail: 1 место: mgot
                  > Главный приз уходит в Саратов, Михаилу Гоч
                  Ну вот, сдали победителя)

                  А вообще включение IIS кажется слишком простым заданием после дачи разрешений на cmd.exe, включения powershell, произнесения волшебной команды по установки той-самой-нужной службы…

                  пс: ожидал увидеть что-то вроде оживления Windows из что-то вроде «ntldr is missing», затем фикса ошибок из safe-mode, поиск нужной dll-ки, замена/восстановление шэлла, вычищение всяких зловредов. В догонку освобождение файлов от всяких публично известных крипто-локеров. В догонку к IIS можно добавить поднятие MSSQL, например очищение transaction log'a, или еще что-нибудь в этом духе)
                    0
                    Ничего страшного, если что-то вообще можно починить, это будет починено, вопрос времени. )
                      0
                      На самом деле, это только ответ простой. Путь к ответу был ветвист. Те, кто не используют Core, не с первой попытки поймут, что это Core. Если вы привыкли к «правильному» icacls, то вряд ли вспомните про cacls сходу.

                      Перепробовано было многое. Сначала сервер не логинил вообще — не вводился пароль. Может тормозил после развертывания. Пробовал
                      — ключ реестра, отвечающий за RDP
                      — SRP с Applocker
                      — восстановление системы DISM — битых файлов не оказалось
                      — игры с ComSpec
                      — запуск сессии от Local System, в надежде получить доступ к файлам
                      — тщетные попытки вызова mmc
                      — сомнения — оживет ли сервер после перезагрузки.
                      — копирование с живой системы cmd.exe, explorer.exe, InetMgr.exe, через Clipboard RDP. Тут-то я и начал понимать, что если GUI все равно не показывается, то его просто нет.
                      — тяжкие раздумья, понадобится ли мне install.wim, чтобы вернуть GUI.

                      Так что побегать пришлось.
                        0
                        Квест ещё тот получился, я смотрю. «Ачивок» на открывали. Надеюсь, высшие силы от такой подставы в продакшене уберегут…

                    Only users with full accounts can post comments. Log in, please.