company_banner

Linux Quest. Поздравляем победителей и рассказываем про решения заданий



    25 марта мы открыли регистрацию на Linux Quest, это Игра для любителей и знатоков операционной системы Linux. Немного статистики: зарегистрировалось на игру 1117 человек, из них 317 — нашли хотя бы один ключ, 241 успешно справились с заданием первого этапа, 123 — второго и 70 прошли третий этап. Сегодня наша игра подошла к концу, и мы поздравляем наших победителей!

    • Первое место занял Александр Тельдеков.
      Александр про себя сказал, что он самый типичный сисадмин. Живет в Волгограде, разные Unix-like системы администрирует уже лет двадцать. Успел поработать в интернет-провайдерах, банке, системном интеграторе. Сейчас работает удалённо в небольшой фирме, занимается облачной инфраструктурой для крупного зарубежного заказчика. Любит читать, слушать музыку. Про Игру Александр сказал, что игра в целом понравилась, он любит такие задачки. В одной из компаний на собеседовании занимался похожим на Hackerrank, было интересно.
    • Второе место — Роман Суслов.
      Роман из Москвы. Ему 37 лет. Работает Linux/Unix-инженером в компании «Инфосистемы Джет». По работе приходится заниматься администрированием и траблшутингом Linux/Unix-систем + SAN. Интересы самые разные: Linux-системы, программирование, reverse engineering, информационная безопасность, Arduino. Про Игру Роман отметил, что игра в целом понравилась. «Размял немного свои извилины и отвлекся от серых будней повседневной работы. :) Хотелось бы побольше заданий, а то не успел войти во вкус как игра уже закончилась».
    • Третье — alex3d.
      Алекс живет в Москве, занимается разработкой ПО. «Спасибо за контест, было интересно проверить свой скилл google-fu».

    Так же в рейтинге 10-ти лучших игроков:

    • Yevgeniy Saldayev
    • Маркел Мохначевский
    • Константин Коносов
    • Павел Сергеев
    • Владимир Боваев
    • Иван Бубнов
    • Pavlo Klets

    Мы понимаем, что вариантов решения всех наших задач много, ниже описаны одни из возможных вариантов решения.

    1. Первый этап


    Мы назвали его «А ты точно админ?», так как задание было довольно простое — починить теплый ламповый сервис.

    1.1. Интересные факты:


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

    1.2. Задание


    Ты вышел на работу в компанию, где долгое время не было грамотного специалиста по информационным технологиями. Прежде чем начать наводить порядок, нужно решить горящую проблему, блокирующую работу офиса.

    Уборщица зацепила шваброй кабель питания серверного шкафа. Питание восстановили, но очень важный веб-сайт всё равно не работает. Веб-сайт важный, потому что компания не очень озабочена информационной безопасностью, и на главной страничке этого можно найти в открытом виде пароль администратора от компьютера генерального директора.

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

    Все ждут оперативного решения вопроса!

    1.3. Решение


    1. Первым делом нужно поменять пароль root на виртуальной машине, чтобы получить на нее доступ. При запуске замечаем, что это Ubuntu 16.04 Server.

    Для сброса пароля рута рестартуем машину, при загрузке, в момент отображения меню grub-а, переходим в редактирование пункта Ubuntu кнопкой «e». Редактируем строчку linux, добавляем в конец init=/bin/bash. Грузимся через Ctrl+x, получаем баш. Перемонтируем корень с rw, поменяем пароль:

    $ mount -o remount,rw /dev/mapper/ubuntu--vg-root
    $ passwd

    Не забываем про sync, ребутаем.

    2. В условии сказано, что у нас не работает веб-сервер, смотрим:

    $ curl localhost
    Not Found
    The requested URL / was not found on this server.
    Apache/2.4.18 

    То есть по факту Apache запущен, но отвечает с кодом 404. Смотрим конфиг:

    $ vim /etc/apache2/sites-enabled/000-default.conf

    Тут же находится ключ — StevenPaulSteveJobs.

    Проверяем путь /usr/share/WordPress — такого нет, но есть /usr/share/wordpress. Правим конфиг и перезапускаем апач.

    $ systemctl restart apache2

    3. Пробуем снова, получаем ошибку:

    Warning: mysqli_real_connect(): (HY000/2002): Connection refused in /usr/share/wordpress/wp-includes/wp-db.php on line 1488

    БД не запущена?

    $ systemctl status mysql
    Active: active (running)

    В чём же дело? Надо разбираться. Для этого нужно получить доступ в MySQL, как это сделать описано в документации. Один из пунктов документации рекомендует нам прописать опцию skip-grant-tables в /etc/mysql/mysql.conf.d/mysqld.cnf. Тут тоже находится ключ — AugustaAdaKingByron.

    Поправляем права пользователю 'wp'@'localhost'. Запускаем MySQL, делаем его доступным по сети, комментируя в конфиге опцию skip-networking.

    4. После проделанных действий веб-сервер запускается, но сайт все равно не работает, так как

    Warning: require_once(/usr/share/wordpress/wp-content/themes/twentysixteen/footer.php): failed to open stream: Permission denied in /usr/share/wordpress/wp-includes/template.php on line 562

    Правим права на файл.

    $ chmod 644 /usr/share/wordpress/wp-content/themes/twentysixteen/footer.php
    

    Обновляем страницу, заходим на сайт и находим ключ — BjarneStroustrup! Мы нашли все три ключа, наш директор может работать, мы расшифровали файлы бухгалтерии. Все счастливы, а у тебя впереди много работы по налаживанию инфраструктуры, бэкапов и безопасности в компании.

    2. Второй этап


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

    2.1. Интересные факты


    Один из наших игроков ввел правильный ключ за первые 10 минут игры, а за первый час у нас появился лидер, который справился с заданием.

    2.2. Задание


    Ты вышел на работу в компанию, к тебе пришли менеджеры и попросили найти, кому отправлялись письма из Африки. Нужно построить топ-21 адресов получателей по ним. Первые буквы адресов получателей — ключ. Одно но: почтовый сервер, через который письма были отправлены, не загружается. Все ждут от оперативного решения вопроса!

    2.3. Решение


    1. Сервер не грузится из-за несуществующего раздела swap в fstab, при загрузке система пытается его примонтировать и падает. Как загрузиться?

    Скачиваем образ, мы скачали CentOS 7, грузимся с Live CD/DVD (Troubleshooting -> Rescue), монтируем систему, правим /etc/fstab. Тут же находим первый ключ — GottfriedWilhelm11646Leibniz!

    Создаем swap:

    $ lvcreate -n swap centos -L 256M
    $ sync && reboot

    2. Пароля как всегда нет, нужно поменять пароль root на виртуальной машине. Мы это уже проделывали в первом задании. Меняем и успешно заходим на сервер, но он сразу уходит в перезагрузку. Сервер перегружается с такой скоростью, что не успеть даже посмотреть все логи внимательно. Как понять, что происходит?

    Опять загружаемся с livecd, внимательно изучаем логи системы и на всякий случай заглядываем в крон, раз такая периодичность. Там находим проблему и второй ключ — Alan1912MathisonTuring!

    Нужно в /etc/crontab удалить или закомментировать строчку echo b > /proc/sysrq-trigger.

    3. После чего сервер загрузился, и можно выполнить задание менеджеров: «Какие адреса Африки?» Данная информация, в целом, общедоступна. Найти эту информацию можно в интернете по словосочетаниям «ip address africa», «geoip database». Для решения задачи можно использовать свободно доступные базы распределения адресов (geoip). Мы в качестве эталона использовали БД MaxMind GeoLite2, доступную по лицензии Creative Commons Attribution-ShareAlike 4.0.

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

    Для начала, просто получим пары «IP-отправителя — получатель» из почтового лога /var/log/maillog (построим таблицу email получателей — IP отправителя). Это можно сделать вот такой командой:

    $ cat /var/log/maillog | fgrep -e ' connect from' -e 'status=sent' | sed 's/[]<>[]/ /g' | awk '/connect from/ {ip=$11} /status=sent/ {print $10" "ip}' > log1.txt

    И прежде чем мы продолжим с составлением БД адресов Африки, глянем на топ IP-адресов отправителей.

    $ cat log1.txt | cut -d' ' -f1 | sort | uniq -c | sort -r | head -n 40
    5206 L2JhbjAbM67GA99jg@mail.ru
    4165 iHKTBkegOQa6fIALq@mail.ru
    3739 nHkcBl7BdgXxijSYD7@mail.ru
    3405 SMAzPJAzbl9vp4hAXo@mail.ru
    3346 xILz6d7P@mail.ru
    

    Среди всех явно выделяются по кол-ву писем три первых получателя из топа. Если grep-нуть IP-адреса отправителей, что отправляли на адреса из этого топ-3, можно заметить явное преобладание определённых сетей:

    $ cat log1.txt | fgrep 'L2JhbjAbM67GA99jg@mail.ru' | cut -d' ' -f2 | sort | cut -d'.' -f1 | uniq -c | sort -r | head
    831 105
    806 41
    782 197
    664 196
    542 154
    503 102
    266 156
    165 45
    150 160
    108 165

    Большая часть сетей 105/8, 41/8, 196/8,197/8 выделена AFRINIC — один из пяти региональных интернет-регистраторов, выполняющих распределение интернет-ресурсов. AFRINIC распределяет адресное пространство на территории Африки. А 41/8 относится к AFRINIC вовсе вся.

    https://www.nic.ru/whois/?searchWord=105.0.0.0 
    https://www.nic.ru/whois/?searchWord=41.0.0.0
    

    Таким образом, ответ на задачу, собственно, есть в самом логе.

    $ cat log1.txt | fgrep -e '105.' -e '41.' -e '196.' -e '197.' -e '154.' -e '102.' | awk '{print $1}' | sort | uniq -c | sort -r | head -n 21
    4209 L2JhbjAbM67GA99jg@mail.ru
    3313 iHKTBkegOQa6fIALq@mail.ru
    2704 nHkcBl7BdgXxijSYD7@mail.ru
    2215 uvRbp1O@mail.ru
    1774 sPmMsmmFiV@mail.ru
    1448 BtG3aHgQgCKuze2AKuRH@mail.ru
    1233 eQpuuQ2uQdbwRL3@mail.ru
    958 nJT5dpaBZ@mail.ru
    862 ef4WbQiB@mail.ru
    762 dQCqKL6eVminFfH7wLA@mail.ru
    632 ifq6Rd1HxuCQOdO9@mail.ru
    539 cFwm2ssypMmx1sA7@mail.ru
    531 twtTnr4G@mail.ru
    431 TSrczgYASrR11Hs3qCi@mail.ru
    380 o3r3exc3OL@mail.ru
    357 rzmjr2VAHK@mail.ru
    348 vnPr6YjJ3ndw@mail.ru
    312 anOjFXrwOtLP2Rl1Vcz6@mail.ru
    289 dvny5zHmRW8fiT@mail.ru
    282 sgg9jPxFDYvzw8Kr@mail.ru
    274 tKSevzA7GntJ@mail.ru

    На данном этапе мы получаем строку «LinuxBenedictTorvadst».

    Правильный ключ: «LinusBenedictTorvalds».

    Полученная строка содержит опечатку по отношению к правильному ключу в 3 крайних символах. Это связано, с тем, что выбранные нами сети не целиком выделены странам Африки и с тем, как распределены email-ы по IP-адресам в нашем логе.

    При достаточном уточнении наиболее крупных сетей, выделенных странам Африки, можно получить точный ответ.:

    $ cat log1.txt | fgrep -e' '105.{30..255}. -e' '41. -e' '196.{64..47}. -e' '196.{248..132}. -e' '197.{160..31}. -e' '154.{127..255}. -e' '102.{70..255}. -e' '156.{155..255}. | awk '{print $1}' | sort | uniq -c | sort -r | head -n 21
    3350 L2JhbjAbM67GA99jg@mail.ru
    2662 iHKTBkegOQa6fIALq@mail.ru
    2105 nHkcBl7BdgXxijSYD7@mail.ru
    1724 uvRbp1O@mail.ru
    1376 sPmMsmmFiV@mail.ru
    1092 BtG3aHgQgCKuze2AKuRH@mail.ru
    849 eQpuuQ2uQdbwRL3@mail.ru
    712 nJT5dpaBZ@mail.ru
    584 ef4WbQiB@mail.ru
    463 dQCqKL6eVminFfH7wLA@mail.ru
    365 ifq6Rd1HxuCQOdO9@mail.ru
    269 cFwm2ssypMmx1sA7@mail.ru
    225 twtTnr4G@mail.ru
    168 TSrczgYASrR11Hs3qCi@mail.ru
    142 o3r3exc3OL@mail.ru
    111 rzmjr2VAHK@mail.ru
     96 vnPr6YjJ3ndw@mail.ru
     78 anOjFXrwOtLP2Rl1Vcz6@mail.ru
     56 lHzWiB7ExvRtSbAcU9@mail.ru
     56 dvny5zHmRW8fiT@mail.ru
     40 sgg9jPxFDYvzw8Kr@mail.ru

    Задачу также можно решить другим путём.
    Скачиваем MaxMind, распаковываем, и следующие три команды также решают нашу задачу.

    $ cat GeoLite2-Country-Locations-ru.csv | grep "Африка" | cut -d',' -f1 > africaIds.txt
    $ grep -Ff africaIds.txt GeoLite2-Country-Blocks-IPv4.csv | cut -d',' -f1 > africaNetworks.txt
    $ grepcidr -f africaNetworks.txt log1.txt | cut -d' ' -f1 | sort | uniq -c | sort -r | head -n21
    

    Тем или иным способом мы в итоге посчитали статистику, и менеджеры получили необходимые им данные для работы!

    3. Третий этап


    Третий этап чем-то похож на первый — тоже нужно починить теплый ламповый сервис, но все сложнее, чем в первом задании.

    3.1. Интересные факты


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

    3.2. Задание


    Ты вышел на работу в компанию, где все документы компании хранятся на внутреннем сервере Wiki. В прошлом году инженер заказал 3 новых диска для сервера в дополнение к одному существующему, аргументируя это тем, что для отказоустойчивости системы нужно ставить диски в некие массивы. К сожалению, спустя несколько недель после их установки инженер уехал отдыхать в Индию и не вернулся.

    Несколько лет сервер работал без сбоев, но пару дней назад сеть компании была взломана. По инструкции сотрудники охраны извлекли диски из сервера и отправили их тебе. В процессе транспортировки, один диск был безвозвратно утрачен.

    Нужно восстановить работоспособность Wiki, прежде всего интересует содержание страниц вики. Некий кусок текста, который был на одной из страниц данной вики, является паролем от сервера 1C и срочно нужен для его разблокировки.

    Кроме того, где-то на страницах вики или в ином месте были пароли от сервера логов и сервера видеонаблюдения, которые так же желательно восстановить, без них исследование происшествия невозможно. Как всегда ждут от оперативного решения вопроса!

    3.3. Решение


    1. Пытаемся загрузиться по очереди с тех дисков, что у нас есть и везде получаем одинаковое сообщение:

    No bootable medium found! System halted 
    

    Надо с чего-то загрузиться. Опять спасает загрузка с Live CD/DVD (Troubleshooting -> Rescue). При загрузке пытаемся найти загрузочный раздел, не находим, попадаем в shell. Пытаемся изучать что и как с дисками. Известно, что их три. Инструментов для этого больше в 7-й версии CentOS, где есть команды blkid или lsblk, которые нам показывают всю информацию про диски.

    Как и что делаем:

    $ ls /dev/sd*

    Сразу видно, что

    /dev/sdb1 - ext4
    /dev/sdb2 - часть lvm
    /dev/sda1 и /dev/sdc1 - части рейда
    /dev/sda2 и /dev/sdc2 - про них ничего не известно на текущий момент

    Монтируем sdb1, видно, что это загрузочный раздел CentOS 6.

    $ mkdir /mnt/sdb1 && mount /dev/sdb1 /mnt/sdb1

    Очевидным образом идем в раздел grub и находим там первый ключ — James191955Gosling в необычном файле.

    2. Изучаем pvs и lvs, так как работаем с LVM. Видим, что должно быть 2 физических volume, один не находится и ругается на потерянный uid. Видим, что должно быть 2 логически volume: root и swap, при этом root частично потерян (атрибут P у volume). Смонтировать не получается, а жаль! Он нам очень нужен.

    Есть еще 2 диска, смотрим на них, собираем и монтируем:

    $ mdadm --examine --verbose --scan
    $ mdadm --assemble --verbose --scan
    $ mkdir /mnt/md127 && mount /dev/md127  /mnt/md127 

    Смотрим, видно, что это загрузочный раздел CentOS 6 и дубль того, что уже есть на /dev/sdb1, и тут опять тот же ключ — James191955Gosling!

    Смотрим как собран /dev/md127.

    $ mdadm --detail /dev/md127
    

    Видим, что должен был быть собран из 4-х дисков, собрался из двух /dev/sda1 и /dev/sdc1, они должны были быть номерам 2 и 4 в системе. Предполагаем, что из /dev/sda2 и /dev/sdc2 тоже можно собрать массив. Непонятно, почему нет на них metadata, но это на совести админа, который где-то на Гоа. Предполагаем, что тут должен быть RAID10, хотя есть варианты. Собираем:

    $ mdadm --create --verbose /dev/md0 --assume-clean --level=10 --raid-devices=4 missing /dev/sda2 missing /dev/sdc2
    

    Смотрим blkid, pvs, lvs. Обнаруживаем, что собрали физический volume, которого нам ранее не хватало.

    Сразу починился lvroot, монтируем его, но предварительно активируем VG:

    $ vgchange -a y
    $ mkdir /mnt/lvroot && mount /dev/mapper/vg_c6m1-lv_root /mnt/lvroot 
    

    И там все есть, в том числе и ключ DennisBMacAlistairCRitchie — в домашней директории root — /root/sweet.

    3. Пытаемся все же оживить наш сервер, чтобы он нормально запустился. Все логические volume c нашего /dev/md0 (где у нас все нашлось) перетаскиваем в /dev/sdb2, где изначально и работал весь сервер.

    $ pvmove /dev/md0 /dev/sdb2
    $ vgreduce vg_c6m1 /dev/md0

    Гасим сервер, убираем 1 и 3 диски, оставляем второй, грузимся с Live CD/DVD в Rescue. Находим раздел загрузочный, восстанавливаем загрузчик в grub:

    root (hd0,0)
    setup (hd0)
    

    Отрываем загрузочный диск и успешно загружаемся, но сайт не работает.

    4. Вариантов запустить сайт два: настроить с нуля Apache или использовать уже настроенный заранее nginx c php-fpm:

    $ /etc/init.d/nginx start
    $ /etc/init.d/php-fpm start
    

    Наконец, нужно запустить MySQL:

    $ /etc/init.d/mysqld start

    Он не запускается, и отгадка кроется в /var/log/mysql. Как только вы решите проблему с MySQL, сайт заработает, на главной страничке будет ключ — RichardGCCMatthewGNUStallman! Теперь у нас есть доступ в 1С, и сотрудники смогут получить зарплату. А у тебя как всегда впереди много работы по налаживанию инфраструктуры и безопасности в компании.

    Так же мы можем еще раз поделиться списком книжек, которые помогали нам и нашим участникам готовиться к игре: linux.mail.ru/books.

    Спасибо за то, что были с нами! Следите за анонсами следующих игр!
    Mail.ru Group
    1126,00
    Строим Интернет
    Поделиться публикацией

    Похожие публикации

    Комментарии 24

      0
      Прошёл только первое задание, остальные не стал проходить.
      Первое решалось до боли просто — просмотрел vim history, там вплоть до указания строк, где надо искать ключи, было. Проблема только в том, что я один из ключей ввёл неправильно (опечатался)=)
      Думаю, что остальные задания решались так же
        0

        ну в двух следующих этапах .vimhistory вряд ли помог бы… )
        первый этап отлично решался find /etc -mtime -365..

        0
        во втором задании пароль рута был root :)
          0
          да, и в 1-м. А вот в 3-м не прокатило, пришлось в single mode зайти и сбросить, а потом обнаружил пароль в настройках БД wiki.
          0
          Поднял сайт на апаче, и на главной странице получил надпись: SRE-task2-key3-honney
            +8

            вставлю свои 5 копеек. все задачи рещаются без включения сервера. запускаем, монтируем, чрутимся:


            1. все находится через bashhistory и/или поиском файлов которые не принадлежат пакетному мэнеджеру/были модифицированы
            2. часть ключей находим аналогично 1 пункту через rpm -Va. так же можно отфильтровать приватные и Localhost сети, но в целом особых вопросов нет.
            3. тут все интересно. у меня это вышле лютый квест:
              1. из /dev/sdc2 можно вытащить бэкап lvm dd if=/dev/sdc2 bs=512 count=255 |strings |less
              2. там вы видимо что
                • есть раздел DDuTdi-LRaP-U4k7-9HPF-srd9-v1kc-r7whQ7 который из md0 в 15гб
                • еще партиция bdBVau-FNcg-B5vL-Rf70-8yC4-1Ljr-c85wpg из /dev/sdb2
                • Значит sdb2&sdd2 Должны быть в raid0
              3. изучаем внитмальено диски.
                • на /dev/sdb2 на смещение 4мб лежит структура LVM(определяем по ключевыому слову LABELONE)
                • смещение подозрительно похоже на размер PE экстента который мы увидили в бэкапе LVM
                • mbr содержит ключевые AA55
                • напрашивается вывод что диски в массиве без суперблоков со смещением 8МБ
              4. сравнивая hex дисков, можно предположить размер страйпа 128кб — ошибочно, в доке 64кб для времен когда суперблоков не было. не катит
              5. помня про смещением создаем соотвествующу таблицу разделов в массиве со смещеним 8мб.
              6. пробуем собрать массив с разными параметрами 4кб-4мб с шагом 4кб mdadm -B --chunk $i --verbose /dev/md0 --assume-clean --level=0 --raid-devices=2 /dev/sda2 /dev/sdc2 (порядок дисков определяем по наличию LVM структур)
              7. изначально нашел размер 256к. получил мальца битую фс. проверяем.
              8. находим файл mysql и грепаем ключ оттуда.

            HEX

            sdd2


            04dd000: 0000 0000 0000 0000 bb30 185b bb30 185b  .........0.[.0.[
            04dd010: bb30 185b 0000 0000 0000 0000 0000 0000  .0.[............
            04dd020: 0000 0000 0000 0000 0000 0000 0000 0000  ................
            04dd030: 0000 0000 0000 0000 0000 0000 0000 0000  ................
            04dd040: 0000 0000 0000 0000 0000 0000 0000 0000  ................
            04dd050: 0000 0000 0000 0000 0000 0000 0000 0000  ................
            04dd060: 0000 0000 0000 0000 0000 0000 0000 0000  ................
            04dd070: 0000 0000 0000 0000 0000 0000 0000 0000  ................
            04dd080: 0000 0000 0000 0000 0000 0000 0000 0000  ................
            04dd090: 0000 0000 0000 0000 0000 0000 0000 0000  ................
            04dd0a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
            04dd0b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
            04dd0c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
            04dd0d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
            04dd0e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
            04dd0f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
            04dd100: 6d41 0000 0010 0000 c99c 8e5c d99a 8e5c  mA.........\...\
            04dd110: d99a 8e5c 0000 0000 0000 1600 0800 0000  ...\............
            04dd120: 0000 0000 ab00 0000 1d20 0000 0000 0000  ......... ......
            04dd130: 0000 0000 0000 0000 0000 0000 0000 0000  ................
            04dd140: 0000 0000 0000 0000 0000 0000 0000 0000  ................
            04dd150: 0000 0000 0000 0000 0000 0000 0000 0000  ................
            04dd160: 0000 0000 0000 0000 0000 0000 0000 0000  ................
            04dd170: 0000 0000 0000 0000 0000 0000 0000 0000  ................
            04dd180: 1c00 0000 f44c e482 f44c e482 ec5e 6597  .....L...L...^e.
            04dd190: bb30 185b 0000 0000 0000 0000 0000 02ea  .0.[............
            04dd1a0: 0706 4400 0000 0000 1c00 0000 0000 0000  ..D.............
            04dd1b0: 7365 6c69 6e75 7800 0000 0000 0000 0000  selinux.........
            
            sdb2
            04fffe0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
            04ffff0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
            0500000: ed41 0000 0010 0000 d38e 8e5c d530 185b  .A.........\.0.[
            0500010: d530 185b 0000 0000 0000 0400 0800 0000  .0.[............
            0500020: 0000 0800 0300 0000 0af3 0100 0400 0000  ................
            0500030: 0000 0000 0000 0000 0100 0000 3321 0000  ............3!..
            0500040: 0000 0000 0000 0000 0000 0000 0000 0000  ................
            0500050: 0000 0000 0000 0000 0000 0000 0000 0000  ................
            0500060: 0000 0000 da4d bac3 0000 0000 0000 0000  .....M..........
            0500070: 0000 0000 0000 0000 0000 0000 0000 0000  ................
            0500080: 1c00 0000 a4ad be5c a4ad be5c 0cfd 4314  .......\...\..C.
            0500090: c530 185b a404 77ed 0000 0000 0000 02ea  .0.[..w.........
            05000a0: 0706 4000 0000 0000 1e00 0000 0000 0000  ..@.............
            05000b0: 7365 6c69 6e75 7800 0000 0000 0000 0000  selinux.........
            05000c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
            05000d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
            05000e0: 7379 7374 656d 5f75 3a6f 626a 6563 745f  system_u:object_
            05000f0: 723a 6c6f 6361 6c65 5f74 3a73 3000 0000  r:locale_t:s0...
            0500100: ed41 0000 0010 0000 d38e 8e5c 7545 185b  .A.........\uE.[
            0500110: 7545 185b 0000 0000 0000 0200 0800 0000  uE.[............
            0500120: 0000 0800 4c00 0000 0af3 0100 0400 0000  ....L...........
            0500130: 0000 0000 0000 0000 0100 0000 3421 0000  ............4!..

              0
              агонь! Да, так тоже можно и подход через изучение содержимого имхо очень грамотный
                0
                за картинку с разделами отдельно плюсую!
                  +3
                  В третьем задании так же перемудрил — откуда в потерянном диске, на 7.5GB, две партиции, по 7.5GB — Подумал я. Поэтому, как и у вас, собрал массив, что тоже сработало, вместо raid10 -> raid0:
                  mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/sda2 /dev/sdc2
                  Тогда не нужно:
                  $ pvmove /dev/md0 /dev/sdb2
                  $ vgreduce vg_c6m1 /dev/md0
                  А нужно поменять, местами диски 1 и 2, чтобы grub стартовал нормально.
                  Диски при загрузке 2, 1, 3
                  Что конечно не правильно и усложнило задачу, но не мытьём так катаньем.
                  Игра мне понравилось. Спасибо.
                    0
                    Крутой подход
                    0
                    Del
                      +2
                      Первое задание делал в виртуалке.
                      2, 3 монтировал на системе и использовал цшрут или докер.
                      С лвм было весело. Понял как собирать только после просмотра глазами заголовков дисков.
                      tar -xvf MRG-LinuxQuest-Task3.ova
                      qemu-img convert MRG-LinuxQuest-Task3-disk001.vmdk MRG-LinuxQuest-Task3-disk001.raw
                      qemu-img convert MRG-LinuxQuest-Task3-disk002.vmdk MRG-LinuxQuest-Task3-disk002.raw
                      qemu-img convert MRG-LinuxQuest-Task3-disk003.vmdk MRG-LinuxQuest-Task3-disk003.raw
                      kpartx -av MRG-LinuxQuest-Task3-disk001.raw
                      kpartx -av MRG-LinuxQuest-Task3-disk002.raw
                      kpartx -av MRG-LinuxQuest-Task3-disk003.raw
                      mdadm --assemble /dev/mapper/loop*p1
                      mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/mapper/loop0p2 /dev/mapper/loop2p2
                      lvscan
                      mkdir /mnt/sre
                      mount /dev/vg_c6m1/lv_root /mnt/sre

                      docker run -ti --rm --name=mysql1 --network=host -v /mnt/sre/var/lib/mysql:/var/lib/mysql mysql/mysql-server:5.7.9
                      docker run -ti --rm --name some-mediawiki --net=host -v /mnt/sre/var/www/html/mediawiki-1.27.4/:/var/www/html mediawiki:1.27.4

                      Задачки на поиск ключей по файлам бесил. В первом задании убил 3 часа. На поиски что еще починить. Пока не заметил 1 ключ.
                        0
                        А интернетом можно пользоваться при выполнении заданий?
                          0
                          Ага, но загвоздка была в том что без понимания происходящего там было не нагуглить. Тот же пример с SysRq во втором задании — вредные прошлые админы не достаточно часто пихают в крон такое чтобы на запрос «CentOS server reboots after few seconds» можно было бы нагуглить ответ.
                          +3
                          Больше всего понравилась часть второго тура про «письма из Африки».
                          Я решал в лоб через уже установленный в виртуалке geoiplookup (получил список «африканских» mail ID, а потом считал и сортировал полученные по ID-шкам адреса получателей).
                          За счет того, что подход был выбран не самый оптимальный, получился красивый процесс постепенного проявления ключа от задания:
                            0
                            Почему-то напомнило Матрицу с её бегущими символами.
                              0
                              А где смеяться конечный результат?
                                0
                                По условию задания код «LinusBenedictTorvalds» формируется из первых букв email-ов top-21 получателей писем.
                              0
                              Третье задание меня сломило, в итоге 82 место. Очень долго мучился с mdadm, но он ни в какую не хотел собираться. Подозревая что дело все же в образах которые я использовал для восстановления, надо было брать CentOS. А главное так близко подошел, даже обидно.
                              Из всех заданий очень понравилось с мейлами, вот для него пришлось креативно подойти к делу, для скорости слепил наспех grep регулярку которая выбрала имейлы всех отправителей и IP адреса из лога, потом отфильтровал африканские IP скриптом на python, было весело! Почаще бы такие квесты.

                              P.S.: Вот что я получил своими методами
                                0
                                Видел такой текст в одной из промежуточных wiki-версий этой страницы.
                                В последней же версии был верный код.
                                  0
                                  Да, там история редактирования с SRE-task2-key3-honney в SRE-task2-key3-honey, у меня не поднялось то что должно было подставить вместо этого верный код.
                                    0
                                    меня не поднялось то что должно было подставить вместо этого верный код

                                    Я вообще собирал это задание в чруте. Сомневаюсь, что там что-то дополнительно таинственно поднимается и меняет базу. Нету образа под рукой посмотреть.
                                    Вы nginx использовали или апач? Выше писали что у кого-то на апаче была такая же беда.
                                0
                                Можно ли поподробнее разобрать следующие моменты, описанные в решении третьего задания:
                                • Обнаруживаем, что собрали физический volume, которого нам ранее не хватало.Сразу починился lvroot, монтируем его, но предварительно активируем VG:
                                  Составление RAID из /dev/sda2 и /dev/sdc2 проходит успешно, но вот дальше не получается активировать полноценную VG. У «пропавшего» PV был один UUID, а у собранного вручную — совсем другой, о чём ОС честно предупреждает:
                                    pvs -a
                                  WARNING: Device for PV DDuTdi-LRaP-U4k7-9HPF-srd9-v1kc-r7whQ7 not found or rejected by a filter.
                                    Couldn't find device with uuid DDuTdi-LRaP-U4k7-9HPF-srd9-v1kc-r7whQ7.
                                    PV                    VG      Fmt  Attr PSize  PFree 
                                    /dev/loop0                         ---      0      0 
                                    /dev/loop1                         ---      0      0 
                                    /dev/loop2                         ---      0      0 
                                    /dev/mapper/live-base              ---      0      0 
                                    /dev/mapper/live-rw                ---      0      0 
                                    /dev/md0                           ---      0      0 
                                    /dev/sdb1                          ---      0      0 
                                    /dev/sdb2             vg_c6m1 lvm2 a--  <7.51g <7.51g
                                    [unknown]             vg_c6m1 lvm2 a-m  15.01g 11.58g
                                  
                                  В итоге активировать группу томов можно, лишь указав в качестве параметра режим частичной активации:
                                  vgchange -ay --activationmode partial
                                  Сменить UUID у /dev/md0 c помощью mdadm -A не получилось и поэтому у меня не вышло присоединить PV к VG, хотя в описанном решении восстановления /dev/md0 было достаточно для того, чтобы «lv_root сразу починился».
                                • Второй момент: после активации в частичном режиме группы томов vg_c6m1 не получилось смонтировать раздел:
                                  mount /dev/mapper/vg_c6m1-lv_root /mount/lvroot
                                  mount: /dev/mapper/vg_c6m1-lv_root: can't read superblock
                                  
                                  Попытки проверить и восстановить ФС, указывая положение копии суперблока ни к чему не привели.

                                Поскольку с третьим заданием я не справился и долго пытался починить сервер, используя «канонический» вариант, то прошу подсказать, что я делал неправильно?

                                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                Самое читаемое