
25. märtsil avasime registreerimise , see on mäng Linuxi operatsioonisüsteemi armastajatele ja asjatundjatele. Veidi statistikat: mängu on registreerunud 1117 inimest, kellest 317 on leidnud vähemalt ühe võtme, 241 on edukalt läbinud esimese etapi ülesande, 123 – teise ja 70 on lõpetanud kolmanda etapi. Täna lõppes meie mäng ja õnnitleme võitjaid!
- Esikoha saavutas Aleksandr Tjeldekov.
Aleksandr ütles enda kohta, et ta on kõige tavaline süsteemiadministraator. Elab Volgogradis ja on erinevaid Unix-tüüpi süsteeme haldanud juba kakskümmend aastat. On töötanud internetiteenuse pakkujates, pangas, süsteemiintegraatoris. Praegu töötab ta väikese ettevõtte juures eemalt, tegeleb pilvinfra jaoks suure rahvusvahelise kliendi vajadustega. Armastab lugeda ja muusikat kuulata. Mängu kohta ütles Aleksandr, et see meeldis talle üldiselt, talle meeldivad sellised ülesanded. Ühes ettevõttes tööintervjuul tegi ta midagi sarnast Hackerrankiga, see oli huvitav. - Teise koha saavutas Roman Suslov.
Roman elab Moskvas. Tal on 37 aastat. Töötab Linux/Unix-insenerina ettevõttes „Infosüsteemid Jet“. Töö tõttu peab tegelema Linuxi/Unix-süsteemide haldamise ja tõrkeotsinguga + SANiga. Huvid on mitmekesised: Linux-süsteemid, programmeerimine, tagasipööramine, infotehnoloogia turvalisus, Arduino. Mängu kohta märkis Roman, et see meeldis talle üldiselt. "Treenisin oma mõtlemisoskusi natuke ja põgenesin igava igapäevase töö eest. 🙂 Sooviks rohkem ülesandeid, sest ei jõudnud ma veel rütmi sisse, kui mäng juba lõppes." - Kolmas koht — alex3d.
Aleks elab Moskvas ja tegeleb tarkvaraarendusega. "Aitäh võistluse eest, oli huvitav oma google-fu oskusi proovile panna."
Samuti on kümne parima mängija seas:
- Yevgeniy Saldayev
- Markel Mohnachevsky
- Konstantin Konosov
- Pavel Sergeev
- Vladimir Bovaev
- Ivan Bubnov
- Pavlo Klets
Me mõistame, et meie ülesannete lahendamiseks on palju võimalusi, allpool on kirjas mõned võimalikud lahendusvariandid.
1. Esimene etapp
Me nimetasime selle „Kas oled tõesti admin?“ kuna ülesanne oli üsna lihtne — parandada soe ja mugav teenus.
1.1. Huvitavad faktid:
Kaks mängijat leidsid esimese võtme esimeses 15 minutil mängust ja esimese tunni jooksul ilmus kolm liidrit, kes said ülesandega hakkama.
1.2. Ülesanne
Sa tulite tööle ettevõttesse, kus pikka aega ei olnud korralikku infotehnoloogia spetsialisti. Enne, kui hakata korda looma, tuleb lahendada põletav probleem, mis takistab kontori tööd.
Koduabiline tõukas mopiga serverikapi toitekaabli. Toide taastati, kuid väga oluline veebileht ei tööta ikkagi. Veebileht on oluline, kuna ettevõte ei ole väga mures infotehnoloogia turvalisuse pärast ja sellel on peamise lehe avatud kujul peadirektori arvuti administraatori parool.
Hiljuti muudeti parooli, kuid uut ei mäletata, direktor ei saa töötada. Käivad kuulujutud, et sellel masinal võiksid olla ka võtmed, mis aitavad meil raamatupidamisdokumentide varukoopia dekrüpteerimisel.
Kõik ootavad kiiret lahendust probleemile!
1.3. Lahendus
1. Esiteks tuleb muuta root parool virtuaalses masinas, et sellele juurde pääseda. Käivitamisel märkame, et tegemist on Ubuntu 16.04 Serveriga.
Root parooli lähtestamiseks taaskäivitame masina, laadimisel, grub menüü kuvamise hetkel, liigume Ubuntu punkti redigeerimise juurde nuppu 'e' kasutades. Redigeerime rida linux, lisades lõppu init=/bin/bash. Laadime Ctrl+x abil ja saame bash'i. Ümbermountime juurt rw, muudame parooli:
$ mount -o remount,rw /dev/mapper/ubuntu--vg-root
$ passwdÄrge unustage sync'i, taaskäivitame.
2. Tingimustes on öeldud, et meie veebiserver ei tööta, vaatame:
$ curl localhost
Not Found
Tehtud URL / ei leitud sellel serveril.
Apache/2.4.18 Seega on Apache tegelikult käivitatud, kuid annab 404 koodi. Vaatame konfiguratsiooni:
$ vim /etc/apache2/sites-enabled/000-default.confSiin on võtme sõnum — StevenPaulSteveJobs.
Kontrollime teed /usr/share/WordPress — seda ei ole, kuid on olemas /usr/share/wordpress. Muudame 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 1488Kas andmebaas ei ole käivitunud?
$ systemctl status mysql
Active: active (running) Milles siis probleem? Tuleb uurida. Selleks tuleb pääseda MySQL'i, kuidas seda teha on kirjeldatud . Üks dokumendi punkte soovitab meil lisada valiku skip-grant-tables ja /etc/mysql/mysql.conf.d/mysqld.cnf. Siin on samuti võtme sõnum — AugustaAdaKingByron.
Korrigeerime õigusi kasutajale 'wp'@'localhost'. Käivitame MySQL, teeme selle võrgu kaudu kättesaadavaks, kommenteerides konfiguratsioonis valiku skip-networking.
4. Pärast tehtud toiminguid veebiserver käivitub, kuid sait ei tööta ikkagi, kuna
Hoiatus: require_once(\/usr\/share\/wordpress\/wp-content\/themes\/twentysixteen\/footer.php): voogude avamine ebaõnnestus: Luba keelatud failis\/usr\/share\/wordpress\/wp-includes\/template.php real 562Parandame faili õigused.
$ chmod 644 \/usr\/share\/wordpress\/wp-content\/themes\/twentysixteen\/footer.php
Uuendame lehte, siseneme veebisaidile ja leiame võtme — BjarneStroustrup! Oleme leidnud kõik kolm võtit, meie direktor saab töötada, dešifreerisime raamatupidamise failid. Kõik on õnnelikud, kuid sul on ees palju tööd infrastruktuuri, varukoopiate ja ettevõtte turvalisuse loomisega.
2. Teine etapp
Pidi lahendama analüüsi kogumise ülesande. Analüüse armastavad kõik — kes ja kust ning kui palju inimesi käib. Mõtlesime välja olukorra, millega kõik insenerid võivad elus mingil moel kokku puutuda.
2.1. Huvi pakkuvad faktid
Üks meie mängijatest sisestas õige võtme esimesed 10 minutit mängust, ja esimese tunni jooksul sai meil liider, kes täitis ülesande.
2.2. Ülesanne
Sa alustasid tööd ettevõttes, sulle tulid juhid ja palusid leida, kellele saadeti meilisõnumeid Aafrikast. Pead koostama 21 kõige väärtuslikuma saaja aadressi tipplist. Saaja aadresside esimesed tähed on võtmed. Üks aga: meiliserver, mille kaudu sõnumid saadeti, ei ole saadaval. Kõik ootavad operatiivset lahendust!
2.3. Lahendus
1. Server ei käivitu, kuna fstab-is on mittetäielik swap jagunemine, süsteem proovib seda käivitada ja crashib. Kuidas käivitada?
Laadime alla ISO-faili, laadisime CentOS 7 ja käivitame Live CD\/DVD (Troubleshooting -> Rescue), montime süsteemi, teeme parandusi /etc/fstab. Siit leidsime esimese võtme — GottfriedWilhelm11646Leibniz!
Loome swap:
$ lvcreate -n swap centos -L 256M
$ sync && reboot2. Nagu ikka, parooli ei ole, tuleb muuta root parool virtuaalses masinas. Oleme seda juba varasemas ülesandes teinud. Muudame ja siseneme edukalt serverisse, kuid see käivitub kohe uuesti. Server taaskäivitub nii kiiresti, et ei jõua isegi kõiki logisid põhjalikult vaadata. Kuidas mõista, mis toimub?
Taas käivitame livecd-ga, uurime hoolikalt süsteemi logisid ja igaks juhuks vaatame croni, kuna selline sagedus on. Sealt leidsime probleemi ja teise võtme — Alan1912MathisonTuring!
Peab /etc/crontab ära eemaldama või kommenteerima read echo b > \/proc\/sysrq-trigger.
3. Pärast seda, kui server on laaditud, saab täita haldurite ülesande: „Millised on Aafrika aadressid?“ See teave on üldiselt avalikult kättesaadav. Seda teavet saab internetis leida fraasidega „ip address africa“, „geoip database“. Probleemi lahendamiseks saab kasutada vabalt kättesaadavaid aadressijaotuse andmebaase (geoip). Me kasutasime näidisena andmebaasi , mis on saadaval Creative Commonsi litsentsi Attribution-ShareAlike 4.0 alusel.
Proovime lahendada meie ülesande, kasutades ainult Linuxi süsteemikäske, kuid sellega saab tegelikult lahendada tohutu hulga erinevaid viise: teksti filtreerimise utiliitide ja erinevates programmeerimiskeeltes kirjutatud skriptide abil.
Alustame, saades e-kirja logidest paarid „IP-saatja — saaja“ /var/log/maillog (koostame e-kirjade saajate — IP saatjate tabeli). Seda saab teha järgmise 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 me jätkame Aafrika aadresside andmebaasi koostamist, vaatame kõige populaarsemaid IP-aadresse saatjatelt.
$ 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
Selgelt paistavad välja kolm esimest saajat palju kirju. Kui greppida saatjate IP-aadresse, kes saatsid neid top-3 aadressidelt, võib märgata teatud võrkude selget ü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 165Enamik võrkudest 105/8, 41/8, 196/8, 197/8 on välja antud AFRINIC-ule — ühele viiest piirkondlikust Interneti-registerist, mis tegeleb Interneti-resursside jaotamisega. AFRINIC jaotab aadressiruumi Aafrika territooriumil. Ja 41/8 kuulub AFRINIC-ule täielikult.
https://www.nic.ru/whois/?searchWord=105.0.0.0
https://www.nic.ru/whois/?searchWord=41.0.0.0
Nii, et vastus ülesandele on tegelikult 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 etapil saame stringi „LinuxBenedictTorvadst“.
Õige võti: „LinusBenedictTorvalds“.
Saadud string sisaldab trükiviga õige võti kolme viimase sümboli osas. See on tingitud sellest, et valitud võrgud ei ole täielikult eraldatud Aafrika riikidele ja kuidas meili tõhusus IP-aadresside jaotuses meie logides.
Rohke täpsustamise korral Aafrika riikidele eraldatud suurimate võrkude kohta saab täpset vastust.
$ 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 Probleemi on samuti võimalik lahendada teisel viisil.
Laadime alla MaxMind, pakime lahti, ja järgmised kolm käsku lahendavad samuti meie probleemi.
$ cat GeoLite2-Country-Locations-ru.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
Igal juhul oleme lõpuks statistika kokku lugenud ja juhid said vajalikud andmed oma tööks!
3. Kolmas etapp
Kolmas etapp sarnaneb mingil määral esimesega — samuti tuleb parandada soe lambipirnil põhinev teenus, kuid kõik on keerulisem kui esimeses ülesandes.
3.1. Huvi pakkuvad faktid
Esimese 15 minuti jooksul leidis kolm mängijat esimese võtme, kaks tundi ja 20 minutit pärast etapi algust lahendas meie võitja ülesande.
3.2. Ülesanne
Sa hakkasid tööle ettevõttes, kus kõik ettevõtte dokumendid on salvestatud sisemisele Wiki-serverile. Eelmisel aastal tellis insener serverisse kolm uut ketast, lisaks ühele olemasolevale, põhjendades seda sellega, et süsteemi töökindluse tagamiseks tuleb kettad paigaldada mingitesse massiividesse. Kahjuks, paar nädalat pärast nende paigaldamist lahkus insener puhkusele Indiasse ja ei naasnud.
Mõned aastad töötas server tõrgeteta, kuid paar päeva tagasi häkkis ettevõtte võrku. Juhiste põhjal eemaldas turvatöötajate meeskond kettad serverist ja saatis need sinu juurde. Transportimise ajal kaotati üks ketas lõplikult.
Vaja on taastada Wiki funktsionaalsus, eelkõige huvitab sisu wikis. Üks tekstitükk, mis oli ühel selle wiki leheküljest, on 1C serveri parool ja on kiirelt vajalik selle avamiseks.
Lisaks on kuskil wikis või mujal olnud logiserveri ja videovalveserveri paroolid, mille taastamine oleks samuti soovitav, ilma nendeta on juhtumi uurimine võimatu. Nagu alati, oodatakse kiiret lahendust!
3.3. Lahendus
1. Proovime käivituda järgemööda nende ketastega, mis meil on, ja kõikjal saame sama sõnumi:
No bootable medium found! System halted
Peame millegagi käivituma. Jälle päästab meid Live CD/DVD (Tõrkeotsing -> Rescue) käivitamine. Käivitamisel proovime leida käivitusosa, kuid ei leia, jõuame shelli. Proovime uurida, mis ja kuidas ketastega on. On teada, et neid on kolm. Selle jaoks on 7. versioonis CentOS-is rohkem tööriistu, kus on käsk blkid või lsblk, mis näitab meile kõike teavet ketaste kohta.
Kuidas ja mida teeme:
$ ls /dev/sd*Koheselt on näha, et
/dev/sdb1 - ext4
/dev/sdb2 - часть lvm
/dev/sda1 и /dev/sdc1 - части рейда
/dev/sda2 и /dev/sdc2 - про них ничего не известно на текущий моментMüntime sdb1, on näha, et see on CentOS 6 käivitusosa.
$ mkdir /mnt/sdb1 && mount /dev/sdb1 /mnt/sdb1Ilmselgelt läheme grub ja leiame seal esimese võtme - James191955Gosling ebatavalises failis.
2. Uurime pvs ja lvs, kuna töötame LVM-iga. Näeme, et peaks olema 2 füüsilist mahutavat, üks ei leidu jaebildil kaebab kadunud uid üle. Näeme, et peaks olema 2 loogilist mahutavat: root ja swap, samas on root osaliselt kadunud (atribuut P mahutites). Eks monteerida ei ole võimalik, kahju! See on meile väga vajalik.
On veel 2 kettast, vaatame neid, kogume ja monteerime:
$ mdadm --examine --verbose --scan
$ mdadm --assemble --verbose --scan
$ mkdir /mnt/md127 && mount /dev/md127 /mnt/md127 Vaadates, on selge, et see on CentOS 6 käivitusosa ja koopia sellest, mis on juba olemas /dev/sdb1, ja siin jälle sama võti - DennisBMacAlistairCRitchie!
Vaadatav, kuidas see kokku pandud on /dev/md127.
$ mdadm --detail /dev/md127
Näeme, et see pidi olema kokku pandud neljast kettast, see koosneb kahest /dev/sda1 ja /dev/sdc1, need pidid olema numbrites 2 ja 4 süsteemis. Eeldame, et ka /dev/sda2 ja /dev/sdc2 seda on võimalik kokku panna. Pole selge, miks neil pole metainfot, kuid see on adminni süü, kes on kuskil Goa. Eeldame, et siin peaks olema RAID10, kuigi on ka variandid. Paneme kokku:
$ mdadm --create --verbose /dev/md0 --assume-clean --level=10 --raid-devices=4 missing /dev/sda2 missing /dev/sdc2
Vaadates blkid, pvs, lvs. Tuvastame, et oleme kokku pannud füüsilise mahutava, mida meil varem polnud.
Koheselt parandasime lvroot'i, monteerime selle, aga eelnevalt aktiveerime VG:
$ vgchange -a y
$ mkdir /mnt/lvroot && mount /dev/mapper/vg_c6m1-lv_root /mnt/lvroot
Ja seal on kõik, sealhulgas võtme asukoht, mis on root'i kodu kataloogis — /root/sweet.
3. Püüame siiski ellu äratada meie serveri, et see korralikult käivitatud saaks. Kõik loogilised mahud meie /dev/md0 (kus meil kõik leidus) liigume üle /dev/sdb2, kus algselt kogu server töötas.
$ pvmove /dev/md0 /dev/sdb2
$ vgreduce vg_c6m1 /dev/md0Küürime serveri välja, eemaldame 1. ja 3. kettad, jätame teise, laadime Live CD/DVD pealt Rescue režiimi. Leiame boot-partitsiooni, taastame laadijat grub's:
root (hd0,0)
setup (hd0)
Eemaldame boot-ketta ja laadime edukalt sisse, kuid veebileht ei tööta.
4. Veebilehe käivitamiseks on kaks võimalust: seadistada Apache nullist või kasutada eelnevalt seadistatud nginx'i koos 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. Kui lahendate MySQL probleemi, veebileht käivitub, peaees leiate võtme — RichardGCCMatthewGNUStallman! Nüüd on meil juurdepääs 1C-sse ja töötajad saavad palku saada. Ja sul on endiselt palju tööd tegemata, et rajada infrastruktuuri ja turvalisuse osas ettevõttes korrapära.
Samuti saame veel kord jagada nimekirja raamatutest, mis aitasid meil ja meie osalejatel mänguks valmistuda: .
Aitäh, et olite meiega! Jälgige järgnevate mängude teateid!
Allikas: habr.com
