Linux Quest. Õnnitleme võitjaid ja rääkige meile ülesannete lahendustest

Linux Quest. Õnnitleme võitjaid ja rääkige meile ülesannete lahendustest

25. märtsil avasime registreerimise Linux Quest, see on mäng Linuxi operatsioonisüsteemi armastajatele ja ekspertidele. Veidi statistikat: mängule registreerus 1117 inimest, neist 317 leidsid vähemalt ühe võtme, 241 täitis edukalt esimese etapi ülesande, 123 - teise ja 70 kolmanda etapi. Tänaseks on meie mäng lõppenud ja õnnitleme võitjaid!

  • Esikoha saavutas Aleksander Teldekov.
    Aleksander ütles endamisi, et ta on kõige tüüpilisem süsteemiadministraator. Elab Volgogradis, on juba paarkümmend aastat administreerinud erinevaid Unixi-laadseid süsteeme. Mul õnnestus töötada Interneti-pakkujates, pangas ja süsteemiintegraatorina. Nüüd töötab ta eemalt väikeses ettevõttes, töötades välismaise suurkliendi jaoks pilvetaristu kallal. Armastab lugeda ja muusikat kuulata. Mängu kohta ütles Aleksander, et talle meeldis mäng tervikuna, talle meeldivad sellised ülesanded. Intervjuu ajal ühes ettevõttes, kus tegin midagi Hackerrankiga sarnast, oli see huvitav.
  • Teine koht - Roman Suslov.
    Romaan Moskvast. Ta on 37 aastat vana. Töötab Linuxi/Unixi insenerina ettevõttes Jet Infosystems. Tööl pean administreerima ja tõrkeotsingut tegema Linuxi/Unixi süsteemid + SAN. Huvid on erinevad: Linuxi süsteemid, programmeerimine, pöördprojekteerimine, infoturve, Arduino. Mängu kohta märkis Roman, et talle mäng üldiselt meeldis. “Pirutasin veidi ajusid ja puhkasin igapäevatöö hallist argipäevast. 🙂 Tahaks rohkem ülesandeid, vastasel juhul oli mäng juba läbi, enne kui jõudsin sellest maitsest osa saada.
  • Kolmandaks - alex3d.
    Alex elab Moskvas ja töötab tarkvaraarendusega. "Aitäh konkursi eest, oli huvitav oma google-fu oskusi proovile panna."

Samuti 10 parima mängija edetabelis:

  • Jevgeni Saldajev
  • Markel Mokhnachevsky
  • Konstantin Konosov
  • Pavel Sergejev
  • Vladimir Bovajev
  • Ivan Bubnov
  • Pavlo Klets

Mõistame, et kõigi meie probleemide lahendamiseks on palju võimalusi; mõningaid võimalikke lahendusi kirjeldatakse allpool.

1. Esimene etapp

Me nimetasime seda "Kas sa oled tõesti admin?", kuna ülesanne oli üsna lihtne - sooja lambi teenust parandada.

1.1. Huvitavaid fakte:

Esimese võtme leidsid kaks mängijat mängu esimese 15 minutiga ja esimese tunniga oli meil kolm liidrit, kes ülesande täitsid.

1.2. Harjutus

Läksite tööle ettevõttesse, kus pikka aega puudus pädev infotehnoloogiaspetsialist. Enne kui asud korda seadma, tuleb lahendada põletav probleem, mis kontori tööd takistab.

Koristaja püüdis mopiga serverikapi toitejuhtme kinni. Elektrivool on taastatud, kuid väga oluline veebisait ei tööta endiselt. Veebileht on oluline, sest ettevõtte infoturbe pärast väga ei tegele ja selle pealehelt leiab selge tekstina tegevjuhi arvuti administraatori parooli.

Üleeile vahetati parool ära, aga kõik unustasid uue, direktor ei saa töötada. Käivad jutud, et sellel masinal oli rohkem võtmeid, mis aitasid meil raamatupidamisdokumentide varukoopiat lahti mõtestada.

Kõik ootavad probleemi kiiret lahendamist!

1.3. Lahendus

1. Kõigepealt peate virtuaalmasina juurparooli muutma, et sellele juurde pääseda. Alustades märkame, et see on Ubuntu 16.04 server.

Juurparooli lähtestamiseks taaskäivitame masina, laadimisel minge grubi menüü kuvamise hetkel Ubuntu üksuse redigeerimiseks nupuga “e”. Redigeerige rida linux, lisage see lõppu init=/bin/bash. Laadime Ctrl+x abil, saame bashi. Ühendage juur uuesti rw-ga, muutke parool:

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

Ärge unustage sünkroonimist, taaskäivitamist.

2. Tingimus ütleb, et meie veebiserver ei tööta, vaadake:

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

See tähendab, et Apache töötab, kuid vastab koodiga 404. Vaatame konfiguratsiooni:

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

Siin on ka võti – StevenPaulSteveJobs.

Tee kontrollimine /usr/share/WordPress - sellist asja pole, aga on /usr/share/wordpress. Muutke konfiguratsiooni ja taaskäivitage Apache.

$ systemctl restart apache2

3. Proovige uuesti, saame veateate:

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

Andmebaas ei tööta?

$ systemctl status mysql
Active: active (running)

Mis viga? Peame selle välja mõtlema. Selleks peate saama juurdepääsu MySQL-ile, nagu kirjeldatud jaotises dokumentatsioon. Üks dokumentatsioonipunkte soovitab meil võimaluse registreerida skip-grant-tables в /etc/mysql/mysql.conf.d/mysqld.cnf. Siin on ka võti – AugustaAdaKingByron.

Kasutajaõiguste parandamine 'wp'@'localhost'. Käivitame MySQL-i, muudame selle võrgu kaudu juurdepääsetavaks, kommenteerides valikut konfiguratsioonis skip-networking.

4. Pärast neid samme veebiserver käivitub, kuid sait ikka ei tööta, 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 562

Muudame faili õigusi.

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

Värskendame lehte, läheme saidile ja leiame võtme - BjarneStroustrup! Leidsime kõik kolm võtit üles, meie direktor saab tööd teha, dekrüpteerisime raamatupidamisfailid. Kõik on rahul ja teil on ees palju tööd infrastruktuuri, varukoopiate ja turvalisuse seadistamiseks ettevõttes.

2. Teine etapp

Oli vaja lahendada analüütika kogumise probleem. Analüütikat armastavad kõik – kes, kus ja mis kogustes seda kasutab. Jõudsime välja juhtumiga, millega kõik insenerid võivad elus ühel või teisel kujul kokku puutuda.

2.1. Huvitavaid fakte

Üks meie mängijatest sisestas mängu esimese 10 minuti jooksul õige võtme ja esimese tunni jooksul oli meil juht, kes ülesande täitis.

2.2. Harjutus

Läksite firmasse tööle, teie juurde tulid juhid ja palusid teil välja selgitada, kellele Aafrikast kirju saadeti. Peame nende põhjal koostama 21 parimat adressaadi aadressi. Võtmeks on adressaatide aadresside esimesed tähed. Üks asi: meiliserver, mille kaudu kirju saadeti, ei lae. Kõik ootavad probleemi kiiret lahendamist!

2.3. Lahendus

1. Server ei käivitu fstab-i olematu vahetuspartitsiooni tõttu, laadimisel proovib süsteem seda paigaldada ja jookseb kokku. Kuidas käivitada?

Laadige alla pilt, laadisime alla CentOS 7, käivitage Live CD/DVD-lt (Tõrkeotsing -> Rescue), ühendage süsteem, redigeerige /etc/fstab. Leiame kohe esimese võtme - GottfriedWilhelm11646Leibniz!

Loo vahetus:

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

2. Nagu ikka, parooli pole, virtuaalmasinas tuleb muuta root parool. Seda tegime juba esimeses ülesandes. Muudame ja logime edukalt serverisse, kuid see läheb kohe taaskäivitusse. Server on sellise kiirusega üle koormatud, et teil pole isegi aega kõiki logisid hoolikalt vaadata. Kuidas aru saada, mis toimub?

Taas käivitame livecd-st, uurime hoolikalt süsteemi logisid ja igaks juhuks uurime croni, kuna selline perioodilisus. Sealt leiame probleemi ja teise võtme – Alan1912MathisonTuring!

Vaja sisse /etc/crontab rida kustutada või kommenteerida echo b > /proc/sysrq-trigger.

3. Pärast seda on server laaditud ja saate täita haldurite ülesande: "Millised on aadressid Aafrikas?" See teave on üldsusele üldiselt kättesaadav. Selle teabe leiate Internetist fraaside "ip-aadress africa", "geoip-andmebaas" abil. Probleemi lahendamiseks saab kasutada vabalt saadaolevaid aadresside levitamise andmebaase (geoip). Kasutasime andmebaasi standardina MaxMind GeoLite2, saadaval Creative Commonsi Attribution-ShareAlike 4.0 litsentsi alusel.

Proovime oma probleemi lahendada ainult Linuxi süsteemiutiliitide abil, kuid üldiselt saab seda lahendada väga mitmel viisil: kasutades teksti filtreerimise utiliite ja kasutades skripte erinevates programmeerimiskeeltes.

Alustuseks saame meililogist lihtsalt saatja-saaja IP-paarid /var/log/maillog (koostame meili saajate tabeli – saatja IP). 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.txt

Ja enne kui jätkame Aafrika aadresside andmebaasi koostamist, vaatame saatjate populaarseimaid IP-aadresse.

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

Nende kõigi seas tõusevad kirjade arvu poolest selgelt esile kolm esimest adressaati tipust. Kui koondate selle top 3 aadressidele saatnud saatjate IP-aadressid, märkate teatud võrkude selget ülekaalu:

$ 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

Enamik võrkudest 105/8, 41/8, 196/8,197/8 on eraldatud AFRINIC-le - ühele viiest Interneti-ressursse levitavast piirkondlikust Interneti-registripidajast. AFRINIC levitab aadressiruumi kogu Aafrikas. Ja 41/8 viitab täielikult AFRINIC-le.

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

Seega on vastus probleemile 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 [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]

Selles etapis saame stringi "LinuxBenedictTorvadst".

Õige võti: "LinusBenedictTorvalds".

Saadud string sisaldab kirjaviga seoses õige võtmega kolmes viimases tähemärgis. Selle põhjuseks on asjaolu, et meie valitud võrgud ei ole täielikult pühendatud Aafrika riikidele ja sellele, kuidas meilisõnumeid jagatakse IP-aadresside järgi meie logis.

Aafrika riikidele eraldatud suurimate võrkude piisava täpsustamisega saab täpse vastuse:

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

Probleemi saab lahendada ka muul viisil.
Laadige alla MaxMind, pakkige see lahti ja järgmised kolm käsku lahendavad ka meie probleemi.

$ 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

Nii või teisiti arvutasime lõpuks statistika välja ja juhid said tööks vajalikud andmed kätte!

3. Kolmas etapp

Kolmas etapp on mõnevõrra sarnane esimesega - peate parandama ka sooja lambi teenust, kuid kõik on keerulisem kui esimeses ülesandes.

3.1. Huvitavaid fakte

Esimese 15 minutiga leidsid kolm mängijat esimese võtme, 2 tundi ja 20 minutit pärast etapi algust täitis meie võitja ülesande.

3.2. Harjutus

Läksite tööle ettevõttesse, kus kõik ettevõtte dokumendid on salvestatud sisemisse Wiki serverisse. Eelmisel aastal tellis insener serverisse lisaks ühele olemasolevale 3 uut kettale, väites, et süsteemi tõrketaluvuse tagamiseks on vaja kettad paigutada mingitesse massiividesse. Kahjuks läks insener paar nädalat pärast nende paigaldamist Indiasse puhkusele ega naasnud.

Server töötas mitu aastat tõrgeteta, kuid paar päeva tagasi häkiti ettevõtte võrku. Vastavalt juhistele eemaldasid turvatöötajad kettad serverist ja saatsid need teile. Transpordi käigus läks üks ketas pöördumatult kaotsi.

Peame taastama Wiki funktsionaalsuse, ennekõike huvitab meid vikilehtede sisu. Teatud tekstilõik, mis oli selle viki ühel leheküljel, on 1C serveri parool ja seda on hädasti vaja selle avamiseks.

Lisaks olid kuskil vikilehtedel või mujal logiserveri ja videovalveserveri paroolid, mida oleks samuti soovitav taastada, ilma nendeta pole juhtumi uurimine võimatu. Nagu alati, ootame probleemile kiiret lahendust!

3.3. Lahendus

1. Proovime käivitada ükshaaval olemasolevatelt ketastelt ja kõikjal saame sama sõnumi:

No bootable medium found! System halted 

Peate millestki käivitama. Taas aitab taaskäivitamine Live CD/DVD-lt (Tõrkeotsing -> Rescue). Laadimisel proovime leida alglaadimise partitsiooni, me ei leia seda, satume kesta. Püüame uurida, mida ja kuidas ketastega teha. Teadaolevalt on neid kolm. CentOS-i 7. versioonis on selleks rohkem tööriistu, kus on käsud blkid või lsblk, mis näitavad meile kogu teavet ketaste kohta.

Kuidas ja mida me teeme:

$ ls /dev/sd*

See on kohe selge

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

Ühendame sdb1, on selge, et see on CentOS 6 alglaadimissektsioon.

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

Ilmselgelt läheme grubi sektsiooni ja leiame sealt esimese võtme - James191955Gosling ebatavalisest failist.

2. Uurime pvs-i ja lvs-i, kuna töötame LVM-iga. Näeme, et peaks olema 2 füüsilist köidet, üks ei asu ja kaebab kadunud uid üle. Näeme, et peaks olema 2 loogilist köidet: root ja swap, samas kui juur on osaliselt kadunud (mahu P atribuut). Seda pole võimalik paigaldada, millest on kahju! Meil on teda tõesti vaja.

Seal on veel 2 ketast, vaatame neid, paneme kokku ja paigaldame:

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

Vaatame ja näeme, et see on CentOS 6 alglaadimispartitsioon ja juba olemasoleva duplikaat /dev/sdb1, ja siin jälle sama võti - DennisBMacAlistairCRitchie!
Vaatame, kuidas see kokku pannakse /dev/md127.

$ mdadm --detail /dev/md127

Näeme, et see oleks pidanud olema kokku pandud 4 kettast, kuid see pandi kokku kahest /dev/sda1 и /dev/sdc1, oleksid need pidanud süsteemis olema numbritega 2 ja 4. Eeldame, et alates /dev/sda2 и /dev/sdc2 Samuti saate koguda massiivi. Pole selge, miks neil metaandmeid pole, kuid see on kuskil Goas asuva administraatori südametunnistusel. Eeldame, et RAID10 peaks olema, kuigi valikuid on. Kogume:

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

Vaatame blkid, pvs, lvs. Avastame, et oleme kogunud füüsilise mahu, mis meil varem puudus.

lvroot parandati kohe, paigaldame selle, kuid esmalt aktiveerime VG:

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

Ja kõik on olemas, kaasa arvatud võti juur-kodukataloogis - /root/sweet.

3. Püüame endiselt oma serverit taaselustada, et see normaalselt käivituks. Kõik meie loogilised köited /dev/md0 (kust me kõik leidsime) lohistage see sinna /dev/sdb2, kus algselt töötas kogu server.

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

Lülitame serveri välja, eemaldame kettad 1 ja 3, jätame teise, käivitame Live CD/DVD-lt Rescue'i. Leidke alglaadimissektsioon ja taastage alglaadur grubis:

root (hd0,0)
setup (hd0)

Rebime alglaadimisketta lahti ja laadime edukalt, kuid sait ei tööta.

4. Veebisaidi käivitamiseks on kaks võimalust: konfigureerige Apache nullist või kasutage nginxi koos php-fpm-iga, mis on juba eelnevalt konfigureeritud:

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

Lõpuks peate käivitama MySQL-i:

$ /etc/init.d/mysqld start

See ei käivitu ja vastus peitub selles /var/log/mysql. Niipea, kui lahendate probleemi MySQL-iga, töötab sait, avalehel on võti - RichardGCCMatthewGNUStallman! Nüüd on meil juurdepääs 1C-le ja töötajad saavad oma palka kätte. Ja nagu ikka, ootab teid ees suur töö infrastruktuuri ja turvalisuse loomisel ettevõttes.

Samuti saame taas jagada nimekirja raamatutest, mis aitasid meil ja meie osalejatel mänguks valmistuda: linux.mail.ru/books.

Aitäh, et olete meiega! Olge kursis järgmiste mängude teadaannetega!

Allikas: www.habr.com

Lisa kommentaar