Линук Куест. Честитамо победницима и причамо о решењима задатака

Линук Куест. Честитамо победницима и причамо о решењима задатака

25. марта смо отворили регистрацију за Линук Куест, ово је игра за љубитеље и стручњаке за Линук оперативни систем. Неке статистике: 1117 људи се регистровало за игру, њих 317 је пронашло бар један кључ, 241 је успешно обавио задатак прве фазе, 123 - друге и 70 је прошло трећу фазу. Данас је наша утакмица дошла до краја и честитамо нашим победницима!

  • Александар Телдеков је заузео прво место.
    Александар је за себе рекао да је најтипичнији систем администратор. Живи у Волгограду, већ двадесетак година администрира разне Уник-лике системе. Успео сам да радим у интернет провајдерима, банци, систем интегратору. Сада ради на даљину у малој компанији, радећи на инфраструктури облака за великог страног купца. Воли да чита и слуша музику. О игри, Александар је рекао да му се свидела игра у целини, воли такве задатке. Током интервјуа у једној од компанија урадио сам нешто слично Хацкерранк-у, било је занимљиво.
  • Друго место - Роман Суслов.
    Роман из Москве. Он има 37 година. Ради као Линук/Уник инжењер у Јет Инфосистемс. На послу морам да администрирам и решавам проблеме са Линук/Уник системима + САН. Интересовања су различита: Линук системи, програмирање, обрнути инжењеринг, информациона безбедност, Ардуино. О игри Роман је приметио да му се игра у целини допала. „Мало сам протегнуо мозак и одморио се од сиве свакодневице свакодневног рада. 🙂 Волео бих да имам још задатака, иначе пре него што сам стигао да пробам, игра је већ била готова.”
  • Треће - алек3д.
    Алекс живи у Москви и ради у развоју софтвера. „Хвала на такмичењу, било је занимљиво тестирати своје вештине гуглања.“

Такође на ранг листи 10 најбољих играча:

  • Јевгениј Салдајев
  • Маркел Мокхнацхевски
  • Константин Коносов
  • Павел Сергеев
  • Владимир Боваев
  • Иван Бубнов
  • Павло Клец

Разумемо да постоји много опција за решавање свих наших проблема.

1. Прва фаза

Назвали смо то „Да ли сте ви заиста админ?“, јер је задатак био прилично једноставан - поправити сервис топле лампе.

1.1. Занимљиве чињенице:

Два играча су у првих 15 минута игре нашла први кључ, а у првом сату имали смо тројицу лидера који су извршили задатак.

1.2. Вежбање

Отишли ​​сте да радите у компанији у којој дуго није било компетентног стручњака за информационе технологије. Пре него што почнете да доводите ствари у ред, потребно је да решите горући проблем који блокира рад канцеларије.

Чистачица је крпом ухватила кабл за напајање серверског ормарића. Напајање је враћено, али веома важна веб локација и даље не ради. Веб страница је важна јер компанија није много забринута за безбедност информација, а на њеној главној страници можете у чистом тексту пронаћи администраторску лозинку за рачунар генералног директора.

Пре неки дан је промењена лозинка, али сви су заборавили нову, директор не може да ради. Постоје гласине да је на овој машини било више кључева који би нам могли помоћи да дешифрујемо резервну копију рачуноводствених докумената.

Сви очекују брзо решење проблема!

1.3. Решење

1. Пре свега, потребно је да промените роот лозинку на виртуелној машини да бисте јој приступили. Приликом покретања примећујемо да је ово Убунту 16.04 Сервер.

Да ресетујемо роот лозинку, поново покрећемо машину, приликом учитавања, у тренутку када се прикаже груб мени, идите да уредите Убунту ставку помоћу дугмета „е“. Уредите линију линукса, додајте је на крај init=/bin/bash. Учитавамо преко Цтрл+к, добијамо басх. Поново монтирајте роот са рв, промените лозинку:

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

Не заборавите на синхронизацију, рестартујте.

2. Услов каже да наш веб сервер не ради, погледајте:

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

То је, у ствари, Апацхе ради, али одговара кодом 404. Погледајмо конфигурацију:

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

Овде је и кључ - СтевенПаулСтевеЈобс.

Провера путање /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)

Шта је било? Морамо то схватити. Да бисте то урадили, потребно је да добијете приступ МиСКЛ-у, као што је описано у документација. Једна од тачака документације препоручује да региструјемо опцију skip-grant-tables в /etc/mysql/mysql.conf.d/mysqld.cnf. Овде је и кључ - АугустаАдаКингБирон.

Исправљање корисничких права 'wp'@'localhost'. Покрећемо МиСКЛ, чинимо га доступним преко мреже, коментаришући опцију у конфигурацији 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

Освежавамо страницу, идемо на сајт и проналазимо кључ - БјарнеСтроуструп! Пронашли смо сва три кључа, наш директор може да ради, дешифровали смо рачуноводствене фајлове. Сви су срећни, а пред вама је много посла на постављању инфраструктуре, резервних копија и безбедности у компанији.

2. Друга фаза

Требало је решити проблем прикупљања аналитике. Сви воле аналитику – ко је користи, где и у којим количинама. Дошли смо до случаја са којим се сви инжењери могу сусрести у овом или оном облику у животу.

2.1. Занимљивости

Један од наших играча је у првих 10 минута игре унео тачан кључ, а у првих сат времена имали смо вођу који је извршио задатак.

2.2. Вежбање

Отишли ​​сте да радите у компанији, долазили су вам менаџери и тражили да пронађете коме су послата писма из Африке. Морамо да направимо топ 21 адресу примаоца на основу њих. Прва слова адреса примаоца су кључна. Једна ствар: сервер поште преко којег су послата писма се не учитава. Сви очекују брзо решење проблема!

2.3. Решење

1. Сервер се не покреће због непостојеће свап партиције у фстаб-у приликом учитавања, систем покушава да га монтира и руши; Како покренути?

Преузмите слику, преузели смо ЦентОС 7, покрените са Ливе ЦД/ДВД-а (Решавање проблема -> Ресцуе), монтирајте систем, уредите /etc/fstab. Одмах налазимо први кључ - ГоттфриедВилхелм11646Леибниз!

Креирај замену:

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

2. Као и увек, нема лозинке, потребно је да промените роот лозинку на виртуелној машини. То смо већ урадили у првом задатку. Променимо се и успешно се пријављујемо на сервер, али он одмах иде у рестартовање. Сервер је преоптерећен таквом брзином да немате времена ни да пажљиво погледате све евиденције. Како разумети шта се дешава?

Поново дижемо са ливецд-а, пажљиво проучавамо системске логове и за сваки случај погледамо у црон, пошто је таква периодичност. Ту налазимо проблем и други кључ - Алан1912МатхисонТуринг!

Потребан у /etc/crontab избришите или коментаришите линију echo b > /proc/sysrq-trigger.

3. Након тога се сервер учитао и можете да завршите задатак менаџера: „Које су адресе у Африци?“ Ове информације су углавном доступне јавности. Ове информације можете пронаћи на Интернету користећи фразе „ип адреса Африка“, „геоип база података“. Да бисте решили проблем, можете користити слободно доступне базе података за дистрибуцију адреса (геоип). Користили смо базу података као стандард МакМинд ГеоЛите2, доступно под лиценцом Цреативе Цоммонс Аттрибутион-Схаре Аллике 4.0.

Хајде да покушамо да решимо наш проблем користећи само Линук системске услужне програме, али генерално се може решити на велики број начина: коришћењем услужних програма за филтрирање текста и коришћењем скрипти на различитим програмским језицима.

За почетак, једноставно ћемо добити парове „ИП пошиљалац-прималац“ из евиденције поште /var/log/maillog (хајде да направимо табелу прималаца е-поште - ИП пошиљаоца). Ово се може урадити следећом командом:

$ 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

И пре него што наставимо са састављањем базе података афричких адреса, хајде да погледамо главне ИП адресе пошиљалаца.

$ cat log1.txt | cut -d' ' -f1 | sort | uniq -c | sort -r | head -n 40
5206 [email protected]
4165 [email protected]
3739 [email protected]
3405 [email protected]
3346 [email protected]

Међу свима њима се по броју писама јасно издвајају прва три примаоца са врха. Ако узмете у обзир ИП адресе пошиљалаца који су послали на адресе из ове топ 3, приметићете јасну превласт одређених мрежа:

$ cat log1.txt | fgrep '[email protected]' | 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 додељена је АФРИНИЦ-у - једном од пет регионалних Интернет регистратора који дистрибуирају Интернет ресурсе. АФРИНИЦ дистрибуира адресни простор широм Африке. А 41/8 се у потпуности односи на АФРИНИЦ.

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 [email protected]
3313 [email protected]
2704 [email protected]
2215 [email protected]
1774 [email protected]
1448 [email protected]
1233 [email protected]
958 [email protected]
862 [email protected]
762 [email protected]
632 [email protected]
539 [email protected]
531 [email protected]
431 [email protected]
380 [email protected]
357 [email protected]
348 [email protected]
312 [email protected]
289 [email protected]
282 [email protected]
274 [email protected]

У овој фази добијамо стринг „ЛинукБенедицтТорвадст“.

Тачан кључ: "ЛинусБенедицтТорвалдс".

Добијени низ садржи грешку у куцању у односу на тачан кључ у последња 3 знака. То је због чињенице да мреже које смо одабрали нису у потпуности посвећене афричким земљама и начину на који се е-поруке дистрибуирају по ИП адресама у нашем дневнику.

Уз довољну спецификацију највећих мрежа додељених афричким земљама, може се добити прецизан одговор:

$ 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 [email protected]
2662 [email protected]
2105 [email protected]
1724 [email protected]
1376 [email protected]
1092 [email protected]
849 [email protected]
712 [email protected]
584 [email protected]
463 [email protected]
365 [email protected]
269 [email protected]
225 [email protected]
168 [email protected]
142 [email protected]
111 [email protected]
 96 [email protected]
 78 [email protected]
 56 [email protected]
 56 [email protected]
 40 [email protected]

Проблем се може решити и на други начин.
Преузмите МакМинд, распакујте га и следеће три команде такође решавају наш проблем.

$ 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. Вежбање

Ишли сте да радите за компанију у којој се сви документи компаније чувају на интерном Вики серверу. Прошле године, инжењер је наручио 3 нова диска за сервер поред једног постојећег, тврдећи да је потребно да дискови буду смештени у неку врсту низова да би систем био отпоран на грешке. Нажалост, неколико недеља након њихове инсталације, инжењер је отишао на одмор у Индију и није се вратио.

Сервер је радио без кварова неколико година, али је пре неколико дана хакована мрежа компаније. Према упутствима, обезбеђење је уклонило дискове са сервера и послало вам их. Током транспорта, један диск је неповратно изгубљен.

Морамо да вратимо функционалност Вики пре свега, занима нас садржај вики страница. Одређени део текста који се налазио на једној од страница ове вики је лозинка за 1Ц сервер и хитно је потребан за његово откључавање.

Поред тога, негде на вики страницама или на другом месту биле су лозинке за лог сервер и сервер за видео надзор, које би такође било пожељно опоравити без њих, истраживање инцидента је немогуће; Као и увек, очекујемо брзо решење проблема!

3.3. Решење

1. Покушавамо да покренемо један по један са дискова које имамо и свуда добијамо исту поруку:

No bootable medium found! System halted 

Морате се покренути са нечега. Покретање са Ливе ЦД/ДВД-а (Решавање проблема -> Ресцуе) поново помаже. Приликом учитавања покушавамо да пронађемо партицију за покретање, не можемо да је пронађемо, завршавамо у љусци. Покушавамо да проучимо шта и како да радимо са дисковима. Познато је да их је троје. За ово постоји више алата у 7. верзији ЦентОС-а, где постоје команде blkid или lsblk, који нам показују све информације о дисковима.

Како и шта радимо:

$ ls /dev/sd*

Одмах се види да

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

Монтирамо сдб1, јасно је да је ово партиција за покретање ЦентОС-а 6.

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

Очигледно, идемо у одељак груб и тамо налазимо први кључ - Јамес191955Гослинг у необичној датотеци.

2. Проучавамо пвс и лвс, пошто радимо са ЛВМ-ом. Видимо да би требало да постоје 2 физичка тома, један није лоциран и жали се на изгубљен уид. Видимо да треба да постоје 2 логичка волумена: роот и свап, док је роот делимично изгубљен (П атрибут запремине). Није могуће монтирати, што је штета! Он нам је заиста потребан.

Постоје још 2 диска, гледамо их, састављамо и монтирамо:

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

Гледамо, видимо да је ово партиција за покретање ЦентОС 6 и дупликат онога што је већ на /dev/sdb1, и овде опет исти кључ - ДеннисБМацАлистаирЦРитцхие!
Да видимо како је састављено /dev/md127.

$ mdadm --detail /dev/md127

Видимо да је требало да се склопи са 4 диска, али је састављен од два /dev/sda1 и /dev/sdc1, требало је да буду бројеви 2 и 4 у систему. Претпостављамо да од /dev/sda2 и /dev/sdc2 Такође можете прикупити низ. Није јасно зашто на њима нема метаподатака, али ово је на савести админа, који је негде у Гои. Претпостављамо да би требало да постоји РАИД10, иако постоје опције. Прикупљамо:

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

Гледамо блкид, пвс, лвс. Откривамо да смо прикупили физички волумен који нам је раније недостајао.

лвроот је одмах поправљен, монтирамо га, али прво активирамо ВГ:

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

И све је ту, укључујући кључ у основном матичном директоријуму - /роот/свеет.

3. Још увек покушавамо да оживимо наш сервер како би се нормално покренуо. Сви логички томови из нашег /dev/md0 (где смо нашли све) превуците га до /dev/sdb2, где је цео сервер у почетку радио.

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

Искључујемо сервер, уклањамо дискове 1 и 3, остављамо други, покрећемо са Ливе ЦД/ДВД-а у Ресцуе. Пронађите партицију за покретање и вратите покретач у груб:

root (hd0,0)
setup (hd0)

Откидамо диск за покретање и успешно учитавамо, али сајт не ради.

4. Постоје две опције за покретање веб локације: конфигуришите Апацхе од нуле или користите нгинк са пхп-фпм који је већ конфигурисан унапред:

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

Коначно, потребно је да покренете МиСКЛ:

$ /etc/init.d/mysqld start

Неће почети, а одговор лежи у /var/log/mysql. Чим решите проблем са МиСКЛ-ом, сајт ће прорадити, на главној страници ће бити кључ - РицхардГЦЦМаттхевГНУСталлман! Сада имамо приступ 1Ц, а запослени ће моћи да примају своје плате. И као и увек, пред вама је много посла на успостављању инфраструктуре и безбедности у компанији.

Такође можемо још једном да поделимо листу књига које су помогле нама и нашим учесницима да се припремимо за утакмицу: линук.маил.ру/боокс.

Хвала вам што сте са нама! Пратите најаве наредних утакмица!

Извор: ввв.хабр.цом

Додај коментар