
25. marca sme spustili registráciu na , toto je hra pre fanúšikov a znalcov operačného systému LinuxTrochu štatistík: Do hry sa zaregistrovalo 1 117 ľudí, z ktorých 317 našlo aspoň jeden kľúč, 241 úspešne dokončilo prvú fázu, 123 druhú a 70 tretiu. 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.
Roman je z Moskvy. Má 37 rokov. Pracuje. Linux/Unixový inžinier v spoločnosti Infosystems Jet. Moja práca zahŕňa administráciu a riešenie problémov. LinuxUnixové systémy + SAN. Záujmy sú rôzne: LinuxSystémy, programovanie, reverzné inžinierstvo, informačná bezpečnosť, Arduino. Roman povedal, že sa mu hra celkovo páčila. „Naštartoval som si myseľ a dal si pauzu od driny každodennej práce. 🙂 Chcel by som viac výziev, pretože skôr, ako som sa stihol dostať do rytmu, hra 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 počítači, aby ste k nemu získali prístup. Po spustení si všimnete, že Ubuntu Server 16.04.
Ak chcete obnoviť heslo root, reštartujte počítač. Pri bootovaní, keď sa zobrazí ponuka grub, prejdite na úpravu položky. Ubuntu Stlačte tlačidlo „e“. Upravte riadok „linux“ a 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
$ passwdNezabudnite 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.confJe 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 apache23. 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 1488Databá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 . 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 562Upravujeme 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ť?
Stiahnutím obrázka sme si stiahli CentOS 7, bootovanie z Live CD/DVD (Riešenie problémov -> Záchrana), pripojenie systému, úprava /etc/fstab. Okamžite nájdeme prvý kľúč – GottfriedWilhelm11646Leibniz!
Vytvorte swap:
$ lvcreate -n swap centos -L 256M
$ sync && reboot2. 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 , dostupná pod licenciou Creative Commons Attribution-ShareAlike 4.0.
Skúsme vyriešiť náš problém iba pomocou systémových nástrojov. Linux, ale vo všeobecnosti sa to 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.txtA 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 L2JhbjAbM67GA99jg@mail.ru
4165 iHKTBkegOQa6fIALq@mail.ru
3739 nHkcBl7BdgXxijSYD7@mail.ru
3405 SMAzPJAzbl9vp4hAXo@mail.ru
3346 xILz6d7P@mail.ru
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 '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 165Väčš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 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.ruV tejto fáze dostaneme riadok „LinuxBenedikt Torvadst».
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 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 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
Potrebujem z niečoho nabootovať. Opäť pomáha bootovanie z Live CD/DVD (Riešenie problémov -> Záchrana). Pri bootovaní sa snažím nájsť bootovací oddiel, ale nefunguje to a skončím v shelli. Snažím sa zistiť, čo sa deje s diskami. Viem, že sú tri. Vo verzii 7 je na to viac nástrojov. CentOS, kde sú tímy 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 - про них ничего не известно на текущий моментPripájame sdb1, je jasné, že ide o bootovací oddiel. CentOS 6.
$ mkdir /mnt/sdb1 && mount /dev/sdb1 /mnt/sdb1Je 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 Pozrime sa na to, je jasné, že ide o bootovací oddiel. CentOS 6 a duplikát toho, čo je už 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/md0Vypneme 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: .
Ďakujeme, že ste s nami! Zostaňte naladení na oznámenia o ďalších hrách!
Zdroj: hab.com
