Pull to refresh

Comments 23

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

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

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

вставлю свои 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!..

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

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

Я вообще собирал это задание в чруте. Сомневаюсь, что там что-то дополнительно таинственно поднимается и меняет базу. Нету образа под рукой посмотреть.
Вы nginx использовали или апач? Выше писали что у кого-то на апаче была такая же беда.
Можно ли поподробнее разобрать следующие моменты, описанные в решении третьего задания:
  • Обнаруживаем, что собрали физический 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
    
    Попытки проверить и восстановить ФС, указывая положение копии суперблока ни к чему не привели.

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