Linux Quest. Baie geluk aan die wenners en vertel ons van die oplossings vir die take

Linux Quest. Baie geluk aan die wenners en vertel ons van die oplossings vir die take

Op 25 Maart het ons registrasie oopgemaak vir Linux Quest, dit is 'n speletjie vir liefhebbers en kundiges van die Linux-bedryfstelsel. Sommige statistieke: 1117 317 mense het vir die speletjie geregistreer, 241 van hulle het ten minste een sleutel gevind, 123 het die taak van die eerste fase suksesvol voltooi, 70 - die tweede en XNUMX het die derde fase geslaag. Vandag het ons speletjie tot 'n einde gekom en ons wens ons wenners geluk!

  • Alexander Teldekov het die eerste plek behaal.
    Alexander het vir homself gesê dat hy die mees tipiese stelseladministrateur is. Woon in Volgograd, administreer al sowat twintig jaar verskeie Unix-agtige stelsels. Ek het daarin geslaag om by internetverskaffers, 'n bank en 'n stelselintegreerder te werk. Nou werk hy op afstand in 'n klein maatskappy en werk aan wolkinfrastruktuur vir 'n groot buitelandse klant. Hou daarvan om te lees en musiek te luister. Oor die spel het Alexander gesê dat hy van die spel as geheel gehou het, hy hou van sulke take. Tydens 'n onderhoud by een van die maatskappye wat ek iets soortgelyks aan Hackerrank gedoen het, was dit interessant.
  • Tweede plek - Roman Suslov.
    'n Roman uit Moskou. Hy is 37 jaar oud. Werk as 'n Linux/Unix-ingenieur by Jet Infosystems. By die werk moet ek Linux/Unix-stelsels + SAN administreer en oplos. Belangstellings is uiteenlopend: Linux-stelsels, programmering, omgekeerde ingenieurswese, inligtingsekuriteit, Arduino. Oor die spel Roman het opgemerk dat hy oor die algemeen van die spel gehou het. “Ek het my brein effens gerek en ’n blaaskans geneem van die grys alledaagse lewe van alledaagse werk. 🙂 Ek sal graag meer take wil hê, anders was die speletjie klaar voor ek tyd gehad het om 'n voorsmakie daarvan te kry.”
  • Derde - alex3d.
    Alex woon in Moskou en werk in sagteware-ontwikkeling. “Dankie vir die kompetisie, dit was interessant om my google-fu-vaardighede te toets.”

Ook in die ranglys van die 10 beste spelers:

  • Yevgeniy Saldayev
  • Markel Mokhnachevsky
  • Konstantin Konosov
  • Pavel Sergeev
  • Vladimir Bovaev
  • Ivan Bubnov
  • Pavlo Klets

Ons verstaan ​​dat daar baie opsies is om al ons probleme op te los; sommige van die moontlike oplossings word hieronder beskryf.

1. Eerste fase

Ons het dit genoem "Is jy regtig 'n admin?", aangesien die taak redelik eenvoudig was - om 'n warm lampdiens reg te maak.

1.1. Interessante feite:

Twee spelers het die eerste sleutel in die eerste 15 minute van die wedstryd gekry, en in die eerste uur het ons drie leiers gehad wat die taak voltooi het.

1.2. Oefen

Jy het in 'n maatskappy gaan werk waar daar vir 'n lang tyd geen bekwame inligtingstegnologiespesialis was nie. Voordat jy begin om dinge in orde te stel, moet jy die brandende probleem oplos wat die werk van die kantoor blokkeer.

Die skoonmaker het die kragkabel van die bedienerkas met 'n mop gevang. Krag is herstel, maar 'n baie belangrike webwerf werk steeds nie. Die webwerf is belangrik omdat die maatskappy nie baie bekommerd is oor inligtingsekuriteit nie, en op die hoofblad hiervan kan jy in duidelike teks die administrateurwagwoord vir die HUB se rekenaar vind.

Die ander dag is die wagwoord verander, maar almal het die nuwe een vergeet, die direkteur kan nie werk nie. Daar is gerugte dat daar meer sleutels op hierdie masjien was wat ons kan help om die rugsteunkopie van die rekeningkundige dokumente te ontsyfer.

Almal verwag 'n vinnige oplossing van die kwessie!

1.3. Oplossing

1. Eerstens moet jy die wortelwagwoord op die virtuele masjien verander om toegang daartoe te verkry. Wanneer ons begin, merk ons ​​op dat dit Ubuntu 16.04 Server is.

Om die wortelwagwoord terug te stel, herbegin ons die masjien, wanneer die laai, op die oomblik dat die grub-kieslys vertoon word, gaan na die Ubuntu-item te wysig met die "e" -knoppie. Wysig die lyn linux, voeg dit aan die einde init=/bin/bash. Ons laai via Ctrl+x, ons kry 'n bash. Hermonteer die wortel met rw, verander die wagwoord:

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

Moenie vergeet van sinchronisasie nie, herlaai.

2. Die toestand sê dat ons webbediener nie werk nie, kyk:

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

Dit is, in werklikheid, Apache loop, maar reageer met kode 404. Kom ons kyk na die konfigurasie:

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

Hier is ook 'n sleutel - StevenPaulSteveJobs.

Gaan die pad na /usr/share/WordPress - daar is nie so iets nie, maar daar is /usr/share/wordpress. Wysig die konfigurasie en herbegin Apache.

$ systemctl restart apache2

3. Probeer weer, ons kry die fout:

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

Die databasis loop nie?

$ systemctl status mysql
Active: active (running)

Wats fout? Ons moet dit uitvind. Om dit te doen, moet jy toegang tot MySQL kry, soos beskryf in dokumentasie. Een van die dokumentasiepunte beveel aan dat ons die opsie registreer skip-grant-tables в /etc/mysql/mysql.conf.d/mysqld.cnf. Daar is ook 'n sleutel hier - AugustaAdaKingByron.

Regstelling van gebruikersregte 'wp'@'localhost'. Ons begin MySQL, maak dit toeganklik oor die netwerk, lewer kommentaar op die opsie in die konfigurasie skip-networking.

4. Na hierdie stappe begin die webbediener, maar die webwerf werk steeds nie omdat

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

Ons wysig die regte op die lêer.

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

Ons verfris die bladsy, gaan na die webwerf en vind die sleutel - BjarneStroustrup! Ons het al drie sleutels gevind, ons direkteur kan werk, ons het die rekeningkundige lêers ontsyfer. Almal is gelukkig, en jy het baie werk voor jou om infrastruktuur, rugsteun en sekuriteit in die maatskappy op te stel.

2. Tweede fase

Dit was nodig om die probleem van die insameling van analise op te los. Almal is mal oor analise - wie gebruik dit, waar en in watter hoeveelhede. Ons het met 'n saak vorendag gekom wat alle ingenieurs in die een of ander vorm in die lewe kan teëkom.

2.1. Interessante feite

Een van ons spelers het die regte sleutel binne die eerste 10 minute van die wedstryd ingevoer, en binne die eerste uur het ons 'n leier gehad wat die taak voltooi het.

2.2. Oefen

Jy het by die maatskappy gaan werk, bestuurders het na jou toe gekom en jou gevra om uit te vind aan wie briewe uit Afrika gestuur is. Ons moet die top 21 ontvangeradresse op grond daarvan bou. Die eerste letters van die ontvangers se adresse is die sleutel. Een ding: die posbediener waardeur die briewe gestuur is, laai nie. Almal verwag 'n vinnige oplossing van die kwessie!

2.3. Oplossing

1. Die bediener begin nie as gevolg van 'n nie-bestaande ruil partisie in fstab; wanneer laai, probeer die stelsel om dit te monteer en crash. Hoe om te begin?

Laai die prent af, ons het CentOS 7 afgelaai, selflaai vanaf Live CD/DVD (Foutsporing -> Redding), monteer die stelsel, redigeer /etc/fstab. Ons kry dadelik die eerste sleutel - GottfriedWilhelm11646Leibniz!

Skep ruil:

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

2. Soos altyd is daar geen wagwoord nie, jy moet die wortelwagwoord op die virtuele masjien verander. Ons het dit reeds in die eerste taak gedoen. Ons verander en meld suksesvol aan by die bediener, maar dit gaan onmiddellik na die herlaai. Die bediener word teen so 'n spoed oorlaai dat jy nie eers tyd het om al die logs noukeurig te kyk nie. Hoe om te verstaan ​​wat gebeur?

Weereens begin ons vanaf die livecd, bestudeer die stelsellogboeke noukeurig en, net vir ingeval, kyk na die cron, aangesien so 'n periodisiteit. Daar vind ons die probleem en die tweede sleutel - Alan1912MathisonTuring!

Benodig in /etc/crontab vee uit of maak kommentaar op die lyn echo b > /proc/sysrq-trigger.

3. Daarna het die bediener gelaai, en jy kan die bestuurders se taak voltooi: "Wat is die adresse in Afrika?" Hierdie inligting is oor die algemeen beskikbaar vir die publiek. Jy kan hierdie inligting op die internet vind deur die frases “ip adres afrika”, “geoip databasis” te gebruik. Om die probleem op te los, kan u vrylik beskikbare adresverspreidingsdatabasisse (geoip) gebruik. Ons het die databasis as 'n standaard gebruik MaxMind GeoLite2, beskikbaar onder 'n Creative Commons Attribution-ShareAlike 4.0-lisensie.

Kom ons probeer om ons probleem op te los deur slegs Linux-stelselhulpmiddels te gebruik, maar oor die algemeen kan dit op 'n groot aantal maniere opgelos word: met behulp van teksfiltreerhulpmiddels en die gebruik van skrifte in verskeie programmeertale.

Om mee te begin, sal ons eenvoudig die "sender-ontvanger IP"-pare uit die e-poslogboek kry /var/log/maillog (kom ons bou 'n tabel van e-pos ontvangers - sender IP). Dit kan gedoen word met die volgende opdrag:

$ 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

En voordat ons voortgaan met die samestelling van 'n databasis van Afrika-adresse, kom ons kyk na die top-IP-adresse van senders.

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

Onder almal staan ​​die eerste drie ontvangers van bo duidelik uit wat die aantal briewe betref. As jy die IP-adresse van die senders wat na adresse van hierdie top 3 gestuur het, gryp, sal jy 'n duidelike oorheersing van sekere netwerke opmerk:

$ 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

Die meeste van die netwerke 105/8, 41/8, 196/8,197/8 word aan AFRINIC toegewys - een van die vyf plaaslike internetregistrateurs wat internetbronne versprei. AFRINIC versprei adresruimte regoor Afrika. En 41/8 verwys heeltemal na AFRINIC.

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

Die antwoord op die probleem is dus in werklikheid in die logboek self.

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

Op hierdie stadium kry ons die string “LinuxBenedictTorvadst”.

Korrekte sleutel: "LinusBenedictTorvalds".

Die gevolglike string bevat 'n tikfout met betrekking tot die korrekte sleutel in die laaste 3 karakters. Dit is te wyte aan die feit dat die netwerke wat ons gekies het nie heeltemal aan Afrika-lande toegewy is nie en aan die manier waarop e-posse deur IP-adresse in ons logboek versprei word.

Met voldoende spesifikasie van die grootste netwerke wat aan Afrika-lande toegeken is, kan 'n presiese antwoord verkry word:

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

Die probleem kan ook op 'n ander manier opgelos word.
Laai MaxMind af, pak dit uit, en die volgende drie opdragte los ook ons ​​probleem op.

$ 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

Op een of ander manier het ons uiteindelik die statistieke bereken, en die bestuurders het die data ontvang wat hulle nodig gehad het om te werk!

3. Derde stadium

Die derde fase is ietwat soortgelyk aan die eerste - jy moet ook die warm lamp diens regmaak, maar alles is meer ingewikkeld as in die eerste taak.

3.1. Interessante feite

In die eerste 15 minute het drie spelers die eerste sleutel gevind; 2 uur en 20 minute na die begin van die verhoog het ons wenner die taak voltooi.

3.2. Oefen

Jy het by 'n maatskappy gaan werk waar alle maatskappydokumente op 'n interne Wiki-bediener gestoor word. Verlede jaar het 'n ingenieur 3 nuwe skywe vir die bediener bykomend tot een bestaande een bestel, met die argument dat vir die stelsel om foutverdraagsaam te wees, die skywe in 'n soort skikking geplaas moet word. Ongelukkig het die ingenieur 'n paar weke na hul installasie met vakansie na Indië gegaan en nie teruggekeer nie.

Die bediener het vir etlike jare sonder foute gewerk, maar 'n paar dae gelede is die maatskappy se netwerk gekap. Volgens die instruksies het die sekuriteitspersoneel die skywe van die bediener verwyder en dit aan jou gestuur. Tydens vervoer is een skyf onherstelbaar verlore.

Ons moet die funksionaliteit van Wiki herstel; eerstens stel ons belang in die inhoud van die wiki-bladsye. 'n Sekere stuk teks wat op een van die bladsye van hierdie wiki was, is die wagwoord vir die 1C-bediener en is dringend nodig om dit te ontsluit.

Boonop was daar iewers op die wiki-bladsye of op 'n ander plek wagwoorde vir die log-bediener en die video-toesigbediener, wat ook wenslik sou wees om te herstel; daarsonder is ondersoek na die voorval onmoontlik. Soos altyd verwag ons 'n vinnige oplossing van die kwessie!

3.3. Oplossing

1. Ons probeer een vir een selflaai vanaf die skywe wat ons het en oral ontvang ons dieselfde boodskap:

No bootable medium found! System halted 

Jy moet van iets af begin. Selflaai vanaf 'n lewendige CD/DVD (Foutsporing -> Redding) help weer. Wanneer ons laai, probeer ons die opstartpartisie vind, ons kan dit nie vind nie, ons beland in die dop. Ons probeer om te bestudeer wat en hoe om met skywe te doen. Dit is bekend dat daar drie van hulle is. Daar is meer gereedskap hiervoor in die 7de weergawe van CentOS, waar daar opdragte is blkid of lsblk, wat vir ons al die inligting oor die skywe wys.

Hoe en wat ons doen:

$ ls /dev/sd*

Dit is dadelik duidelik dat

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

Ons monteer sdb1, dit is duidelik dat dit die opstartpartisie van CentOS 6 is.

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

Dit is duidelik dat ons na die grub-afdeling gaan en die eerste sleutel daar vind - James191955Gosling in 'n ongewone lêer.

2. Ons bestudeer pvs en lvs, aangesien ons met LVM werk. Ons sien dat daar 2 fisiese volumes moet wees, een is nie opgespoor nie en kla oor 'n verlore uid. Ons sien dat daar 2 logiese volumes moet wees: wortel en ruil, terwyl wortel gedeeltelik verlore gaan (die P-kenmerk van volume). Dit is nie moontlik om te berg nie, wat jammer is! Ons het hom regtig nodig.

Daar is nog 2 skywe, ons kyk daarna, monteer en monteer dit:

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

Ons kyk, ons kan sien dat dit die selflaaipartisie van CentOS 6 is en 'n duplikaat van wat reeds aan is /dev/sdb1, en hier weer dieselfde sleutel - DennisBMacAlistairCRitchie!
Kom ons kyk hoe dit saamgestel is /dev/md127.

$ mdadm --detail /dev/md127

Ons sien dat dit uit 4 skywe saamgestel moes gewees het, maar dit is uit twee saamgestel /dev/sda1 и /dev/sdc1, hulle moes nommers 2 en 4 in die stelsel gewees het. Ons neem aan dat vanaf /dev/sda2 и /dev/sdc2 Jy kan ook 'n skikking versamel. Dit is nie duidelik hoekom daar geen metadata oor hulle is nie, maar dit is op die gewete van die admin, wat iewers in Goa is. Ons neem aan dat daar RAID10 moet wees, hoewel daar opsies is. Ons versamel:

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

Ons kyk na blkid, pvs, lvs. Ons ontdek dat ons 'n fisiese volume versamel het wat ons voorheen ontbreek het.

lvroot is dadelik herstel, ons monteer dit, maar aktiveer eers VG:

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

En alles is daar, insluitend die sleutel in die wortel tuisgids - /root/sweet.

3. Ons probeer steeds om ons bediener te laat herleef sodat dit normaal begin. Alle logiese boekdele uit ons /dev/md0 (waar ons alles gevind het) sleep dit na /dev/sdb2, waar die hele bediener aanvanklik gewerk het.

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

Ons skakel die bediener af, verwyder skywe 1 en 3, los die tweede een, begin vanaf die Live CD/DVD in Rescue. Vind die selflaaipartisie en herstel die selflaaiprogram in grub:

root (hd0,0)
setup (hd0)

Ons skeur die selflaaiskyf af en laai suksesvol, maar die webwerf werk nie.

4. Daar is twee opsies om 'n webwerf te begin: stel Apache van nuuts af of gebruik nginx met php-fpm wat reeds vooraf gekonfigureer is:

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

Uiteindelik moet u MySQL begin:

$ /etc/init.d/mysqld start

Dit sal nie begin nie, en die antwoord lê in /var/log/mysql. Sodra jy die probleem met MySQL oplos, sal die webwerf werk, op die hoofblad sal daar 'n sleutel wees - RichardGCCMatthewGNUStallman! Nou het ons toegang tot 1C, en werknemers sal hul salarisse kan ontvang. En soos altyd het jy baie werk wat voorlê om infrastruktuur en sekuriteit in die maatskappy te vestig.

Ons kan ook weer 'n lys boeke deel wat ons en ons deelnemers gehelp het om vir die speletjie voor te berei: linux.mail.ru/books.

Dankie dat jy by ons is! Bly ingeskakel vir aankondigings van die volgende speletjies!

Bron: will.com

Voeg 'n opmerking