Linux Quest. Tillykke til vinderne og fortæl os om løsningerne på opgaverne

Linux Quest. Tillykke til vinderne og fortæl os om løsningerne på opgaverne

Den 25. marts åbnede vi tilmelding til Linux Quest, dette er et spil for elskere og eksperter af Linux-operativsystemet. Nogle statistikker: 1117 personer registrerede sig til spillet, 317 af dem fandt mindst én nøgle, 241 fuldførte opgaven i første fase med succes, 123 - anden og 70 bestod tredje fase. I dag er vores spil slut, og vi lykønsker vores vindere!

  • Alexander Teldekov tog førstepladsen.
    Alexander sagde til sig selv, at han er den mest typiske systemadministrator. Bor i Volgograd, har administreret forskellige Unix-lignende systemer i omkring tyve år. Jeg nåede at arbejde i internetudbydere, en bank og en systemintegrator. Nu arbejder han eksternt i en lille virksomhed, hvor han arbejder på cloud-infrastruktur for en stor udenlandsk kunde. Elsker at læse og lytte til musik. Om spillet sagde Alexander, at han kunne lide spillet som helhed, han elsker sådanne opgaver. Under et interview hos en af ​​virksomhederne lavede jeg noget lignende Hackerrank, det var interessant.
  • Andenpladsen - Roman Suslov.
    En roman fra Moskva. Han er 37 år gammel. Arbejder som Linux/Unix-ingeniør hos Jet Infosystems. På arbejdet skal jeg administrere og fejlfinde Linux/Unix-systemer + SAN. Interesserne er forskellige: Linux-systemer, programmering, reverse engineering, informationssikkerhed, Arduino. Om spillet Roman bemærkede, at han generelt kunne lide spillet. ”Jeg strakte hjernen lidt og tog en pause fra den grå hverdag i arbejdshverdagen. 🙂 Jeg vil gerne have flere opgaver, ellers før jeg nåede at smage det, var spillet allerede slut.”
  • For det tredje - alex3d.
    Alex bor i Moskva og arbejder med softwareudvikling. "Tak for konkurrencen, det var interessant at teste mine google-fu færdigheder."

Også på ranglisten over de 10 bedste spillere:

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

Vi forstår, at der er mange muligheder for at løse alle vores problemer; nogle af de mulige løsninger er beskrevet nedenfor.

1. Første fase

Vi kaldte det "Er du virkelig en administrator?", da opgaven var ret enkel - at ordne en varm lampeservice.

1.1. Interessante fakta:

To spillere fandt den første nøgle i de første 15 minutter af spillet, og i den første time havde vi tre ledere, der fuldførte opgaven.

1.2. Dyrke motion

Du gik på arbejde i en virksomhed, hvor der i lang tid ikke var nogen kompetent informationsteknologispecialist. Før du begynder at sætte tingene i stand, skal du løse det brændende problem, der blokerer for kontorets arbejde.

Rengøringsdamen fangede serverskabets strømkabel med en moppe. Strømmen er blevet genoprettet, men en meget vigtig hjemmeside fungerer stadig ikke. Hjemmesiden er vigtig, fordi virksomheden ikke er særlig optaget af informationssikkerhed, og på hovedsiden af ​​denne kan du i klartekst finde administratoradgangskoden til den administrerende direktørs computer.

Forleden blev adgangskoden ændret, men alle glemte den nye, direktøren kan ikke arbejde. Der er rygter om, at der var flere nøgler på denne maskine, som kunne hjælpe os med at tyde sikkerhedskopien af ​​regnskabsdokumenterne.

Alle forventer en hurtig løsning af problemet!

1.3. Løsning

1. Først og fremmest skal du ændre root-adgangskoden på den virtuelle maskine for at få adgang til den. Når vi starter, bemærker vi, at dette er Ubuntu 16.04 Server.

For at nulstille root-adgangskoden genstarter vi maskinen, når du indlæser, i det øjeblik grub-menuen vises, skal du gå til at redigere Ubuntu-elementet med knappen "e". Rediger linux linux, tilføj den til slutningen init=/bin/bash. Vi indlæser via Ctrl+x, vi får en bash. Genmonter roden med rw, skift adgangskoden:

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

Glem ikke synkronisering, genstart.

2. Betingelsen siger, at vores webserver ikke fungerer, se:

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

Det vil sige, at Apache faktisk kører, men svarer med kode 404. Lad os se på konfigurationen:

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

Der er også en nøgle her - StevenPaulSteveJobs.

Tjek stien /usr/share/WordPress - der er ikke sådan noget, men det er der /usr/share/wordpress. Rediger konfigurationen og genstart Apache.

$ systemctl restart apache2

3. Prøv igen, vi får fejlen:

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

Kører databasen ikke?

$ systemctl status mysql
Active: active (running)

Hvad er der galt? Vi skal finde ud af det. For at gøre dette skal du få adgang til MySQL, som beskrevet i dokumentation. Et af dokumentationspunkterne anbefaler, at vi registrerer muligheden skip-grant-tables в /etc/mysql/mysql.conf.d/mysqld.cnf. Der er også en nøgle her - AugustaAdaKingByron.

Korrigering af brugerrettigheder 'wp'@'localhost'. Vi lancerer MySQL, gør det tilgængeligt over netværket og kommenterer muligheden i konfigurationen skip-networking.

4. Efter disse trin starter webserveren, men siden virker stadig ikke pga

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

Vi redigerer rettighederne til filen.

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

Vi genopfrisker siden, går ind på siden og finder nøglen - BjarneStroustrup! Vi fandt alle tre nøgler, vores direktør kan arbejde, vi dekrypterede regnskabsfilerne. Alle er glade, og du har et stort arbejde foran dig med at opsætte infrastruktur, backup og sikkerhed i virksomheden.

2. Anden fase

Det var nødvendigt at løse problemet med at indsamle analyser. Alle elsker analyser - hvem bruger det, hvor og i hvilke mængder. Vi kom med en sag, som alle ingeniører kan støde på i en eller anden form i livet.

2.1. Interessante fakta

En af vores spillere indtastede den rigtige nøgle inden for de første 10 minutter af spillet, og inden for den første time havde vi en leder, der fuldførte opgaven.

2.2. Dyrke motion

Du gik på arbejde i virksomheden, ledere kom til dig og bad dig finde ud af, hvem der blev sendt breve til fra Afrika. Vi skal bygge de 21 bedste modtageradresser baseret på dem. De første bogstaver i modtagernes adresser er nøglen. En ting: Mailserveren, som brevene blev sendt igennem, indlæses ikke. Alle forventer en hurtig løsning af problemet!

2.3. Løsning

1. Serveren starter ikke på grund af en ikke-eksisterende swap-partition i fstab; ved indlæsning forsøger systemet at montere den og går ned. Hvordan starter man op?

Download billedet, vi downloadede CentOS 7, boot fra Live CD/DVD (Fejlfinding -> Rescue), monter systemet, rediger /etc/fstab. Vi finder straks den første nøgle - GottfriedWilhelm11646Leibniz!

Opret bytte:

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

2. Som altid er der ingen adgangskode, du skal ændre root-adgangskoden på den virtuelle maskine. Det gjorde vi allerede i den første opgave. Vi ændrer og logger ind på serveren, men den går straks i genstart. Serveren er overbelastet med en sådan hastighed, at du ikke engang har tid til at se alle logfilerne omhyggeligt. Hvordan forstår man, hvad der sker?

Igen starter vi fra livecd'en, studerer omhyggeligt systemlogfilerne og, for en sikkerheds skyld, kigger vi ind i cron, da en sådan periodicitet. Der finder vi problemet og den anden nøgle - Alan1912MathisonTuring!

Behøves ind /etc/crontab slette eller kommentere linjen echo b > /proc/sysrq-trigger.

3. Hvorefter serveren er indlæst, og du kan udføre ledernes opgave: "Hvad er adresserne i Afrika?" Disse oplysninger er generelt tilgængelige for offentligheden. Du kan finde disse oplysninger på internettet ved hjælp af sætningerne "ip-adresse afrika", "geoip-database". For at løse problemet kan du bruge frit tilgængelige adressedistributionsdatabaser (geoip). Vi brugte databasen som standard MaxMind GeoLite2, tilgængelig under en Creative Commons Attribution-ShareAlike 4.0-licens.

Lad os prøve at løse vores problem ved kun at bruge Linux-systemværktøjer, men generelt kan det løses på et stort antal måder: ved hjælp af tekstfiltreringsværktøjer og brug af scripts på forskellige programmeringssprog.

Til at begynde med får vi simpelthen "afsender-modtager IP"-parrene fra mailloggen /var/log/maillog (lad os bygge en tabel over e-mail-modtagere - afsender-IP). Dette kan gøres med følgende kommando:

$ 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

Og før vi fortsætter med at kompilere en database over afrikanske adresser, lad os tage et kig på afsenderes top IP-adresser.

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

Blandt dem alle skiller de tre første modtagere fra toppen sig klart ud i forhold til antallet af breve. Hvis du greb IP-adresserne på afsendere, der sendte til adresser fra denne top 3, vil du bemærke en klar overvægt af visse netværk:

$ 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

De fleste af netværkene 105/8, 41/8, 196/8,197/8 er allokeret til AFRINIC - en af ​​de fem regionale internetregistratorer, der distribuerer internetressourcer. AFRINIC distribuerer adresserum i hele Afrika. Og 41/8 refererer fuldstændig til AFRINIC.

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

Således ligger svaret på problemet i virkeligheden i selve loggen.

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

På dette stadie får vi strengen "LinuxBenedictTorvadst".

Korrekt nøgle: "LinusBenedictTorvalds".

Den resulterende streng indeholder en tastefejl i forhold til den korrekte nøgle i de sidste 3 tegn. Dette skyldes det faktum, at de netværk, vi valgte, ikke er helt dedikeret til afrikanske lande og den måde, e-mails distribueres på IP-adresser i vores log.

Med tilstrækkelig specifikation af de største netværk, der er allokeret til afrikanske lande, kan et præcist svar opnås:

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

Problemet kan også løses på en anden måde.
Download MaxMind, pak den ud, og de næste tre kommandoer løser også vores problem.

$ 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

På den ene eller anden måde fik vi til sidst beregnet statistikken, og lederne fik de data, de skulle bruge for at arbejde!

3. Tredje fase

Den tredje fase ligner lidt den første - du skal også ordne den varme lampeservice, men alt er mere kompliceret end i den første opgave.

3.1. Interessante fakta

I de første 15 minutter fandt tre spillere den første nøgle; 2 timer og 20 minutter efter etapens start fuldførte vores vinder opgaven.

3.2. Dyrke motion

Du gik på arbejde for en virksomhed, hvor alle virksomhedens dokumenter er gemt på en intern Wiki-server. Sidste år bestilte en ingeniør 3 nye diske til serveren ud over en eksisterende, idet han argumenterede for, at for at systemet skulle være fejltolerant, skulle diskene placeres i en slags arrays. Desværre tog ingeniøren et par uger efter deres installation på ferie til Indien og vendte ikke tilbage.

Serveren fungerede uden fejl i flere år, men for et par dage siden blev virksomhedens netværk hacket. Ifølge instruktionerne fjernede sikkerhedspersonalet diskene fra serveren og sendte dem til dig. Under transporten gik en disk uigenkaldeligt tabt.

Vi er nødt til at genoprette funktionaliteten af ​​Wiki; først og fremmest er vi interesserede i indholdet af wiki-siderne. Et bestemt stykke tekst, der var på en af ​​siderne i denne wiki, er adgangskoden til 1C-serveren og er presserende nødvendig for at låse den op.

Derudover var der et eller andet sted på wiki-siderne eller et andet sted adgangskoder til logserveren og videoovervågningsserveren, som også ville være ønskelige at genoprette; uden dem er efterforskning af hændelsen umulig. Som altid forventer vi en hurtig løsning på problemet!

3.3. Løsning

1. Vi forsøger at starte en efter en fra de diske, vi har, og overalt modtager vi den samme besked:

No bootable medium found! System halted 

Du skal starte fra noget. Opstart fra en Live CD/DVD (Fejlfinding -> Rescue) hjælper igen. Ved indlæsning forsøger vi at finde opstartspartitionen, vi kan ikke finde den, vi ender i skallen. Vi forsøger at studere, hvad og hvordan man gør med diske. Det er kendt, at der er tre af dem. Der er flere værktøjer til dette i den 7. version af CentOS, hvor der er kommandoer blkid eller lsblk, som viser os alle oplysninger om diskene.

Hvordan og hvad gør vi:

$ ls /dev/sd*

Det er umiddelbart tydeligt

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

Vi monterer sdb1, det er klart, at dette er opstartspartitionen til CentOS 6.

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

Det er klart, vi går til grub-sektionen og finder den første nøgle der - James191955Gosling i en usædvanlig fil.

2. Vi studerer pvs og lvs, da vi arbejder med LVM. Vi ser at der skal være 2 fysiske bind, det ene er ikke lokaliseret og klager over en tabt uid. Vi ser, at der skal være 2 logiske volumener: root og swap, mens root er delvist tabt (P-attributten for volumen). Det er ikke muligt at montere, hvilket er ærgerligt! Vi har virkelig brug for ham.

Der er 2 diske mere, vi ser på dem, samler og monterer dem:

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

Vi ser, vi kan se, at dette er opstartspartitionen af ​​CentOS 6 og en kopi af det, der allerede er på /dev/sdb1, og her igen den samme nøgle - DennisBMacAlistairCRitchie!
Lad os se, hvordan det er samlet /dev/md127.

$ mdadm --detail /dev/md127

Vi ser, at den skulle have været samlet af 4 skiver, men den blev samlet af to /dev/sda1 и /dev/sdc1, skulle de have været nummer 2 og 4 i systemet. Det antager vi fra /dev/sda2 и /dev/sdc2 Du kan også samle et array. Det er ikke klart, hvorfor der ikke er metadata på dem, men det er på samvittigheden hos administratoren, som er et sted i Goa. Vi antager, at der skal være RAID10, selvom der er muligheder. Vi indsamler:

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

Vi ser på blkid, pvs, lvs. Vi opdager, at vi har samlet et fysisk volumen, som vi tidligere manglede.

lvroot blev straks repareret, vi monterer den, men aktiverer først VG:

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

Og alt er der, inklusive nøglen i rodhjemmemappen - /root/sweet.

3. Vi forsøger stadig at genoplive vores server, så den starter normalt. Alle logiske bind fra vores /dev/md0 (hvor vi fandt alt) træk det til /dev/sdb2, hvor hele serveren oprindeligt fungerede.

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

Vi slukker serveren, fjerner disk 1 og 3, forlader den anden, starter fra Live CD/DVD'en til Rescue. Find opstartspartitionen og gendan bootloaderen i grub:

root (hd0,0)
setup (hd0)

Vi river boot-disken af ​​og indlæser med succes, men siden virker ikke.

4. Der er to muligheder for at starte et websted: konfigurer Apache fra bunden eller brug nginx med php-fpm allerede konfigureret på forhånd:

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

Til sidst skal du starte MySQL:

$ /etc/init.d/mysqld start

Den starter ikke, og svaret ligger i /var/log/mysql. Så snart du løser problemet med MySQL, vil siden fungere, på hovedsiden vil der være en nøgle - RichardGCCMatthewGNUStallman! Nu har vi adgang til 1C, og medarbejderne vil kunne få udbetalt deres løn. Og som altid har du et stort arbejde forude med at etablere infrastruktur og sikkerhed i virksomheden.

Vi kan også igen dele en liste over bøger, der hjalp os og vores deltagere med at forberede sig til spillet: linux.mail.ru/books.

Tak fordi du er sammen med os! Hold dig opdateret for meddelelser om de næste spil!

Kilde: www.habr.com

Tilføj en kommentar