Linux Quest. Gratulujeme vítězům a řekněte nám o řešení úkolů

Linux Quest. Gratulujeme vítězům a řekněte nám o řešení úkolů

25. března jsme spustili registraci na Linux Quest, to je hra pro milovníky a znalce operačního systému Linux. Pár statistik: do hry se zaregistrovalo 1117 317 lidí, 241 z nich našlo alespoň jeden klíč, 123 úspěšně dokončilo úkol první fáze, 70 - druhá a XNUMX prošlo třetí fází. Dnes naše hra skončila a my gratulujeme našim vítězům!

  • První místo obsadil Alexander Teldekov.
    Alexander si řekl, že je nejtypičtějším správcem systému. Žije ve Volgogradu, spravuje různé unixové systémy asi dvacet let. Podařilo se mi pracovat u poskytovatelů internetu, banky a systémového integrátora. Nyní pracuje na dálku v malé firmě a pracuje na cloudové infrastruktuře pro velkého zahraničního zákazníka. Rád čte a poslouchá hudbu. O hře Alexander řekl, že se mu líbila hra jako celek, miluje takové úkoly. Při pohovoru v jedné z firem jsem dělal něco podobného jako Hackerrank, bylo to zajímavé.
  • Druhé místo - Roman Suslov.
    Román z Moskvy. Je mu 37 let. Pracuje jako Linux/Unix inženýr ve společnosti Jet Infosystems. V práci musím spravovat a řešit problémy se systémy Linux/Unix + SAN. Zájmy jsou různé: Linuxové systémy, programování, reverzní inženýrství, informační bezpečnost, Arduino. O hře Roman poznamenal, že se mu hra celkově líbila. „Trochu jsem si protáhl mozek a odpočinul si od šedivého každodenního života každodenní práce. 🙂 Chtěla bych mít více úkolů, jinak než jsem tomu stihla přijít na chuť, hra už skončila.“
  • Třetí - alex3d.
    Alex žije v Moskvě a pracuje ve vývoji softwaru. "Děkuji za soutěž, bylo zajímavé otestovat mé dovednosti google-fu."

Také v žebříčku 10 nejlepších hráčů:

  • Jevgenij Saldajev
  • Markel Mochnačevskij
  • Konstantin Konosov
  • Pavel Sergejev
  • Vladimír Bovajev
  • Ivan Bubnov
  • Pavlo Klets

Chápeme, že existuje mnoho možností pro řešení všech našich problémů, některá z možných řešení jsou popsána níže.

1. První etapa

Nazvali jsme to "Jsi opravdu admin?", protože úkol byl docela jednoduchý - opravit službu teplé lampy.

1.1. Zajímavá fakta:

Dva hráči našli první klíč v prvních 15 minutách hry a v první hodině jsme měli tři vedoucí, kteří úkol splnili.

1.2. Cvičení

Odešel jste pracovat do firmy, kde dlouho nebyl žádný kompetentní specialista na informační technologie. Než začnete dělat pořádek, musíte vyřešit palčivý problém, který blokuje práci kanceláře.

Uklízečka zachytila ​​mopem napájecí kabel serverové skříně. Napájení bylo obnoveno, ale velmi důležitý web stále nefunguje. Web je důležitý, protože společnost se o bezpečnost informací příliš nestará a na hlavní stránce tohoto najdete v nešifrovaném textu heslo správce k počítači generálního ředitele.

Onehdy bylo heslo změněno, ale všichni zapomněli nové, ředitel nemůže pracovat. Proslýchá se, že na tomto stroji bylo více klíčů, které by nám mohly pomoci rozluštit záložní kopii účetních dokladů.

Každý očekává rychlé vyřešení problému!

1.3. Řešení

1. Nejprve musíte změnit heslo uživatele root na virtuálním počítači, abyste k němu získali přístup. Při spuštění si všimneme, že se jedná o server Ubuntu 16.04.

Chcete-li resetovat heslo root, restartujeme počítač, při načítání, v okamžiku, kdy se zobrazí nabídka grub, přejděte na úpravu položky Ubuntu pomocí tlačítka „e“. Upravte řádek linux, přidejte jej na konec init=/bin/bash. Načteme přes Ctrl+x, dostaneme bash. Znovu připojte root pomocí rw, změňte heslo:

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

Nezapomeňte na synchronizaci, restartujte počítač.

2. Podmínka říká, že náš webový server nefunguje, podívejte se:

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

To znamená, že ve skutečnosti Apache běží, ale odpovídá kódem 404. Podívejme se na konfiguraci:

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

Je zde také klíč – StevenPaulSteveJobs.

Kontrola cesty /usr/share/WordPress - nic takového neexistuje, ale existuje /usr/share/wordpress. Upravte konfiguraci a restartujte Apache.

$ systemctl restart apache2

3. Zkuste to znovu, zobrazí se chyba:

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

Databáze neběží?

$ systemctl status mysql
Active: active (running)

Co se děje? Musíme na to přijít. Chcete-li to provést, musíte získat přístup k MySQL, jak je popsáno v dokumentace. Jeden z bodů dokumentace doporučuje, abychom možnost zaregistrovali skip-grant-tables в /etc/mysql/mysql.conf.d/mysqld.cnf. Zde je také klíč - AugustaAdaKingByron.

Oprava uživatelských práv 'wp'@'localhost'. Spustíme MySQL, zpřístupníme ji přes síť, komentujeme volbu v konfiguraci skip-networking.

4. Po těchto krocích se webový server spustí, ale stránka stále nefunguje, protože

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

Upravujeme práva k souboru.

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

Obnovíme stránku, přejdeme na web a najdeme klíč - BjarneStroustrup! Našli jsme všechny tři klíče, náš ředitel může fungovat, dešifrovali jsme účetní soubory. Všichni jsou spokojeni a vy máte před sebou spoustu práce s nastavením infrastruktury, záloh a zabezpečení ve firmě.

2. Druhá etapa

Bylo nutné vyřešit problém sběru analytiky. Každý má rád analytiku – kdo ji používá, kde a v jakém množství. Přišli jsme s případem, se kterým se všichni inženýři mohou v té či oné podobě v životě setkat.

2.1. Zajímavosti

Jeden z našich hráčů zadal správný klíč během prvních 10 minut hry a během první hodiny jsme měli vedoucího, který úkol dokončil.

2.2. Cvičení

Šel jste pracovat do firmy, přišli za vámi manažeři a požádali vás, abyste zjistili, komu se posílají dopisy z Afriky. Na jejich základě musíme vytvořit 21 hlavních adres příjemců. Klíčová jsou první písmena adres příjemců. Jedna věc: poštovní server, přes který byly dopisy odeslány, se nenačte. Každý očekává rychlé vyřešení problému!

2.3. Řešení

1. Server nenabootuje kvůli neexistujícímu odkládacímu oddílu ve fstabu, při načítání se jej systém pokusí připojit a spadne. Jak nabootovat?

Stáhněte si image, stáhli jsme CentOS 7, nabootujte z Live CD/DVD (Odstraňování problémů -> Záchrana), připojte systém, upravte /etc/fstab. Okamžitě nacházíme první klíč - GottfriedWilhelm11646Leibniz!

Vytvořit swap:

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

2. Jako vždy neexistuje žádné heslo, musíte změnit heslo root na virtuálním počítači. Už jsme to udělali v prvním úkolu. Změníme a úspěšně se přihlásíme na server, ale okamžitě se restartuje. Server je přetížen takovou rychlostí, že si ani nestihnete pečlivě prohlédnout všechny logy. Jak porozumět tomu, co se děje?

Opět nabootujeme z livecd, pečlivě prostudujeme systémové protokoly a pro každý případ se podíváme do cronu, protože taková periodicita. Tam najdeme problém a druhý klíč - Alan1912MathisonTuring!

Potřebné v /etc/crontab smazat nebo okomentovat řádek echo b > /proc/sysrq-trigger.

3. Poté se server načte a vy můžete dokončit úkol manažerů: „Jaké jsou adresy v Africe?“ Tyto informace jsou obecně dostupné veřejnosti. Tyto informace můžete najít na internetu pomocí frází „ip adresa afrika“, „databáze geoip“. K vyřešení problému můžete využít volně dostupné databáze distribuce adres (geoip). Databázi jsme použili jako standard MaxMind GeoLite2, dostupný pod licencí Creative Commons Attribution-ShareAlike 4.0.

Pokusme se vyřešit náš problém pouze pomocí linuxových systémových utilit, ale obecně jej lze vyřešit obrovským množstvím způsobů: pomocí utilit pro filtrování textu a pomocí skriptů v různých programovacích jazycích.

Pro začátek jednoduše získáme páry „IP odesílatele a příjemce“ z protokolu pošty /var/log/maillog (sestavme si tabulku příjemců e-mailu – IP odesílatele). To lze provést pomocí následujícího příkazu:

$ 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

A než budeme pokračovat v sestavování databáze afrických adres, podívejme se na top IP adresy odesílatelů.

$ 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]

Mezi všemi počtem písmen jednoznačně vyčnívají první tři příjemci shora. Pokud zjistíte IP adresy odesílatelů, kteří odeslali na adresy z této top 3, všimnete si jasné převahy určitých sítí:

$ 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

Většina sítí 105/8, 41/8, 196/8,197/8 je přidělena společnosti AFRINIC – jednomu z pěti regionálních internetových registrátorů, kteří distribuují internetové zdroje. AFRINIC distribuuje adresní prostor po celé Africe. A 41/8 odkazuje úplně na AFRINIC.

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

Odpověď na problém je tedy ve skutečnosti v samotném protokolu.

$ 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]

V této fázi získáme řetězec „LinuxBenedictTorvadst“.

Správný klíč: "LinusBenedictTorvalds".

Výsledný řetězec obsahuje překlep ve vztahu ke správnému klíči v posledních 3 znacích. Důvodem je skutečnost, že sítě, které jsme vybrali, nejsou zcela vyhrazeny africkým zemím a způsob distribuce e-mailů podle IP adres v našem protokolu.

S dostatečnou specifikací největších sítí přidělených africkým zemím lze získat přesnou odpověď:

$ 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]

Problém lze řešit i jinak.
Stáhněte si MaxMind, rozbalte jej a další tři příkazy také vyřeší náš problém.

$ 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

Tak či onak jsme nakonec spočítali statistiky a manažeři dostali data, která potřebovali k práci!

3. Třetí fáze

Třetí fáze je poněkud podobná první - musíte také opravit službu teplé lampy, ale vše je složitější než v prvním úkolu.

3.1. Zajímavosti

V prvních 15 minutách našli tři hráči první klíč, 2 hodiny a 20 minut po začátku etapy náš vítěz úkol splnil.

3.2. Cvičení

Šel jste pracovat pro společnost, kde jsou všechny firemní dokumenty uloženy na interním Wiki serveru. Minulý rok inženýr objednal 3 nové disky pro server k jednomu stávajícímu s argumentem, že má-li být systém odolný proti chybám, musí být disky umístěny v nějakém druhu polí. Bohužel pár týdnů po jejich instalaci odjel inženýr na dovolenou do Indie a nevrátil se.

Server fungoval několik let bez poruch, ale před pár dny byla síť společnosti hacknuta. Bezpečnostní pracovníci podle instrukcí odstranili disky ze serveru a odeslali vám je. Během přepravy se jeden disk nenávratně ztratil.

Potřebujeme obnovit funkčnost Wiki, v první řadě nás zajímá obsah wiki stránek. Určitý kus textu, který byl na jedné ze stránek této wiki, je heslo pro server 1C a je naléhavě potřeba k jeho odemčení.

Kromě toho někde na wiki stránkách nebo jinde byla hesla pro log server a server pro sledování videa, která by bylo také žádoucí obnovit, bez nich je vyšetřování incidentu nemožné. Jako vždy očekáváme rychlé vyřešení problému!

3.3. Řešení

1. Zkoušíme nabootovat jeden po druhém z disků, které máme a všude dostáváme stejnou zprávu:

No bootable medium found! System halted 

Musíte z něčeho nabootovat. Opět pomáhá bootování z Live CD/DVD (Troubleshooting -> Rescue). Při načítání se snažíme najít spouštěcí oddíl, nemůžeme ho najít, skončíme v shellu. Snažíme se studovat, co a jak s disky dělat. Je známo, že jsou tři. V 7. verzi CentOS, kde jsou příkazy, je na to více nástrojů blkid nebo lsblk, které nám zobrazují všechny informace o discích.

Jak a co děláme:

$ ls /dev/sd*

To je hned zřejmé

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

Připojíme sdb1, je jasné, že se jedná o spouštěcí oddíl CentOS 6.

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

Je zřejmé, že jdeme do sekce grub a najdeme tam první klíč - James191955Gosling v neobvyklém souboru.

2. Studujeme pvs a lvs, protože pracujeme s LVM. Vidíme, že by měly existovat 2 fyzické svazky, jeden není umístěn a stěžuje si na ztracené uid. Vidíme, že by měly existovat 2 logické svazky: root a swap, zatímco root je částečně ztracen (atribut P svazku). Nejde namontovat, což je škoda! Opravdu ho potřebujeme.

Existují 2 další disky, podíváme se na ně, smontujeme a namontujeme:

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

Podíváme se, vidíme, že toto je spouštěcí oddíl CentOS 6 a duplikát toho, co je již zapnuto /dev/sdb1, a zde opět stejný klíč - DennisBMacAlistairCRitchie!
Podívejme se, jak je to složené /dev/md127.

$ mdadm --detail /dev/md127

Vidíme, že měl být sestaven ze 4 disků, ale byl sestaven ze dvou /dev/sda1 и /dev/sdc1, měla to být čísla 2 a 4 v systému. Předpokládáme, že od /dev/sda2 и /dev/sdc2 Můžete také sbírat pole. Není jasné, proč na nich nejsou žádná metadata, ale to má na svědomí admin, který je někde v Goa. Předpokládáme, že by tam měl být RAID10, i když možnosti jsou. Sbíráme:

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

Podíváme se na blkid, pvs, lvs. Zjišťujeme, že jsme shromáždili fyzický objem, který nám dříve chyběl.

lvroot byl okamžitě opraven, připojíme jej, ale nejprve aktivujeme VG:

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

A je tam vše, včetně klíče v kořenovém domovském adresáři - /root/sweet.

3. Stále se snažíme oživit náš server, aby se spustil normálně. Všechny logické svazky z našeho /dev/md0 (kde jsme vše našli) přetáhněte ji do /dev/sdb2, kde zpočátku fungoval celý server.

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

Vypneme server, odebereme disky 1 a 3, necháme druhý, nabootujeme z Live CD/DVD do Rescue. Najděte spouštěcí oddíl a obnovte zavaděč v grub:

root (hd0,0)
setup (hd0)

Odtrhneme zaváděcí disk a úspěšně načteme, ale stránka nefunguje.

4. Existují dvě možnosti, jak spustit webovou stránku: nakonfigurovat Apache od začátku nebo použít nginx s php-fpm již nakonfigurovaným předem:

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

Nakonec musíte spustit MySQL:

$ /etc/init.d/mysqld start

Nespustí se a odpověď je v tom /var/log/mysql. Jakmile vyřešíte problém s MySQL, stránka bude fungovat, na hlavní stránce bude klíč - RichardGCCMatthewGNUStallman! Nyní máme přístup k 1C a zaměstnanci budou moci dostávat své platy. A jako vždy máte před sebou spoustu práce na vytvoření infrastruktury a zabezpečení ve společnosti.

Můžeme také znovu sdílet seznam knih, které nám a našim účastníkům pomohly připravit se na hru: linux.mail.ru/books.

Děkujeme, že jste s námi! Zůstaňte naladěni na oznámení dalších her!

Zdroj: www.habr.com

Přidat komentář