Linux Quest. Gratulálunk a nyerteseknek, és meséljen a feladatok megoldásáról!

Linux Quest. Gratulálunk a nyerteseknek, és meséljen a feladatok megoldásáról!

Március 25-én megnyitottuk a regisztrációt Linux Quest, ez egy játék a Linux operációs rendszer szerelmeseinek és szakértőinek. Néhány statisztika: 1117-en regisztráltak a játékra, közülük 317-en találtak legalább egy kulcsot, 241-en teljesítették sikeresen az első szakasz feladatát, 123-an a másodikat, 70-en pedig a harmadikat. A mai játékunk véget ért, és gratulálunk nyerteseinknek!

  • Alekszandr Teldekov végzett az első helyen.
    Alexander azt mondta magában, hogy ő a legtipikusabb rendszergazda. Volgográdban él, körülbelül húsz éve adminisztrál különféle Unix-szerű rendszereket. Sikerült internetszolgáltatóknál, banknál, rendszerintegrátornál dolgozni. Most távolról dolgozik egy kis cégnél, felhő infrastruktúrán dolgozik egy nagy külföldi ügyfél számára. Szeret olvasni és zenét hallgatni. A Játékról Alexander elmondta, hogy a játék egésze tetszett neki, szereti az ilyen feladatokat. Egy interjú során az egyik cégnél csináltam valami hasonlót, mint a Hackerrank, érdekes volt.
  • Második hely - Roman Suslov.
    Regény Moszkvából. 37 éves. Linux/Unix mérnökként dolgozik a Jet Infosystemsnél. A munkahelyemen adminisztrálnom és hibaelhárítást kell végeznem a Linux/Unix + SAN rendszereken. Az érdeklődési körök változatosak: Linux rendszerek, programozás, reverse engineering, információbiztonság, Arduino. A játékról Roman megjegyezte, hogy összességében tetszett neki a játék. „Kicsit megfeszítettem az agyamat, és kiszakadtam a hétköznapi munka szürke hétköznapjaiból. 🙂 Szeretnék több feladatot, különben még mielőtt belekóstolhattam volna, a játéknak már vége volt.”
  • Harmadik - alex3d.
    Alex Moszkvában él, és szoftverfejlesztéssel foglalkozik. "Köszönöm a versenyt, érdekes volt tesztelni a google-fu képességeimet."

Szintén a 10 legjobb játékos rangsorában:

  • Jevgenyij Szaldajev
  • Markel Mokhnachevsky
  • Konstantin Konosov
  • Pavel Szergejev
  • Vlagyimir Bovaev
  • Ivan Bubnov
  • Pavlo Klets

Tisztában vagyunk vele, hogy minden problémánk megoldására számos lehetőség kínálkozik; a lehetséges megoldások közül néhányat az alábbiakban ismertetünk.

1. Első szakasz

„Tényleg adminisztrátornak” hívtuk, mivel a feladat meglehetősen egyszerű volt - meleglámpa-szerviz javítása.

1.1. Érdekes tények:

A játék első 15 percében két játékos találta meg az első kulcsot, az első órában pedig három vezetőnk teljesítette a feladatot.

1.2. Gyakorlat

Olyan céghez mentél dolgozni, ahol sokáig nem volt hozzáértő informatikai szakember. Mielőtt nekilátna a rendrakásnak, meg kell oldania az iroda munkáját akadályozó égető problémát.

A takarítónő egy felmosóval elkapta a szerverszekrény tápkábelét. Az áramellátás helyreállt, de egy nagyon fontos weboldal még mindig nem működik. A honlap azért fontos, mert a cég nem nagyon foglalkozik az információbiztonsággal, ennek főoldalán olvasható szöveges formában megtalálható a vezérigazgató számítógépéhez tartozó rendszergazdai jelszó.

A minap megváltoztatták a jelszót, de mindenki elfelejtette az újat, az igazgató nem tud dolgozni. A pletykák szerint több olyan kulcs is volt ezen a gépen, amelyek segítségével megfejthetjük a könyvelési bizonylatok biztonsági másolatát.

Mindenki a probléma gyors megoldását várja!

1.3. Megoldás

1. Először is meg kell változtatnia a root jelszót a virtuális gépen, hogy hozzáférhessen hozzá. Indításkor észrevesszük, hogy ez az Ubuntu 16.04 Server.

A root jelszó visszaállításához újraindítjuk a gépet, betöltéskor a grub menü megjelenésekor menjünk az Ubuntu elem szerkesztéséhez az „e” gombbal. Szerkessze a linux sort, adja hozzá a végéhez init=/bin/bash. Ctrl+x-el töltjük be, bash-t kapunk. Csatolja vissza a root-ot az rw-val, változtassa meg a jelszót:

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

Ne feledkezzünk meg a szinkronizálásról, újraindításról.

2. A feltétel szerint a webszerverünk nem működik, nézze meg:

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

Azaz valójában az Apache fut, de 404-es kóddal válaszol. Nézzük a konfigurációt:

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

Itt is van egy kulcs - StevenPaulSteveJobs.

Az útvonal ellenőrzése /usr/share/WordPress - ilyen nincs, de van /usr/share/wordpress. Szerkessze a konfigurációt, és indítsa újra az Apache-t.

$ systemctl restart apache2

3. Próbálja újra, a hibaüzenetet kapjuk:

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

Nem fut az adatbázis?

$ systemctl status mysql
Active: active (running)

Mi a helyzet? Ki kell találnunk. Ehhez hozzáférést kell szereznie a MySQL-hez, a leírás szerint dokumentáció. Az egyik dokumentációs pont azt javasolja, hogy regisztráljuk az opciót skip-grant-tables в /etc/mysql/mysql.conf.d/mysqld.cnf. Itt is van egy kulcs - AugustaAdaKingByron.

Felhasználói jogok javítása 'wp'@'localhost'. Elindítjuk a MySQL-t, elérhetõvé tesszük a hálózaton keresztül, kommentálva a beállítást a konfigurációban skip-networking.

4. Ezen lépések után a webszerver elindul, de a webhely továbbra sem működik, mert

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

Szerkesztjük a fájl jogait.

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

Frissítjük az oldalt, menjünk az oldalra és találjuk meg a kulcsot - BjarneStroustrup! Mindhárom kulcsot megtaláltuk, az igazgatónk tud dolgozni, a könyvelési fájlokat visszafejtettük. Mindenki elégedett, és sok munka vár rád az infrastruktúra, a biztonsági mentések és a biztonság létrehozásán a vállalatnál.

2. Második szakasz

Meg kellett oldani az analitika gyűjtésének problémáját. Mindenki szereti az analitikát – ki, hol és milyen mennyiségben használja. Találtunk egy esetet, amellyel minden mérnök találkozhat ilyen vagy olyan formában az életében.

2.1. Érdekes tények

Egyik játékosunk a játék első 10 percében beütötte a megfelelő kulcsot, és már az első órában volt egy vezetőnk, aki teljesítette a feladatot.

2.2. Gyakorlat

Elmentél dolgozni a céghez, hozzád jöttek a menedzserek, és megkérték, hogy keresd meg, kinek küldtek leveleket Afrikából. Ezek alapján kell összeállítanunk a legjobb 21 címzett címét. A címzettek címének első betűi a kulcsok. Egy dolog: nem tölt be a levelezőszerver, amelyen keresztül a leveleket küldték. Mindenki a probléma gyors megoldását várja!

2.3. Megoldás

1. A szerver nem indul el egy nem létező swap partíció miatt az fstab-ban, betöltéskor a rendszer megpróbálja felcsatolni és összeomlik. Hogyan kell indítani?

Töltse le a képet, letöltöttük a CentOS 7-et, indítsa el Live CD/DVD-ről (Hibaelhárítás -> Rescue), csatlakoztassa a rendszert, szerkessze /etc/fstab. Azonnal megtaláljuk az első kulcsot - GottfriedWilhelm11646Leibniz!

Swap létrehozása:

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

2. Mint mindig, nincs jelszó, meg kell változtatni a root jelszót a virtuális gépen. Ezt már az első feladatnál megtettük. Változunk és sikeresen bejelentkezünk a szerverre, de azonnal újraindul. A szerver olyan sebességgel van túlterhelve, hogy még arra sincs ideje, hogy alaposan megnézze az összes naplót. Hogyan lehet megérteni, mi történik?

Ismét a livecd-ről indítunk, alaposan tanulmányozzuk a rendszernaplókat, és minden esetre belenézünk a cronba, mivel ilyen periodikus. Ott találjuk a problémát és a második kulcsot - Alan1912MathisonTuring!

Be kell /etc/crontab sor törlése vagy megjegyzése echo b > /proc/sysrq-trigger.

3. Ezt követően a szerver betöltődött, és Ön elvégezheti a menedzserek feladatát: „Mik a címek Afrikában?” Ez az információ általában a nyilvánosság számára hozzáférhető. Ezeket az információkat az „IP-cím afrika”, „geoip adatbázis” kifejezések használatával találhatja meg az interneten. A probléma megoldására használhatja a szabadon elérhető címelosztási adatbázisokat (geoip). Az adatbázist szabványként használtuk MaxMind GeoLite2, Creative Commons Nevezd meg! Nevezd meg! 4.0 licenc alatt.

Próbáljuk meg megoldani a problémánkat kizárólag Linux rendszersegédprogramokkal, de általában nagyon sokféleképpen megoldható: szövegszűrő segédprogramokkal és szkriptek használatával különféle programozási nyelvekben.

Először egyszerűen megkapjuk a „küldő-címzett IP” párokat a levélnaplóból /var/log/maillog (készítsünk egy táblázatot az e-mail címzettjeiről - küldő IP). Ezt a következő paranccsal lehet megtenni:

$ 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

Mielőtt folytatnánk az afrikai címek adatbázisának összeállítását, vessünk egy pillantást a feladók legnépszerűbb IP-címeire.

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

Mindegyik közül az első három címzett egyértelműen kiemelkedik a levelek számát tekintve. Ha az első 3-ból küldött címekre küldött feladók IP-címét grep, bizonyos hálózatok egyértelmű túlsúlyát észlelheti:

$ 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

A 105/8, 41/8, 196/8,197/8 hálózatok többsége az AFRINIC-hez van hozzárendelve – az öt regionális internetes regisztrátor egyike, amelyek internetes forrásokat forgalmaznak. Az AFRINIC címteret terjeszt Afrikában. A 41/8 pedig teljesen AFRINIC-re vonatkozik.

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

Így a problémára a válasz valójában magában a naplóban van.

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

Ebben a szakaszban a „LinuxBenedictTorvadst” karakterláncot kapjuk.

Helyes kulcs: "LinusBenedictTorvalds".

Az eredményül kapott karakterlánc az utolsó 3 karakterben elírási hibát tartalmaz a megfelelő kulcshoz képest. Ez annak a ténynek köszönhető, hogy az általunk kiválasztott hálózatok nem teljes mértékben az afrikai országok számára készültek, és az e-mailek IP-címek szerinti terjesztésének módja a naplónkban.

Az afrikai országok számára kiosztott legnagyobb hálózatok megfelelő specifikációjával pontos választ kaphatunk:

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

A probléma más módon is megoldható.
Töltse le a MaxMind-et, csomagolja ki, és a következő három parancs is megoldja a problémánkat.

$ 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

Így vagy úgy, végül kiszámoltuk a statisztikákat, és a vezetők megkapták a munkához szükséges adatokat!

3. Harmadik szakasz

A harmadik szakasz némileg hasonlít az elsőhöz - a meleglámpa-szolgáltatást is meg kell javítani, de minden bonyolultabb, mint az első feladatban.

3.1. Érdekes tények

Az első 15 percben három játékos találta meg az első kulcsot, 2 óra 20 perccel a szakasz kezdete után győztesünk teljesítette a feladatot.

3.2. Gyakorlat

Olyan céghez mentél dolgozni, ahol az összes céges dokumentumot egy belső Wiki szerveren tárolják. Tavaly egy mérnök 3 új lemezt rendelt a szerverhez egy meglévő mellé, azzal érvelve, hogy a rendszer hibatűréséhez a lemezeket valamilyen tömbökbe kell helyezni. Sajnos néhány héttel a telepítésük után a mérnök Indiába ment nyaralni, és nem tért vissza.

A szerver több évig hiba nélkül működött, de néhány napja feltörték a cég hálózatát. Az utasításoknak megfelelően a biztonsági személyzet eltávolította a lemezeket a szerverről és elküldte Önnek. Szállítás közben egy lemez helyrehozhatatlanul elveszett.

Vissza kell állítani a Wiki működőképességét, mindenekelőtt a wiki oldalak tartalma érdekel bennünket. Egy bizonyos szövegrész, amely ennek a wikinek az egyik oldalán volt, az 1C szerver jelszava, és sürgősen szükséges a zárolás feloldásához.

Ezenkívül valahol a wikioldalakon vagy máshol voltak jelszavak a naplószerverhez és a videó megfigyelő szerverhez, amelyeket szintén kívánatos lenne helyreállítani, ezek nélkül az incidens kivizsgálása lehetetlen. Mint mindig, most is várjuk a probléma gyors megoldását!

3.3. Megoldás

1. Megpróbáljuk egyesével a rendszerindítást a meglévő lemezekről, és mindenhol ugyanazt az üzenetet kapjuk:

No bootable medium found! System halted 

Valamiről indítani kell. A Live CD/DVD-ről való indítás (Hibaelhárítás -> Rescue) ismét segít. Betöltéskor megpróbáljuk megtalálni a rendszerindító partíciót, nem találjuk, a shellben kötünk ki. Megpróbáljuk tanulmányozni, mit és hogyan kell csinálni a lemezekkel. Köztudott, hogy hárman vannak. A CentOS 7. verziójában több eszköz található erre, ahol parancsok vannak blkid vagy lsblk, amely megmutatja nekünk a lemezekről szóló összes információt.

Hogyan és mit csinálunk:

$ ls /dev/sd*

Azonnal nyilvánvaló, hogy

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

Felcsatoljuk az sdb1-et, egyértelmű, hogy ez a CentOS 6 rendszerindító partíciója.

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

Nyilvánvalóan a grub részhez megyünk, és ott megtaláljuk az első kulcsot - James191955Gosling egy szokatlan fájlban.

2. Tanulmányozzuk a pvs-t és az lvs-t, mivel LVM-mel dolgozunk. Azt látjuk, hogy 2 fizikai kötetnek kell lennie, az egyik nem található, és az elveszett uid miatt panaszkodik. Látjuk, hogy 2 logikai kötetnek kell lennie: root és swap, míg a root részben elveszett (a kötet P attribútuma). Nem lehet felszerelni, ami kár! Nagyon szükségünk van rá.

Van még 2 lemez, megnézzük, összeszereljük és felszereljük:

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

Megnézzük, látjuk, hogy ez a CentOS 6 rendszerindító partíciója, és annak a másolata, ami már van. /dev/sdb1, és itt is ugyanaz a kulcs - DennisBMacAlistairCRitchie!
Lássuk, hogyan áll össze /dev/md127.

$ mdadm --detail /dev/md127

Úgy látjuk, hogy 4 lemezből kellett volna összerakni, de kettőből rakták össze /dev/sda1 и /dev/sdc1, azoknak a 2-es és 4-es számoknak kellett volna lenniük a rendszerben. Ebből feltételezzük /dev/sda2 и /dev/sdc2 Tömböt is gyűjthetsz. Nem világos, hogy miért nincsenek rajtuk metaadatok, de ez az adminisztrátor lelkiismeretén van, aki valahol Goában van. Feltételezzük, hogy léteznie kell RAID10-nek, bár vannak lehetőségek. Gyűjtjük:

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

Nézzük a blkid, pvs, lvs. Felfedezzük, hogy összegyűjtöttünk egy olyan fizikai kötetet, amely korábban hiányzott.

Az lvroot azonnal meg lett javítva, felcsatoljuk, de előbb aktiváljuk a VG-t:

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

És minden ott van, beleértve a kulcsot a gyökér home könyvtárban - /root/sweet.

3. Még mindig igyekszünk újraéleszteni a szerverünket, hogy normálisan induljon. Minden logikai kötet tőlünk /dev/md0 (ahol mindent megtaláltunk) húzza oda /dev/sdb2, ahol kezdetben a teljes szerver működött.

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

Kikapcsoljuk a szervert, eltávolítjuk az 1. és 3. lemezt, a másodikat meghagyjuk, Live CD/DVD-ről indítjuk a Rescue-t. Keresse meg a rendszerindító partíciót, és állítsa vissza a rendszerbetöltőt a grubban:

root (hd0,0)
setup (hd0)

Letépjük a rendszerindító lemezt és sikeresen betöltjük, de a webhely nem működik.

4. Két lehetőség van a webhely elindítására: konfigurálja az Apache-t a semmiből, vagy használja az nginxet előre beállított php-fpm-mel:

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

Végül el kell indítania a MySQL-t:

$ /etc/init.d/mysqld start

Nem indul el, és a válasz benne van /var/log/mysql. Amint megoldja a problémát a MySQL-lel, az oldal működni fog, a főoldalon lesz egy kulcs - RichardGCCMatthewGNUStallman! Mostantól hozzáférünk az 1C-hez, és az alkalmazottak megkaphatják a fizetésüket. És mint mindig, most is rengeteg munka vár az infrastruktúra és a biztonság megteremtésére a vállalatnál.

Ismét megoszthatunk egy listát azokról a könyvekről, amelyek segítettek minket és résztvevőinket a játékra való felkészülésben: linux.mail.ru/books.

Köszönjük, hogy velünk vagy! Kövessétek figyelemmel a következő játékok bejelentéseit!

Forrás: will.com

Hozzászólás