Március 25-én megnyitottuk a regisztrációt
- 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 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
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:
Köszönjük, hogy velünk vagy! Kövessétek figyelemmel a következő játékok bejelentéseit!
Forrás: will.com