Закончился наш конкурс «Админ 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


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

Комментарии (14)


  1. LoadRunner
    15.04.2016 11:56
    +3

    Маленькое уточнение:

    Устанавливаем IIS Manager и открываем его.

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

    ?


    1. ruvds
      15.04.2016 12:03
      -1

      Не противоречит, так как это разные компоненты.


  1. Wolf_ktl
    15.04.2016 12:30

    А список всех победителей?


    1. ruvds
      15.04.2016 12:30

      Опубликовали в конце статьи


  1. Pariah
    15.04.2016 12:30

    Зачем ставить GUI, если из cmd/powershell все и так прекрасно настраивается?
    К тому же в Core версии ОС менее прожорлива.


    1. ruvds
      15.04.2016 12:31

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


    1. Wolf_ktl
      15.04.2016 13:21
      +1

      Покажите команды…


      1. Pariah
        17.04.2016 08:37

        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.


  1. t3sc0
    15.04.2016 13:45

    не так хотелось скидку, как кружку…


  1. gotch
    15.04.2016 15:29
    +1

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

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


  1. TimsTims
    15.04.2016 16:02
    +3

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

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

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


    1. gotch
      15.04.2016 16:21

      Ничего страшного, если что-то вообще можно починить, это будет починено, вопрос времени. )


    1. gotch
      15.04.2016 16:33

      На самом деле, это только ответ простой. Путь к ответу был ветвист. Те, кто не используют Core, не с первой попытки поймут, что это Core. Если вы привыкли к «правильному» icacls, то вряд ли вспомните про cacls сходу.

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

      Так что побегать пришлось.


      1. foxmuldercp
        16.04.2016 21:44

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