Linux Quest. Gratulujeme víťazom a povedzte nám o riešeniach úloh

Linux Quest. Gratulujeme víťazom a povedzte nám o riešeniach úloh

25. marca sme spustili registráciu na Linux Quest, to je hra pre milovníkov a znalcov operačného systému Linux. Niekoľko štatistík: do hry sa zaregistrovalo 1117 ľudí, 317 z nich našlo aspoň jeden kľúč, 241 úspešne dokončilo úlohu prvej fázy, 123 dokončilo druhú fázu a 70 prešlo treťou fázou. Dnes sa naša hra skončila a gratulujeme našim víťazom!

  • Na prvom mieste sa umiestnil Alexander Teldekov.
    Alexander si povedal, že je najtypickejší správca systému. Žije vo Volgograde, spravuje rôzne systémy podobné Unixu už asi dvadsať rokov. Podarilo sa mi pracovať u poskytovateľov internetu, v banke a ako systémový integrátor. Teraz pracuje na diaľku v malej firme a pracuje na cloudovej infraštruktúre pre veľkého zahraničného zákazníka. Rád číta a počúva hudbu. O hre Alexander povedal, že sa mu páči hra ako celok, miluje takéto úlohy. Počas rozhovoru v jednej z firiem som robil niečo podobné ako Hackerrank, bolo to zaujímavé.
  • Druhé miesto - Roman Suslov.
    Román z Moskvy. Má 37 rokov. Pracuje ako Linux/Unix inžinier v Jet Infosystems. V práci musím spravovať a riešiť problémy so systémami Linux/Unix + SAN. Záujmy sú rôzne: Linuxové systémy, programovanie, reverzné inžinierstvo, informačná bezpečnosť, Arduino. O hre Roman poznamenal, že sa mu hra celkovo páčila. „Trochu som si pretiahol mozog a oddýchol si od šedej každodennosti každodennej práce. 🙂 Chcela by som mať viac úloh, inak kým som tomu stihla prísť na chuť, hra sa už skončila.“
  • Po tretie - alex3d.
    Alex žije v Moskve a pracuje vo vývoji softvéru. "Ďakujem za súťaž, bolo zaujímavé otestovať moje google-fu schopnosti."

Aj v rebríčku 10 najlepších hráčov:

  • Jevgenij Saldajev
  • Markel Mokhnachevsky
  • Konštantín Konosov
  • Pavel Sergejev
  • Vladimír Bovajev
  • Ivan Bubnov
  • Pavlo Klets

Chápeme, že existuje veľa možností riešenia všetkých našich problémov, niektoré z možných riešení sú popísané nižšie.

1. Prvá etapa

Nazvali sme to „Naozaj si admin?“, keďže úloha bola celkom jednoduchá – opraviť službu teplej lampy.

1.1. Zaujímavosti:

Prvý kľúč našli dvaja hráči v prvých 15 minútach hry a v prvej hodine sme mali troch vedúcich, ktorí úlohu splnili.

1.2. Cvičenie

Išli ste pracovať do spoločnosti, kde dlho nebol kompetentný odborník na informačné technológie. Skôr ako začnete robiť poriadok, musíte vyriešiť pálčivý problém, ktorý blokuje prácu kancelárie.

Upratovačka zachytila ​​mopom napájací kábel serverovej skrine. Napájanie bolo obnovené, ale veľmi dôležitá webová stránka stále nefunguje. Webová stránka je dôležitá, pretože spoločnosť sa veľmi nezaujíma o bezpečnosť informácií a na hlavnej stránke nájdete heslo správcu pre počítač generálneho riaditeľa.

Onedlho bolo heslo zmenené, no všetci zabudli nové, riaditeľ nemôže pracovať. Povráva sa, že na tomto stroji bolo viac kľúčov, ktoré by nám mohli pomôcť rozlúštiť záložnú kópiu účtovných dokladov.

Každý očakáva rýchle vyriešenie problému!

1.3. Riešenie

1. Najprv musíte zmeniť heslo root na virtuálnom stroji, aby ste k nemu získali prístup. Pri spustení si všimneme, že ide o server Ubuntu 16.04.

Ak chcete resetovať heslo root, reštartujeme počítač, pri načítaní, keď sa zobrazí ponuka grub, prejdite na úpravu položky Ubuntu pomocou tlačidla „e“. Upravte riadok linux, pridajte ho na koniec init=/bin/bash. Načítame cez Ctrl+x, dostaneme bash. Znovu pripojte root pomocou rw, zmeňte heslo:

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

Nezabudnite na synchronizáciu, reštartujte počítač.

2. Podmienka hovorí, že náš webový server nefunguje, pozrite sa:

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

To znamená, že Apache je spustený, ale odpovedá kódom 404. Pozrime sa na konfiguráciu:

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

Je tu aj kľúč – StevenPaulSteveJobs.

Kontrola cesty /usr/share/WordPress - nič také neexistuje, ale existuje /usr/share/wordpress. Upravte konfiguráciu a reštartujte Apache.

$ systemctl restart apache2

3. Skúste to znova, zobrazí sa chyba:

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

Databáza nefunguje?

$ systemctl status mysql
Active: active (running)

Čo sa deje? Musíme na to prísť. Ak to chcete urobiť, musíte získať prístup k MySQL, ako je popísané v dokumentáciu. Jeden z bodov dokumentácie odporúča, aby sme túto možnosť zaregistrovali skip-grant-tables в /etc/mysql/mysql.conf.d/mysqld.cnf. Je tu aj kľúč – AugustaAdaKingByron.

Oprava užívateľských práv 'wp'@'localhost'. Spustíme MySQL, sprístupníme ho cez sieť, komentujeme možnosť v konfigurácii skip-networking.

4. Po týchto krokoch sa webový server spustí, ale stránka stále nefunguje, pretož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 súboru.

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

Obnovíme stránku, prejdeme na stránku a nájdeme kľúč - BjarneStroustrup! Našli sme všetky tri kľúče, náš riaditeľ môže fungovať, dešifrovali sme účtovné súbory. Všetci sú spokojní a vy máte pred sebou veľa práce s nastavením infraštruktúry, záloh a bezpečnosti vo firme.

2. Druhá etapa

Bolo potrebné vyriešiť problém zberu analytiky. Každý má rád analytiku – kto ju používa, kde a v akom množstve. Prišli sme s prípadom, s ktorým sa v tej či onej podobe môžu v živote stretnúť všetci inžinieri.

2.1. Zaujímavosti

Jeden z našich hráčov zadal správny kľúč počas prvých 10 minút hry a počas prvej hodiny sme mali vedúceho, ktorý úlohu dokončil.

2.2. Cvičenie

Išli ste pracovať do firmy, prišli za vami manažéri a požiadali vás, aby ste zistili, komu posielali listy z Afriky. Na ich základe musíme zostaviť 21 najčastejších adries príjemcov. Kľúčové sú prvé písmená adries príjemcov. Jedna vec: poštový server, cez ktorý boli listy odoslané, sa nenačíta. Každý očakáva rýchle vyriešenie problému!

2.3. Riešenie

1. Server sa nespustí z dôvodu neexistujúceho odkladacieho oddielu vo fstab, pri načítaní sa ho systém pokúsi pripojiť a spadne. Ako nabootovať?

Stiahnite si obraz, stiahli sme CentOS 7, nabootujte z Live CD/DVD (Riešenie problémov -> Záchrana), pripojte systém, upravte /etc/fstab. Okamžite nájdeme prvý kľúč – GottfriedWilhelm11646Leibniz!

Vytvorte swap:

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

2. Ako vždy, neexistuje žiadne heslo, musíte zmeniť heslo root na virtuálnom počítači. Už sme to urobili v prvej úlohe. Zmeníme a úspešne sa prihlásime na server, ale okamžite sa reštartuje. Server je preťažený takou rýchlosťou, že si ani nestihnete dôkladne prezrieť všetky protokoly. Ako pochopiť, čo sa deje?

Opäť nabootujeme z livecd, pozorne si preštudujeme systémové protokoly a pre každý prípad sa pozrieme do cronu, keďže taká periodicita. Tam nájdeme problém a druhý kľúč - Alan1912MathisonTuring!

Potrebné v /etc/crontab vymazať alebo komentovať riadok echo b > /proc/sysrq-trigger.

3. Potom sa server načítal a vy môžete dokončiť úlohu manažérov: „Aké sú adresy v Afrike?“ Tieto informácie sú všeobecne dostupné verejnosti. Tieto informácie môžete nájsť na internete pomocou fráz „ip adresa afrika“, „databáza geoip“. Na vyriešenie problému môžete použiť voľne dostupné databázy distribúcie adries (geoip). Databázu sme používali štandardne MaxMind GeoLite2, dostupná pod licenciou Creative Commons Attribution-ShareAlike 4.0.

Pokúsme sa vyriešiť náš problém iba pomocou systémových nástrojov Linux, ale vo všeobecnosti sa dá vyriešiť obrovským množstvom spôsobov: pomocou nástrojov na filtrovanie textu a pomocou skriptov v rôznych programovacích jazykoch.

Na začiatok jednoducho získame páry „IP odosielateľa a príjemcu“ z denníka pošty /var/log/maillog (zostavme si tabuľku príjemcov emailu – IP odosielateľa). To možno vykonať pomocou nasledujúceho prí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 kým budeme pokračovať v zostavovaní databázy afrických adries, pozrime sa na top IP adresy odosielateľov.

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

Spomedzi všetkých počtom písmen jednoznačne vyčnievajú prví traja príjemcovia zvrchu. Ak zistíte IP adresy odosielateľov, ktorí posielali adresy z tejto top 3, všimnete si jasnú prevahu určitých sietí:

$ 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äčšina sietí 105/8, 41/8, 196/8,197/8 je pridelená spoločnosti AFRINIC – jednému z piatich regionálnych internetových registrátorov, ktorí distribuujú internetové zdroje. AFRINIC distribuuje adresný priestor po celej Afrike. A 41/8 odkazuje úplne na AFRINIC.

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

Odpoveď na problém je teda v skutočnosti v samotnom denníku.

$ 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 tejto fáze dostaneme reťazec „LinuxBenedictTorvadst“.

Správny kľúč: "LinusBenedictTorvalds".

Výsledný reťazec obsahuje preklep vo vzťahu k správnemu kľúču v posledných 3 znakoch. Dôvodom je skutočnosť, že siete, ktoré sme vybrali, nie sú úplne venované africkým krajinám a spôsob, akým sú e-maily distribuované podľa IP adries v našom denníku.

Pri dostatočnej špecifikácii najväčších sietí pridelených africkým krajinám možno získať presnú odpoveď:

$ 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 sa dá riešiť aj inak.
Stiahnite si MaxMind, rozbaľte ho a ďalšie tri príkazy tiež vyriešia 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, nakoniec sme vypočítali štatistiky a manažéri dostali údaje, ktoré potrebovali na prácu!

3. Tretia etapa

Tretia etapa je trochu podobná prvej - musíte tiež opraviť službu teplej lampy, ale všetko je komplikovanejšie ako v prvej úlohe.

3.1. Zaujímavosti

Prvých 15 minút našli traja hráči prvý kľúč, 2 hodiny a 20 minút po začiatku etapy náš víťaz úlohu splnil.

3.2. Cvičenie

Išli ste pracovať do spoločnosti, kde sú všetky firemné dokumenty uložené na internom serveri Wiki. Minulý rok inžinier objednal 3 nové disky pre server k jednému existujúcemu s argumentom, že na to, aby bol systém odolný voči chybám, musia byť disky umiestnené v nejakom druhu polí. Bohužiaľ, pár týždňov po ich inštalácii odišiel inžinier na dovolenku do Indie a už sa nevrátil.

Server fungoval niekoľko rokov bez porúch, ale pred pár dňami bola sieť spoločnosti napadnutá. Podľa pokynov pracovníci bezpečnostnej služby odstránili disky zo servera a poslali vám ich. Počas prepravy sa jeden disk nenávratne stratil.

Potrebujeme obnoviť funkčnosť Wiki, v prvom rade nás zaujíma obsah wiki stránok. Určitý kus textu, ktorý bol na jednej zo stránok tejto wiki, je heslo pre server 1C a je naliehavo potrebné na jeho odomknutie.

Okrem toho niekde na stránkach wiki alebo inom mieste boli heslá pre server denníka a server pre sledovanie videa, ktoré by bolo tiež žiaduce obnoviť; bez nich je vyšetrovanie incidentu nemožné. Ako vždy očakávame rýchle vyriešenie problému!

3.3. Riešenie

1. Snažíme sa zaviesť jeden po druhom z diskov, ktoré máme a všade dostávame rovnakú správu:

No bootable medium found! System halted 

Musíte z niečoho nabootovať. Opäť pomáha bootovanie z Live CD/DVD (Troubleshooting -> Rescue). Pri načítavaní sa snažíme nájsť bootovací oddiel, nevieme ho nájsť, skončíme v shelli. Snažíme sa študovať, čo a ako s diskami robiť. Je známe, že sú tri. V 7. verzii CentOS je na to viac nástrojov, kde sú príkazy blkid alebo lsblk, ktoré nám zobrazujú všetky informácie o diskoch.

Ako a čo robíme:

$ ls /dev/sd*

To je hneď zrejmé

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

Pripojíme sdb1, je jasné, že ide o zavádzací oddiel CentOS 6.

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

Je zrejmé, že ideme do sekcie grub a nájdeme tam prvý kľúč - James191955Gosling v nezvyčajnom súbore.

2. Študujeme pvs a lvs, keďže pracujeme s LVM. Vidíme, že by mali existovať 2 fyzické zväzky, jeden sa nenachádza a sťažuje sa na stratené uid. Vidíme, že by mali existovať 2 logické zväzky: root a swap, pričom root je čiastočne stratený (atribút P zväzku). Nie je možné namontovať, čo je škoda! Naozaj ho potrebujeme.

Existujú ešte 2 disky, pozrieme sa na ne, zložíme a namontujeme:

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

Pozeráme, vidíme, že toto je zavádzací oddiel CentOS 6 a duplikát toho, čo už je zapnuté /dev/sdb1, a tu opäť rovnaký kľúč - DennisBMacAlistairCRitchie!
Pozrime sa, ako je to zložené /dev/md127.

$ mdadm --detail /dev/md127

Vidíme, že to malo byť zostavené zo 4 diskov, ale bolo to zostavené z dvoch /dev/sda1 и /dev/sdc1, mali byť čísla 2 a 4 v systéme. Predpokladáme, že od /dev/sda2 и /dev/sdc2 Môžete tiež zbierať pole. Nie je jasné, prečo na nich nie sú žiadne metadáta, ale to má na svedomí admin, ktorý je niekde v Goa. Predpokladáme, že by tam mal byť RAID10, aj keď možnosti sú. Zbierame:

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

Pozeráme sa na blkid, pvs, lvs. Zisťujeme, že sme zhromaždili fyzický objem, ktorý nám predtým chýbal.

lvroot bol okamžite opravený, namontujeme ho, ale najskôr aktivujeme VG:

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

A je tam všetko, vrátane kľúča v koreňovom domovskom adresári - /root/sweet.

3. Stále sa snažíme oživiť náš server, aby sa spustil normálne. Všetky logické zväzky z nášho /dev/md0 (kde sme všetko našli) presuňte ho /dev/sdb2, kde pôvodne fungoval celý server.

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

Vypneme server, odstránime disky 1 a 3, necháme druhý, nabootujeme z Live CD/DVD do Rescue. Nájdite bootovaciu oblasť a obnovte bootloader v grub:

root (hd0,0)
setup (hd0)

Odtrhneme zavádzací disk a úspešne načítame, ale stránka nefunguje.

4. Existujú dve možnosti, ako spustiť webovú stránku: nakonfigurovať Apache od začiatku alebo použiť nginx s php-fpm už nakonfigurovaným vopred:

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

Nakoniec musíte spustiť MySQL:

$ /etc/init.d/mysqld start

Nespustí sa a odpoveď je v tom /var/log/mysql. Hneď ako vyriešite problém s MySQL, stránka bude fungovať, na hlavnej stránke bude kľúč - RichardGCCMatthewGNUStallman! Teraz máme prístup k 1C a zamestnanci budú môcť dostávať svoje platy. A ako vždy, máte pred sebou veľa práce na vytvorení infraštruktúry a bezpečnosti vo firme.

Môžeme sa tiež podeliť o zoznam kníh, ktoré nám a našim účastníkom pomohli pripraviť sa na hru: linux.mail.ru/books.

Ďakujeme, že ste s nami! Zostaňte naladení na oznámenia o ďalších hrách!

Zdroj: hab.com

Pridať komentár