
25. märtsil avasime registreerimise , see on mäng Linuxi operatsioonisüsteemi armastajatele ja tundjatele. Veidi statistikat: mängule on registreerunud 1117 inimest, neist 317 leidis vähemalt ühe võtme, 241 said esimesest etapist edukalt läbi, 123 teisest ja 70 läbis kolmanda etapi. Täna on meie mäng lõppenud ja soovime õnne meie võitjatele!
- Esimese koha saavutas Aleksandr Tjeldikov.
Aleksandr ütles enda kohta, et ta on kõige tavalisem süsteemihaldur. Ta elab Volgogradis ja on erinevaid Unix-like süsteeme haldanud juba kakskümmend aastat. On suutnud töötada internetiteenuse pakkujates, pangas ja süsteemiintegraatoris. Praegu töötab ta väikese firma juures kaugtööna, tegeleb suurte välismaiste klientide pilveinfrastruktuuriga. Ta armastab lugeda ja muusikat kuulata. Mängu kohta ütles Aleksandr, et mäng meeldis talle üldiselt, talle meeldivad sellised ülesanded. Ühes ettevõttes kandideerimise ajal oli ta teinud sarnast nagu Hackerrank, see oli huvitav. - Teise koha saavutas Roman Suslov.
Roman Moskvas elab. Ta on 37-aastane. Töötab Linux/Unix-insenerina ettevõttes „Infosüsteemid Jet“. Tööraames tegeleb ta Linux/Unix-süsteemide ja SAN-i haldamise ning tõrkeotsinguga. Huvialad on mitmekesised: Linux-süsteemid, programmeerimine, reverse engineering, infotehnoloogia turvalisus, Arduino. Roman mainis mängu kohta, et see meeldis talle üldiselt. „Sai veidi ajusid venitava tegevusega tegeleda ja igapäevaelust kõrvale põgeneda. 🙂 Tahaks rohkem ülesandeid, sest ei jõudnud ma ikka mängu sisse elada, kui see juba läbi oli.“ - Kolmas — alex3d.
Aleks elab Moskvas, tegeleb tarkvaraarendusega. „Aitäh võistluse eest, oli huvitav oma google-fu oskusi proovile panna.“
Samuti on edetabelis kümne parema mängija seas:
- Yevgeniy Saldayev
- Markel Mohnačevski
- Konstantin Koonosov
- Pavel Sergejev
- Vladimir Bovaev
- Ivan Bubnov
- Pavlo Klets
Me mõistame, et meie ülesannete lahendamiseks on palju variante, allpool on kirjeldatud mõned võimalikud lahendused.
1. Esimene etapp
Otsustasime selle nimetada „Kas sa tõeliselt oled admin?“, kuna ülesanne oli üsna lihtne — parandada soe lampteenus.
1.1. Huvitavad faktid:
Kaks mängijat leidsid esimese võtme mängu esimeses 15 minutit ning tunni jooksul oli meil kolm liidrit, kes ülesande täitmisega hakkama said.
1.2. Ülesanne
Sa alustasid tööd ettevõttes, kus pikka aega polnud pädevat infotehnoloogia spetsialisti. Enne kui hakata korda looma, tuleb lahendada tuld põletav probleem, mis takistab kontori tööd.
Koristaja tõmbas mopiga serverikapi toitekaabli. Toide taastati, kuid väga oluline veebileht ei tööta ikka veel. Veebileht on oluline, kuna ettevõte ei hooli väga infotehnoloogilisest turvalisusest ning sellel on peamise lehe peal avalikult direktorite arvuti administraatori parool.
Hiljuti muudeti parool ära, kuid uus on unustatud, direktor ei saa töötada. Kuuldavasti olid sellel masinal ka võtmed, mis võivad aidata meil raamatupidamisdokumentide varukoopia dekrüpteerimisel.
Kõik ootavad kiiret lahendust probleemile!
1.3. Lahendus
Esmalt tuleb muuta virtual machine'i root parool, et sellele juurde pääseda. Käivitamisel märkame, et see on Ubuntu 16.04 Server.
Kasutaja parooli lähtestamiseks taaskäivitame masina, laadimise ajal, grub menüü kuvamise hetkel, läheneme Ubuntu punkti redigeerimisele nupp „e“. Muudame linux rida, lisades lõpuks init=/bin/bash. Laadime Ctrl+x läbi, saame bash'i. Mountime juurkasutuse rw, muudame parooli:
$ mount -o remount,rw /dev/mapper/ubuntu--vg-root
$ passwdÄrge unustage sync'i, taaskäivitage.
2. Tingimustes on öeldud, et meie veebiserver ei tööta, vaatame:
$ curl localhost
Not Found
Tatud URL / ei leitud sellel serveris.
Apache/2.4.18 Tähendab, et Apache on käivitatud, kuid vastab 404 koodiga. Vaadake konfiguratsiooni:
$ vim /etc/apache2/sites-enabled/000-default.confSiin on võti — StevenPaulSteveJobs.
Kontrollime teed /usr/share/WordPress — sellist ei ole, aga on /usr/share/wordpress. Parandame konfiguratsiooni ja taaskäivitame Apache'i.
$ systemctl restart apache23. Proovime uuesti, saame vea:
Warning: mysqli_real_connect(): (HY000/2002): Connection refused in /usr/share/wordpress/wp-includes/wp-db.php on line 1488Andmebaas ei ole käivitatud?
$ systemctl status mysql
Active: active (running) Mis siis nüüd on? Tuleb uurida. Selleks peame saama MySQL-i ligipääsu, kuidas seda teha on kirjeldatud . Üks dokumentatsiooni punktidest soovitab meil lisada valiku skip-grant-tables ühes /etc/mysql/mysql.conf.d/mysqld.cnf. Siit leiate ka võtme — AugustaAdaKingByron.
Muudame õigusi kasutajale 'wp'@'localhost'. Käivitame MySQL ja teeme selle võrgu kaudu kättesaadavaks, kommenteerides konfiguratsioonis valiku skip-networking.
4. Pärast tehtud toiminguid veebiserver käivitub, kuid sait ei toimi siiski, kuna
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 562Muudame faili õigusi.
$ chmod 644 /usr/share/wordpress/wp-content/themes/twentysixteen/footer.php
Uuendame lehte, siseneme saidile ja leiame võtme — BjarneStroustrup! Oleme leidnud kõik kolm keyd, meie direktor saab töötada, oleme dekrüpteerinud raamatupidamisfailid. Kõik on õnnelikud ja sind ootab ees palju tööd infrastruktuuri, varukoopia ja turvalisuse seadistamisega ettevõttes.
2. Teine etapp
Pidime lahendama analüütika kogumise ülesande. Analüütikat armastavad kõik — kes, kust ja kui palju käiakse. Me mõtlesime välja juhuse, millega võivad kõik insenerid elus mingil hetkel kokku puutuda.
2.1. Huvi pakkuvad faktid
Üks meie mängijatest sisestas õiged võtmed juba mängu esimesel 10 minutil, ja tunni jooksul sai meil juht, kes sai ülesande täitmisega hakkama.
2.2. Ülesanne
Sa tulid tööle ettevõttes, kus juhid palusid sul leida, kellele saadeti kirjad Aafrikast. Tuleb koostada 21 parimat saajate aadressi. Saajate aadresside esimesed tähed - see on võtmepunkt. Kuid on üks probleem: e-posti server, mille kaudu kirjad saadeti, ei laadi üles. Kõik ootavad operatiivset lahendust!
2.3. Lahendus
1. Server ei laadi üles, kuna fstab'is ei ole olemasolevat swap'i osa, süsteem proovib selle koormata ja kukub kokku. Kuidas käivitada?
Laadime alla image'i, me laadisime CentOS 7, käivitame Live CD/DVD (Tõrkeotsing -> Rescue), mountime süsteemi ja teeme muudatused /etc/fstab. Siit leiame esimese võtme — GottfriedWilhelm11646Leibniz!
Loome swap'i:
$ lvcreate -n swap centos -L 256M
$ sync && reboot2. Parool puudub, tuleb muuta root parool virtuaalmasinas. Oleme seda juba varem teinud. Muudame parooli ja saame edukalt serverisse sisse, kuid see kohe taaskäivitub. Server taaskäivitub nii kiiresti, et ei jõua isegi kõiki logisid hoolikalt vaadata. Kuidas mõista, mis toimub?
Taaskord laadime sisse livecd, uurime hoolikalt süsteemi logisid ja juhuks, kui selline perioodilisus on, vaatame ka kront. Sealt leiame probleemi ja teise võtme — Alan1912MathisonTuring!
Peame /etc/crontab eemaldama või kommenteerima välja rea echo b > /proc/sysrq-trigger.
3. Pärast seda server käivitus ja saame täita juhtide ülesannet: «Millised on Aafrika adressid?» See teave on üldiselt avalikult kättesaadav. Seda teavet saab leida internetis fraasidega «ip address africa», «geoip database». Ülesande lahendamiseks saab kasutada vabalt kättesaadavaid aadresside jaotuse andmebaase (geoip). Me kasutasime etalonina andmebaasi , mis on saadaval Creative Commons Attribution-ShareAlike 4.0 litsentsi järgi.
Katsume lahendada meie ülesande, kasutades ainult Linuxi süsteemi utiliite, kuid tegelikult saab seda lahendada paljusid viise: teksti filtreerimise utiliitide ja erinevate programmeerimiskeelte skriptide abil.
Esiteks saame lihtsalt «IP saatja — saaja» paarid välja e-posti logist /var/log/maillog (koostame tabeli e-posti saajate — IP saatja). Seda saab teha sellise käsuga:
$ 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.txtJa enne kui jätkame Aafrika aadresside andmebaasi koostamisega, vaatame saadetavate tipp IP-aadresse.
$ 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
Kõige silmapaistvamad kolme esimest saatjat eristuvad saadetud kirjade arvu poolest. Kui grep'ida saatjate IP-aadresse, kes saatsid teateid nende kolme kõige kõrgema aadressi peale, võib märgata teatud võrkude ülekaalu:
$ 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 165Enamus võrkudest 105/8, 41/8, 196/8, 197/8 on määratud AFRINIC'i poolt — üks viiest piirkondlikust interneti registrist, mis tegeleb internetiressursside jaotamisega. AFRINIC jagab aadressiruumi Aafrika territooriumil. Ja 41/8 kuulub AFRINIC'i alla täielikult.
https://www.nic.ru/whois/?searchWord=105.0.0.0
https://www.nic.ru/whois/?searchWord=41.0.0.0
Seega on vastus ülesandele tegelikult juba logis endas.
$ 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.ruSellel hetkel saame stringi «LinuxBenedictTorvadst».
Õige võti: «LinusBenedictTorvalds».
Saadud string sisaldab õigesse võtit võrreldes 3 viimases sümbolis trükiviga. See on tingitud sellest, et meie valitud võrgud ei ole täielikult jagatud Aafrika riikidele ning sellest, kuidas emailid jagunevad meie logis IP-aadresside vahel.
Piisava täpsustamise korral Aafrika riikidele jaotatud suurimate võrkude osas on võimalik saada täpne vastus.
$ 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 Ülesanne on samuti võimalik lahendada teise viisi kaudu.
Laadime alla MaxMind, pakime lahti ja järgmised kolm käsku lahendavad samuti meie ülesande.
$ cat GeoLite2-Country-Locations-et.csv | grep "Aafrika" | 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
Nii või naa jõudsime lõpuks statistikani, ja juhatajatel olid vajalikud andmed tööks olemas!
3. Kolmas etapp
Kolmas etapp on osaliselt sarnane esimesele — tuleb samuti parandada sooja lampide teenust, kuid kõik on keerulisem kui esimeses ülesandes.
3.1. Huvid pakkuvad faktid
Esimese 15 minuti jooksul leidis kolm mängijat esimese võtme, 2 tunni ja 20 minuti pärast etapi algusest saavutas meie võitja ülesande täitmise.
3.2. Ülesanne
Sa alustasid tööd ettevõttes, kus kõik ettevõtte dokumendid hoitakse sisemisel Wiki-serveril. Eelmisel aastal tellis insener serverisse 3 uut ketast täienduseks ühele olemasolevale, põhjendades seda sellega, et süsteemi töökindluse tagamiseks tuleks kettaid paigaldada mingitesse massiividesse. Kahjuks, paar nädalat pärast nende paigaldamist lahkus insener puhkusele Indiasse ja ei naasenud.
Mõned aastad töötas server ilma tõrgeteta, kuid paar päeva tagasi häkiti ettevõtte võrku. Juhiste kohaselt tõid turvatöötajad kettad serverist välja ja saatsid need sulle. Transportimise käigus läks üks ketas pöördumatult kaduma.
Vaja on taastada Wiki töövõime, esmajoones huvitab sisu Wiki lehtedelt. Teatud tekst, mis oli ühe selle wiki lehe peal, on 1C serveri parool ja on kiiresti vajalik selle avamiseks.
Samuti olid kuskil wikingi lehtedel või mujal serveri logide ja videovalve serveri paroolid, mille taastamine oleks samuti soovitav, ilma nendeta on avarii uurimine võimatu. Nagu alati, ootavad nad kiiret lahendust küsimusele!
3.3. Lahendus
1. Püüame käivituda järjestikku nendelt ketastelt, mis meil on, ja igal pool saame sama sõnumi:
No bootable medium found! System halted
Peame kuidagi käivituma. Taaskord päästab meid Live CD/DVD (Troubleshooting -> Rescue). Käivitamisel püüame leida käivitatava sektsiooni, ei leia, jõuame shelli. Püüame uurida, mis ja kuidas ketastega on. On teada, et neid on kolm. 7. versioonis CentOSis on tööriistu rohkem, kus on käsud blkid või lsblk, mis näitavad meile kogu teavet kettaste kohta.
Kuidas ja mida teeme:
$ ls /dev/sd*Koheselt on nähtav, et
/dev/sdb1 - ext4
/dev/sdb2 - часть lvm
/dev/sda1 и /dev/sdc1 - части рейда
/dev/sda2 и /dev/sdc2 - про них ничего не известно на текущий моментMontime sdb1, näeme, et see on CentOS 6 käivitatav sektsioon.
$ mkdir /mnt/sdb1 && mount /dev/sdb1 /mnt/sdb1Ilmselgelt suundume grub'i sektsiooni ja leiame sealt esimese võtme — James191955Gosling ebatavalises failis.
2. Uuringute pvs ja lvs, kuna töötame LVM-iga. Näeme, et peaks olema 2 füüsilist mahut, üks pole saadaval ja annab teada kadunud uid'ist. Näeme, et peaks olema 2 loogilist mahut: root ja swap, kuid root on osaliselt kadunud (mahu atribuut P). Monteerimine ei õnnestu, kahju! See on meile väga vajalik.
On veel 2 ketast, vaatame neid, kogume ja monteerime:
$ mdadm --examine --verbose --scan
$ mdadm --assemble --verbose --scan
$ mkdir /mnt/md127 && mount /dev/md127 /mnt/md127 Vaadates näeme, et see on CentOS 6 käivituspartitsioon ja koopia sellest, mis juba on /dev/sdb1, ja siin on jälle sama võti — DennisBMacAlistairCRitchie!
Vaadates, kuidas see kokku pandud on /dev/md127.
$ mdadm --detail /dev/md127
Näeme, et see peaks olema kokku pandud 4 kettast, kuid pandud kokku kahest /dev/sda1 ja /dev/sdc1, need peaksid olema numbrid 2 ja 4 süsteemis. Eeldame, et ka /dev/sda2 ja /dev/sdc2 saab moodustada massiivi. Pole selge, miks neil puudub metadata, kuid see on administraatori süü, kes on kuskil Goas. Eeldame, et siin peaks olema RAID10, kuigi on ka teisi variante. Koostame:
$ mdadm --create --verbose /dev/md0 --assume-clean --level=10 --raid-devices=4 missing /dev/sda2 missing /dev/sdc2
Vaadates blkid, pvs, lvs. Avastame, et oleme kokku pannud füüsilise mahuti, mille me varem puudus.
Koheselt paranes lvroot, monteerime selle, kuid eelnevalt aktiveerime VG:
$ vgchange -a y
$ mkdir /mnt/lvroot && mount /dev/mapper/vg_c6m1-lv_root /mnt/lvroot
Ja seal on kõik, sealhulgas ka võti root kodudirektoris — /root/sweet.
3. Proovime siiski meie serverit ellu äratada, et see normaalselt käivituks. Kõik loogilised mahud meie /dev/md0 (kus me kõik leidsime) tõstame üle /dev/sdb2, kus server algselt töötas.
$ pvmove /dev/md0 /dev/sdb2
$ vgreduce vg_c6m1 /dev/md0Lülitame serveri välja, eemaldame 1. ja 3. ketta, jätame teise, käivitame Live CD/DVD Rescue'ist. Leiame süsteemiosa, taastame bootloaderi grub'is:
root (hd0,0)
setup (hd0)
Eemaldame boot ketta ja käivitame edukalt, aga veebileht ei tööta.
4. Veebilehe käivitamiseks on kaks võimalust: seadistada Apache nullist või kasutada juba eelnevalt seadistatud nginx'i php-fpm'iga:
$ /etc/init.d/nginx start
$ /etc/init.d/php-fpm start
Lõpuks tuleb käivitada MySQL:
$ /etc/init.d/mysqld start See ei käivitu ja mõistatuse lahendus peitub /var/log/mysql. Niikaua, kui lahendate MySQL probleemi, töötab veebileht, peamisel lehel on võti — RichardGCCMatthewGNUStallman! Nüüd on meil juurdepääs 1C-le ja töötajad saavad palka. Ja sul on nagu alati ees palju tööd infrastruktuuri ja ettevõtte turvalisuse seadistamisega.
Samuti saame jagada veelkord loetelu raamatutest, mis aitasid meid ja meie osalejaid mänguks valmistuda: .
Tänan, et olite meiega! Jälgige järgmiste mängude teateid!
Allikas: habr.com
