Закончился наш конкурс «Админ 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:
- место: mgot
- место: a.svyat
- место: nightw
- место: wolf_k
Надеюсь, это было увлекательно. До новых встреч!
Напишите в комментариях, что вам не понравилось, или понравилось, что бы вы хотели изменить в следующий раз. Спасибо.
Комментарии (14)
Pariah
15.04.2016 12:30Зачем ставить GUI, если из cmd/powershell все и так прекрасно настраивается?
К тому же в Core версии ОС менее прожорлива.ruvds
15.04.2016 12:31Спасибо за ваш комментарий! GUI ставить не обязательно, это лишь один из вариантов решения задачи, который нам показался относительно простым.
Wolf_ktl
15.04.2016 13:21+1Покажите команды…
Pariah
17.04.2016 08:37netsh 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.
gotch
15.04.2016 15:29+1Есть вариации на тему.
cmd.exe запрещен, но его 32-битная версия из SysWOW64 — нет. Запускаем — есть командная строка.
Чтобы включить RDP вводим что-то вроде netsh firewall set service type = remotedesktop mode =enable
Вместо powershell.exe можем использовать dism.exe, чтобы включить нужные фичи.
Два часа потрачено на разгадку, и, уверен, гораздо больше времени и сил было потрачено на подготовку задания и развертывания.
Спасибо большое, было увлекательно и интересно.
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, или еще что-нибудь в этом духе)gotch
15.04.2016 16:21Ничего страшного, если что-то вообще можно починить, это будет починено, вопрос времени. )
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.
Так что побегать пришлось.foxmuldercp
16.04.2016 21:44Квест ещё тот получился, я смотрю. «Ачивок» на открывали. Надеюсь, высшие силы от такой подставы в продакшене уберегут…
LoadRunner
Маленькое уточнение:
Не противоречит правилу 3:
?
ruvds
Не противоречит, так как это разные компоненты.