Linux Quest. Onnea voittajille ja kerro meille tehtävien ratkaisuista

Linux Quest. Onnea voittajille ja kerro meille tehtävien ratkaisuista

25. maaliskuuta avasimme ilmoittautumisen Linux Quest, tämä on peli Linux-käyttöjärjestelmän ystäville ja asiantuntijoille. Joitakin tilastoja: peliin ilmoittautui 1117 henkilöä, joista 317 löysi ainakin yhden avaimen, 241 suoritti onnistuneesti ensimmäisen vaiheen tehtävän, 123 - toisen ja 70 läpäisi kolmannen vaiheen. Tänään pelimme on päättynyt ja onnittelemme voittajiamme!

  • Alexander Teldekov sijoittui ykköseksi.
    Alexander sanoi itselleen olevansa tyypillisin järjestelmänvalvoja. Asuu Volgogradissa, on hallinnoinut erilaisia ​​Unix-tyyppisiä järjestelmiä noin kaksikymmentä vuotta. Onnistuin työskentelemään Internet-palveluntarjoajien, pankin ja järjestelmäintegraattorin parissa. Nyt hän työskentelee etänä pienessä yrityksessä pilviinfrastruktuurin parissa suurelle ulkomaiselle asiakkaalle. Rakastaa lukemista ja musiikin kuuntelua. Aleksanteri sanoi pelistä, että hän piti pelistä kokonaisuudessaan, hän rakastaa tällaisia ​​​​tehtäviä. Haastattelussa eräässä yrityksessä, jossa tein jotain samanlaista kuin Hackerrank, se oli mielenkiintoista.
  • Toinen sija - Roman Suslov.
    Romaani Moskovasta. Hän on 37-vuotias. Työskentelee Linux/Unix-insinöörinä Jet Infosystemsillä. Töissä minun on hallinnoitava ja suoritettava vianmääritys Linux/Unix-järjestelmiä + SANia. Kiinnostuksen kohteet ovat erilaisia: Linux-järjestelmät, ohjelmointi, käänteinen suunnittelu, tietoturva, Arduino. Tietoja pelistä Roman huomautti, että hän piti pelistä kaiken kaikkiaan. ”Vennytin hieman aivojani ja otin tauon arjen työn harmaasta arjesta. 🙂 Haluaisin lisää tehtäviä, muuten ennen kuin ehdin maistaa sitä, peli oli jo ohi.”
  • Kolmas - alex3d.
    Alex asuu Moskovassa ja työskentelee ohjelmistokehityksen parissa. "Kiitos kilpailusta, oli mielenkiintoista testata google-fu-taitojani."

Myös 10 parhaan pelaajan joukossa:

  • Jevgeni Saldajev
  • Markel Mokhnachevsky
  • Konstantin Konosov
  • Pavel Sergeev
  • Vladimir Bovaev
  • Ivan Bubnov
  • Pavlo Klets

Ymmärrämme, että on monia vaihtoehtoja kaikkien ongelmien ratkaisemiseksi; joitakin mahdollisista ratkaisuista kuvataan alla.

1. Ensimmäinen vaihe

Kutsuimme sitä "Oletko todella järjestelmänvalvoja?", koska tehtävä oli melko yksinkertainen - korjata lämmin lamppupalvelu.

1.1. Mielenkiintoisia faktoja:

Kaksi pelaajaa löysi ensimmäisen avaimen pelin ensimmäisten 15 minuutin aikana, ja ensimmäisen tunnin aikana meillä oli kolme johtajaa, jotka suorittivat tehtävän.

1.2. Harjoittele

Menit töihin yritykseen, jossa ei pitkään aikaan ollut osaavaa tietotekniikan asiantuntijaa. Ennen kuin aloitat asioiden järjestämisen, sinun on ratkaistava polttava ongelma, joka estää toimiston työn.

Siivooja nappasi palvelinkaapin virtajohdon mopilla. Sähköt on palautettu, mutta erittäin tärkeä verkkosivusto ei vieläkään toimi. Sivusto on tärkeä, koska yritys ei ole kovin huolissaan tietoturvasta, ja tämän etusivulta löydät selkeänä tekstinä toimitusjohtajan tietokoneen ylläpitäjän salasanan.

Toissapäivänä salasana vaihdettiin, mutta kaikki unohtivat uuden, johtaja ei voi työskennellä. Huhutaan, että tässä koneessa oli enemmän avaimia, jotka voisivat auttaa meitä tulkitsemaan kirjanpitoasiakirjojen varmuuskopion.

Kaikki odottavat nopeaa ratkaisua ongelmaan!

1.3. Ratkaisu

1. Ensinnäkin sinun on vaihdettava virtuaalikoneen pääkäyttäjän salasana, jotta pääset käyttämään sitä. Aloittaessamme huomaamme, että tämä on Ubuntu 16.04 Server.

Pääkäyttäjän salasanan nollaamiseksi käynnistämme koneen uudelleen, latauksen aikana, kun grub-valikko näytetään, siirry muokkaamaan Ubuntu-kohdetta "e" -painikkeella. Muokkaa riviä linux, lisää se loppuun init=/bin/bash. Lataamme Ctrl+x:llä, saamme bashin. Liitä root uudelleen rw:llä, vaihda salasana:

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

Älä unohda synkronointia, käynnistä uudelleen.

2. Ehto sanoo, että verkkopalvelimemme ei toimi, katso:

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

Eli itse asiassa Apache on käynnissä, mutta vastaa koodilla 404. Katsotaanpa konfiguraatiota:

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

Täällä on myös avain - StevenPaulSteveJobs.

Reitin tarkistaminen /usr/share/WordPress - Sellaista ei ole, mutta on /usr/share/wordpress. Muokkaa asetusta ja käynnistä Apache uudelleen.

$ systemctl restart apache2

3. Yritä uudelleen, saamme virheilmoituksen:

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

Tietokanta ei ole käynnissä?

$ systemctl status mysql
Active: active (running)

Mikä hätänä? Meidän on selvitettävä se. Tätä varten sinun on hankittava MySQL:n käyttöoikeus kohdassa kuvatulla tavalla dokumentointi. Yksi dokumentaatiokohdista suosittelee, että rekisteröimme vaihtoehdon skip-grant-tables в /etc/mysql/mysql.conf.d/mysqld.cnf. Täällä on myös avain - AugustaAdaKingByron.

Käyttäjän oikeuksien korjaaminen 'wp'@'localhost'. Käynnistämme MySQL:n, teemme sen saataville verkon kautta kommentoimalla vaihtoehtoa konfiguraatiossa skip-networking.

4. Näiden vaiheiden jälkeen verkkopalvelin käynnistyy, mutta sivusto ei vieläkään toimi, koska

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

Muokkaamme tiedoston oikeuksia.

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

Päivitämme sivun, menemme sivustolle ja löydämme avaimen - BjarneStroustrup! Löysimme kaikki kolme avainta, johtajamme osaa toimia, purimme kirjanpitotiedostot. Kaikki ovat tyytyväisiä, ja sinulla on edessäsi paljon työtä infrastruktuurin, varmuuskopioiden ja tietoturvan luomiseksi yrityksessä.

2. Toinen vaihe

Oli tarpeen ratkaista analytiikan keräämisen ongelma. Kaikki rakastavat analytiikkaa - kuka käyttää sitä, missä ja missä määrin. Keksimme tapauksen, jonka kaikki insinöörit voivat kohdata elämässään tavalla tai toisella.

2.1. Mielenkiintoisia seikkoja

Yksi pelaajistamme syötti oikean avaimen pelin ensimmäisen 10 minuutin aikana, ja ensimmäisen tunnin aikana meillä oli johtaja, joka suoritti tehtävän.

2.2. Harjoittele

Menit töihin yritykseen, johtajat tulivat luoksesi ja pyysivät sinua selvittämään, kenelle kirjeitä lähetettiin Afrikasta. Meidän on rakennettava 21 parasta vastaanottajan osoitetta niiden perusteella. Vastaanottajien osoitteiden ensimmäiset kirjaimet ovat avain. Yksi asia: postipalvelin, jonka kautta kirjeet lähetettiin, ei lataudu. Kaikki odottavat nopeaa ratkaisua ongelmaan!

2.3. Ratkaisu

1. Palvelin ei käynnisty, koska fstab:ssa ei ole swap-osiota, latauksen aikana järjestelmä yrittää liittää sen ja kaatuu. Kuinka käynnistää?

Lataa kuva, latasimme CentOS 7:n, käynnistä Live CD/DVD:ltä (Vianetsintä -> Rescue), asenna järjestelmä, muokkaa /etc/fstab. Löydämme heti ensimmäisen avaimen - GottfriedWilhelm11646Leibniz!

Luo swap:

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

2. Kuten aina, salasanaa ei ole, sinun on vaihdettava virtuaalikoneen pääkäyttäjän salasana. Teimme tämän jo ensimmäisessä tehtävässä. Muutamme ja kirjaudumme sisään onnistuneesti palvelimelle, mutta se käynnistyy välittömästi uudelleen. Palvelin on ylikuormitettu sellaisella nopeudella, että sinulla ei ole aikaa edes katsoa kaikkia lokeja huolellisesti. Kuinka ymmärtää, mitä tapahtuu?

Käynnistämme jälleen livecd:ltä, tutkimme huolellisesti järjestelmälokeja ja tarkastelemme varmuuden vuoksi cronia, koska tällainen jaksotus. Sieltä löydämme ongelman ja toisen avaimen - Alan1912MathisonTuring!

Tarvitaan sisään /etc/crontab poista tai kommentoi riviä echo b > /proc/sysrq-trigger.

3. Sen jälkeen palvelin on latautunut ja voit suorittaa esimiestehtävän: "Mitä osoitteet ovat Afrikassa?" Nämä tiedot ovat yleisesti yleisön saatavilla. Löydät nämä tiedot Internetistä käyttämällä lauseita "ip-osoite afrikka", "geoip-tietokanta". Ongelman ratkaisemiseksi voit käyttää vapaasti saatavilla olevia osoitejakelutietokantoja (geoip). Käytimme tietokantaa vakiona MaxMind GeoLite2, saatavilla Creative Commons Attribution-ShareAlike 4.0 -lisenssillä.

Yritetään ratkaista ongelmamme käyttämällä vain Linux-järjestelmän apuohjelmia, mutta yleensä se voidaan ratkaista monella tapaa: käyttämällä tekstinsuodatusapuohjelmia ja käyttämällä skriptejä eri ohjelmointikielillä.

Aluksi saamme vain "lähettäjä-vastaanottaja IP" -parit postilokista /var/log/maillog (rakennetaan taulukko sähköpostin vastaanottajista - lähettäjän IP). Tämä voidaan tehdä seuraavalla komennolla:

$ 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 ennen kuin jatkamme afrikkalaisten osoitteiden tietokannan kokoamista, katsotaanpa lähettäjien suosituimpia IP-osoitteita.

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

Näistä kaikista kirjainten määrällä erottuu selvästi ensimmäiset kolme ylhäältä saanutta. Jos keräät tämän top3:n osoitteisiin lähettäneiden lähettäjien IP-osoitteet, huomaat tiettyjen verkkojen selvän hallitsevuuden:

$ 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

Suurin osa verkoista 105/8, 41/8, 196/8,197/8 on allokoitu AFRINIC:lle - yhdelle viidestä Internet-resursseja jakavasta alueellisesta Internet-rekisteripalvelusta. AFRINIC jakaa osoiteavaruuden koko Afrikkaan. Ja 41/8 viittaa AFRINICiin kokonaan.

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

Siten vastaus ongelmaan on itse asiassa itse lokissa.

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

Tässä vaiheessa saamme merkkijonon "LinuxBenedictTorvadst".

Oikea avain: "LinusBenedictTorvalds".

Tuloksena oleva merkkijono sisältää kirjoitusvirheen suhteessa oikeaan avaimeen kolmen viimeisen merkin kohdalla. Tämä johtuu siitä, että valitsemamme verkot eivät ole täysin omistettu Afrikan maille ja tapaan, jolla sähköpostit jaetaan lokissamme olevien IP-osoitteiden mukaan.

Kun Afrikan maille osoitetut suurimmat verkot on määritelty riittävästi, voidaan saada tarkka vastaus:

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

Ongelma voidaan ratkaista myös toisella tavalla.
Lataa MaxMind, pura se ja seuraavat kolme komentoa ratkaisevat myös ongelmamme.

$ 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

Tavalla tai toisella, lopulta laskemme tilastot, ja johtajat saivat työskentelyyn tarvitsemansa tiedot!

3. Kolmas vaihe

Kolmas vaihe on hieman samanlainen kuin ensimmäinen - sinun on myös korjattava lämmin lamppupalvelu, mutta kaikki on monimutkaisempaa kuin ensimmäisessä tehtävässä.

3.1. Mielenkiintoisia seikkoja

Ensimmäisen 15 minuutin aikana kolme pelaajaa löysi ensimmäisen avaimen, 2 tuntia ja 20 minuuttia vaiheen alun jälkeen voittajamme suoritti tehtävän.

3.2. Harjoittele

Menit töihin yritykseen, jossa kaikki yrityksen asiakirjat on tallennettu sisäiselle Wiki-palvelimelle. Viime vuonna insinööri tilasi palvelimeen 3 uutta levyä yhden olemassa olevan lisäksi sillä perusteella, että jotta järjestelmä olisi vikasietoinen, levyt piti sijoittaa jonkinlaisiin matriisiin. Valitettavasti muutama viikko asennuksen jälkeen insinööri lähti lomalle Intiaan eikä palannut.

Palvelin toimi moitteettomasti useita vuosia, mutta pari päivää sitten yrityksen verkkoon hakkeroitiin. Ohjeiden mukaan turvahenkilöstö poisti levyt palvelimelta ja lähetti ne sinulle. Kuljetuksen aikana yksi levy katosi peruuttamattomasti.

Meidän on palautettava Wikin toimivuus; ensinnäkin olemme kiinnostuneita wikisivujen sisällöstä. Tietty teksti, joka oli jollakin tämän wikin sivuista, on 1C-palvelimen salasana, ja sitä tarvitaan kiireellisesti sen lukituksen avaamiseen.

Lisäksi jossain wikisivuilla tai muualla oli lokipalvelimen ja videovalvontapalvelimen salasanat, jotka myös olisi toivottavaa palauttaa, ilman niitä tapauksen tutkiminen on mahdotonta. Kuten aina, odotamme nopeaa ratkaisua ongelmaan!

3.3. Ratkaisu

1. Yritämme käynnistää yksitellen levykkeiltämme ja kaikkialla saamme saman viestin:

No bootable medium found! System halted 

Sinun on käynnistettävä jostain. Käynnistäminen Live CD/DVD:ltä (Vianetsintä -> Rescue) auttaa jälleen. Ladattaessa yritämme löytää käynnistysosion, emme löydä sitä, päädymme kuoreen. Yritämme tutkia mitä ja miten levyillä tehdään. Tiedetään, että niitä on kolme. CentOS:n seitsemännessä versiossa on tähän lisää työkaluja, joissa on komennot blkid tai lsblk, joka näyttää meille kaikki tiedot levyistä.

Miten ja mitä teemme:

$ ls /dev/sd*

Se on heti selvää

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

Asennamme sdb1:n, on selvää, että tämä on CentOS 6:n käynnistysosio.

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

Ilmeisesti menemme grub-osioon ja löydämme sieltä ensimmäisen avaimen - James191955Gosling epätavallisesta tiedostosta.

2. Opiskelemme pvs:tä ja lvs:ää, koska työskentelemme LVM:n kanssa. Näemme, että fyysisiä osia pitäisi olla 2, joista yksi ei löydy ja valittaa kadonneesta uid:sta. Näemme, että pitäisi olla 2 loogista asemaa: root ja swap, kun taas root on osittain kadonnut (volyymin P-attribuutti). Se ei ole mahdollista asentaa, mikä on sääli! Me todella tarvitsemme häntä.

On vielä 2 levyä, katsomme niitä, kokoamme ja asennamme ne:

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

Katsomme, voimme nähdä, että tämä on CentOS 6:n käynnistysosio ja kopio siitä, mikä on jo /dev/sdb1, ja tässä taas sama avain - DennisBMacAlistairCRitchie!
Katsotaan kuinka se on koottu /dev/md127.

$ mdadm --detail /dev/md127

Näemme, että se olisi pitänyt koota 4 levystä, mutta se koottiin kahdesta /dev/sda1 и /dev/sdc1, niiden olisi pitänyt olla numerot 2 ja 4 järjestelmässä. Oletamme, että alkaen /dev/sda2 и /dev/sdc2 Voit myös kerätä taulukon. Ei ole selvää, miksi niistä ei ole metatietoja, mutta tämä on järjestelmänvalvojan omallatunnolla, joka on jossain Goassa. Oletamme, että RAID10:n pitäisi olla, vaikka vaihtoehtoja onkin. Keräämme:

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

Katsomme blkid, pvs, lvs. Huomaamme, että olemme keränneet fyysisen volyymin, joka meiltä aiemmin puuttui.

lvroot korjattiin välittömästi, asennamme sen, mutta aktivoimme ensin VG:n:

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

Ja kaikki on siellä, mukaan lukien avain päähakemistossa - /root/sweet.

3. Yritämme edelleen elvyttää palvelintamme, jotta se käynnistyy normaalisti. Kaikki loogiset volyymit meiltä /dev/md0 (josta löysimme kaiken) vedä se sinne /dev/sdb2, jossa koko palvelin alun perin toimi.

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

Sammutamme palvelimen, poistamme levyt 1 ja 3, jätämme toisen, käynnistämme Live CD/DVD:ltä Rescueen. Etsi käynnistysosio ja palauta käynnistyslatain grubissa:

root (hd0,0)
setup (hd0)

Revimme käynnistyslevyn irti ja lataamme onnistuneesti, mutta sivusto ei toimi.

4. Verkkosivuston käynnistämiseen on kaksi vaihtoehtoa: määritä Apache tyhjästä tai käytä nginxiä php-fpm:n kanssa, joka on jo määritetty etukäteen:

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

Lopuksi sinun on käynnistettävä MySQL:

$ /etc/init.d/mysqld start

Se ei käynnisty, ja vastaus löytyy /var/log/mysql. Heti kun ratkaiset ongelman MySQL:llä, sivusto toimii, pääsivulla on avain - RichardGCCMatthewGNUStallman! Nyt meillä on pääsy 1C:hen, ja työntekijät voivat saada palkkansa. Ja kuten aina, sinulla on edessäsi paljon työtä infrastruktuurin ja turvallisuuden luomiseksi yritykseen.

Voimme myös jälleen jakaa listan kirjoista, jotka auttoivat meitä ja osallistujiamme valmistautumaan peliin: linux.mail.ru/books.

Kiitos, että olet kanssamme! Pysy kuulolla seuraavien pelien ilmoituksista!

Lähde: will.com

Lisää kommentti