
25 mars öppnade vi anmÀlan till , ett spel för entusiaster och experter inom operativsystemet Linux. Lite statistik: 1117 personer registrerade sig för spelet, av dem hittade 317 minst en nyckel, 241 klarade uppgift ett, 123 klarade det andra steget och 70 gick vidare till den tredje nivÄn. Idag avslutades vÄrt spel, och vi gratulerar vÄra vinnare!
- Första plats togs av Alexander Teldikov.
Alexander sade om sig sjĂ€lv att han Ă€r den mest typiska systemadministratören. Han bor i Volgograd och har administrerat olika Unix-liknande system i nĂ€stan tjugo Ă„r. Han har arbetat för internetleverantörer, en bank och en systemintegratör. Just nu arbetar han pĂ„ distans för ett litet företag, dĂ€r han hanterar molninfrastruktur för en stor utlĂ€ndsk kund. Han gillar att lĂ€sa, lyssna pĂ„ musik. AngĂ„ende spelet sa Alexander att han överlag gillade det och att han Ă€lskar sĂ„dana uppgifter. PĂ„ en intervju hos ett företag fick han göra nĂ„got liknande Hackerrank, vilket var intressant. - Andra platsen â Roman Suslov.
Roman Ă€r frĂ„n Moskva. Han Ă€r 37 Ă„r gammal. Han arbetar som Linux/Unix-engineer pĂ„ företaget "Infosystemy Jet". I sitt arbete sysslar han med administration och felsökning av Linux/Unix-system + SAN. Hans intressen Ă€r mycket varierade: Linux-system, programmering, reverse engineering, informationssĂ€kerhet, Arduino. AngĂ„ende spelet noterade Roman att han överlag gillade det. "Jag fick lite motion för hjĂ€rnan och avledde mig frĂ„n den grĂ„ vardagen. đ Jag skulle vilja ha fler uppgifter, för nĂ€r jag vĂ€l kom i gĂ„ng var spelet redan slut." - Tredje plats â alex3d.
Alex bor i Moskva och arbetar med mjukvaruutveckling. "Tack för tÀvlingen, det var intressant att testa min google-fu-fÀrdighet."
Ăven bland de tio bĂ€sta spelarna finns:
- Yevgeniy Saldayev
- Markel Moxnachevsky
- Konstantin Konosov
- Pavel Sergeev
- Vladimir Bovaev
- Ivan Bubnov
- Pavlo Klets
Vi förstÄr att det finns mÄnga sÀtt att lösa vÄra uppgifter, nedan beskrivs nÄgra av möjliga lösningar.
1. Första steget
Vi kallade det "Ăr du verkligen admin?", eftersom uppgiften var ganska enkel â att fixa en gammal tjĂ€nst.
1.1. Intressanta fakta:
TvÄ spelare hittade den första nyckeln inom de första 15 minuterna av spelet, och inom den första timmen hade vi tre ledare som klarade uppgiften.
1.2. Uppgift
Du har börjat arbeta pÄ ett företag dÀr det under lÄng tid inte har funnits en skicklig IT-specialist. Innan du börjar organisera kan du behöva lösa det brÄdskande problemet som blockerar kontorets arbete.
StÀdaren rÄkade trampa pÄ strömkabeln till serverrummet. Strömmen har ÄterstÀllts, men en mycket viktig webbplats fungerar fortfarande inte. Webbplatsen Àr viktig eftersom företaget inte Àr sÀrskilt bekymrat över informationssÀkerhet, och pÄ hemsidan kan man öppet hitta administratörens lösenord till vd:ns dator.
Nyligen byttes lösenordet, men det nya har glömts bort, och direktören kan inte arbeta. Det gÄr rykten om att det pÄ denna maskin fanns nycklar som kan hjÀlpa oss att dekryptera sÀkerhetskopiorna av bokföringsdokumenten.
Alla vÀntar pÄ en snabb lösning pÄ problemet!
1.3. Lösning
1. Först och frÀmst mÄste vi Àndra root-lösenordet pÄ den virtuella maskinen för att fÄ Ätkomst till den. NÀr vi startar ser vi att det Àr Ubuntu 16.04 Server.
För att ÄterstÀlla root-lösenordet startar vi om maskinen, vid uppstarten, under visningen av grub-menyn, gÄr vi in i redigeringslÀge för Ubuntu genom att trycka pÄ «e». Vi redigerar raden linux och lÀgger till i slutet init=/bin/bash. Vi bootar genom Ctrl+x och kommer till bash. Vi remountar root med rw, och Àndrar lösenordet:
$ mount -o remount,rw /dev/mapper/ubuntu--vg-root
$ passwdGlöm inte sync, vi startar om.
2. Enligt villkoren fungerar inte webbservern, vi kollar:
$ curl localhost
Not Found
Den begÀrda URL:en / hittades inte pÄ denna server.
Apache/2.4.18 Det betyder att Apache faktiskt Àr igÄng men svarar med kod 404. Vi tittar pÄ konfigurationen:
$ vim /etc/apache2/sites-enabled/000-default.confHĂ€r finns nyckeln â StevenPaulSteveJobs.
Vi kontrollerar sökvĂ€gen /usr/share/WordPress â den finns inte, men det finns /usr/share/wordpress. Vi rĂ€ttar till konfigurationen och startar om Apache.
$ systemctl restart apache23. Vi testar igen och fÄr ett felmeddelande:
Warning: mysqli_real_connect(): (HY000/2002): Anslutningen vĂ€grades i /usr/share/wordpress/wp-includes/wp-db.php pĂ„ rad 1488Ăr databasen inte igĂ„ng?
$ systemctl status mysql
Aktiv: aktiv (kör) Vad kan felet vara? Vi behöver undersöka detta. För att göra det mĂ„ste vi fĂ„ Ă„tkomst till MySQL, hur man gör det beskrivs i . En punkt i dokumentationen rekommenderar oss att ange alternativet skip-grant-tables pĂ„ /etc/mysql/mysql.conf.d/mysqld.cnf. HĂ€r hittar vi ocksĂ„ nyckeln â AugustaAdaKingByron.
Vi justerar rÀttigheterna för anvÀndaren 'wp'@'localhost'. Vi startar MySQL och gör den tillgÀnglig över nÀtverket genom att kommentera i konfigurationen alternativet skip-networking.
4. Efter dessa ÄtgÀrder startar webbservern, men webbplatsen fungerar fortfarande inte, eftersom
Varning: require_once(\/usr\/share\/wordpress\/wp-content\/themes\/twentysixteen\/footer.php): gick inte att öppna strömmen: Ă
tkomst nekad i \/usr\/share\/wordpress\/wp-includes\/template.php pÄ rad 562Vi Àndrar rÀttigheterna för filen.
$ chmod 644 \/usr\/share\/wordpress\/wp-content\/themes\/twentysixteen\/footer.php
Vi uppdaterar sidan, gĂ„r in pĂ„ webbplatsen och finner nyckeln â BjarneStroustrup! Vi har funnit alla tre nycklar, vĂ„r chef kan arbeta, vi har dekrypterat bokföringsfilerna. Alla Ă€r glada, men du har mycket arbete framför dig med att fixa infrastrukturen, backuper och sĂ€kerhet i företaget.
2. Andra steget
Det behövdes en lösning för att samla in analys. Alla Ă€lskar analys â vem och varifrĂ„n och hur mĂ„nga som kommer. Vi kom pĂ„ ett scenario som alla ingenjörer kan stöta pĂ„ i livet i viss grad.
2.1. Intressanta fakta
En av vÄra spelare angav rÀtt nyckel inom de första 10 minuterna av spelet, och inom den första timmen hade vi en ledare som klarade uppgiften.
2.2. Uppgift
Du började arbeta pÄ företaget, cheferna kom till dig och bad om att hitta till vem e-postmeddelanden skickades frÄn Afrika. Du behöver bygga en topp-21 lista över mottagaradresser. De första bokstÀverna i mottagaradresserna Àr nyckeln. Men det finns en hake: e-postservern via vilken meddelandena skickades, svarar inte. Alla vÀntar pÄ en snabb lösning pÄ problemet!
2.3. Lösning
1. Servern laddas inte pÄ grund av en icke-existerande swap-partition i fstab, nÀr systemet startas försöker det montera den och kraschar. Hur laddar man?
Vi laddar ner en bild, vi har laddat ner CentOS 7, vi startar frĂ„n Live CD\/DVD (Troubleshooting -> Rescue), monterar systemet, Ă€ndrar /etc/fstab. HĂ€r hittar vi den första nyckeln â GottfriedWilhelm11646Leibniz!
Vi skapar en swap:
$ lvcreate -n swap centos -L 256M
$ sync && reboot2. Som alltid finns det inget lösenord, vi behöver Àndra root-lösenordet pÄ den virtuella maskinen. Det har vi redan gjort i den första uppgiften. Vi Àndrar och gÄr framgÄngsrikt in pÄ servern, men den gÄr genast i omstart. Servern startar om sÄ snabbt att man knappt hinner se alla loggar noggrant. Hur förstÄr man vad som hÀnder?
Vi laddar igen frĂ„n livecd, studerar systemets loggar noggrant och kollar av sĂ€kerhetsskĂ€l i cron, eftersom det finns en sĂ„dan periodicitet. DĂ€r hittar vi problemet och den andra nyckeln â Alan1912MathisonTuring!
Vi behöver /etc/crontab ta bort eller kommentera raden echo b > \/proc\/sysrq-trigger.
3. Efter att servern har startat kan vi utföra chefernas uppdrag: "Vilka adresser finns i Afrika?" Denna information Àr övergripande offentligt tillgÀnglig. Den kan hittas pÄ nÀtet med fraser som "ip address africa", "geoip database". För att lösa uppgiften kan vi anvÀnda fritt tillgÀngliga databaser för adressdistribution (geoip). Vi anvÀnde en databas som standard. , tillgÀnglig under Creative Commons Attribution-ShareAlike 4.0-licensen.
LÄt oss försöka lösa vÄr uppgift med hjÀlp av endast systemverktyg i Linux, men det finns egentligen mÄnga olika sÀtt att göra det: med hjÀlp av textfilterverktyg och skript pÄ olika programmeringssprÄk.
Först fĂ„r vi bara par av "avsĂ€ndar-IP â mottagare" frĂ„n e-postloggen. /var/log/maillog (vi bygger en tabell över e-postmottagare â avsĂ€ndar-IP). Detta kan göras med följande 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.txtInnan vi fortsÀtter med att skapa databasen med adresser i Afrika, lÄt oss ta en titt pÄ de topp IP-adresserna för avsÀndarna.
$ cat log1.txt | cut -d' ' -f1 | sort | uniq -c | sort -r | head -n 40
5206 L2JhbjAbM67GA99jg@mail.ru
4165 iHKTBkegOQa6fIALq@mail.ru
3739 nHkcBl7BdgXxijSYD7@mail.ru
3405 SMAzPJAzbl9vp4hAXo@mail.ru
3346 xILz6d7P@mail.ru
Bland alla sticker de tre första mottagarna i topp fram som de med flest e-postmeddelanden. Om vi grep-ar IP-adresserna för de avsÀndare som skickade till adresser frÄn denna topp-3, kan vi mÀrka en tydlig dominans av vissa nÀtverk:
$ cat log1.txt | fgrep 'L2JhbjAbM67GA99jg@mail.ru' | 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 165Största delen av nĂ€tverken 105/8, 41/8, 196/8, 197/8 tilldelas av AFRINIC â en av de fem regionala internetregistratorerna som ansvarar för distributionen av internetresurser. AFRINIC tilldelar adressutrymmet pĂ„ det afrikanska territoriet. Och 41/8 tillhör AFRINIC helt.
https://www.nic.ru/whois/?searchWord=105.0.0.0
https://www.nic.ru/whois/?searchWord=41.0.0.0
SÄledes finns svaret pÄ uppgiften faktiskt i sjÀlva 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 L2JhbjAbM67GA99jg@mail.ru
3313 iHKTBkegOQa6fIALq@mail.ru
2704 nHkcBl7BdgXxijSYD7@mail.ru
2215 uvRbp1O@mail.ru
1774 sPmMsmmFiV@mail.ru
1448 BtG3aHgQgCKuze2AKuRH@mail.ru
1233 eQpuuQ2uQdbwRL3@mail.ru
958 nJT5dpaBZ@mail.ru
862 ef4WbQiB@mail.ru
762 dQCqKL6eVminFfH7wLA@mail.ru
632 ifq6Rd1HxuCQOdO9@mail.ru
539 cFwm2ssypMmx1sA7@mail.ru
531 twtTnr4G@mail.ru
431 TSrczgYASrR11Hs3qCi@mail.ru
380 o3r3exc3OL@mail.ru
357 rzmjr2VAHK@mail.ru
348 vnPr6YjJ3ndw@mail.ru
312 anOjFXrwOtLP2Rl1Vcz6@mail.ru
289 dvny5zHmRW8fiT@mail.ru
282 sgg9jPxFDYvzw8Kr@mail.ru
274 tKSevzA7GntJ@mail.ruI det hĂ€r skedet fĂ„r vi strĂ€ngen âLinuxBenedictTorvadstâ.
Korrekt nyckel: âLinusBenedictTorvaldsâ.
Den erhÄllna strÀngen innehÄller ett stavfel i förhÄllande till den korrekta nyckeln i de 3 sista tecknen. Detta beror pÄ att de nÀtverk vi har valt inte helt tÀcker lÀnderna i Afrika och pÄ hur e-post Àr fördelad över IP-adresserna i vÄr logg.
Vid tillrÀcklig specificering av de största nÀtverken som tilldelats lÀnderna i Afrika kan man fÄ ett exakt svar:
$ 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 L2JhbjAbM67GA99jg@mail.ru
2662 iHKTBkegOQa6fIALq@mail.ru
2105 nHkcBl7BdgXxijSYD7@mail.ru
1724 uvRbp1O@mail.ru
1376 sPmMsmmFiV@mail.ru
1092 BtG3aHgQgCKuze2AKuRH@mail.ru
849 eQpuuQ2uQdbwRL3@mail.ru
712 nJT5dpaBZ@mail.ru
584 ef4WbQiB@mail.ru
463 dQCqKL6eVminFfH7wLA@mail.ru
365 ifq6Rd1HxuCQOdO9@mail.ru
269 cFwm2ssypMmx1sA7@mail.ru
225 twtTnr4G@mail.ru
168 TSrczgYASrR11Hs3qCi@mail.ru
142 o3r3exc3OL@mail.ru
111 rzmjr2VAHK@mail.ru
96 vnPr6YjJ3ndw@mail.ru
78 anOjFXrwOtLP2Rl1Vcz6@mail.ru
56 lHzWiB7ExvRtSbAcU9@mail.ru
56 dvny5zHmRW8fiT@mail.ru
40 sgg9jPxFDYvzw8Kr@mail.ru Uppgiften kan ocksÄ lösas pÄ ett annat sÀtt.
Vi laddar ner MaxMind, packar upp den och följande tre kommandon löser ocksÄ vÄrt problem.
$ cat GeoLite2-Country-Locations-ru.csv | grep "Afrika" | 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Ä ett eller annat sÀtt har vi slutligen rÀknat statistiken och cheferna har fÄtt den information de behöver för sitt arbete!
3. Tredje steget
Det tredje steget Ă€r pĂ„ ett sĂ€tt likt det första â det krĂ€vs ocksĂ„ att den varma lampservice repareras, men det Ă€r svĂ„rare Ă€n i den första uppgiften.
3.1. Intressanta fakta
Under de första 15 minuterna hittade tre spelare den första nyckeln, efter 2 timmar och 20 minuter efter att steget började klarade vÄr vinnare uppgiften.
3.2. Uppgift
Du började arbeta för ett företag dÀr alla företagets dokument lagras pÄ den interna Wiki-servern. Förra Äret bestÀllde en ingenjör 3 nya diskar till servern utöver en befintlig, motiverat av att för att uppnÄ systemets redundans mÄste man sÀtta diskar i vissa matriser. TyvÀrr, nÄgra veckor efter att de installerades, Äkte ingenjören pÄ semester till Indien och ÄtervÀnde inte.
Flera Är fungerade servern utan problem, men för nÄgra dagar sedan blev företagets nÀtverk hackat. Enligt instruktionerna tog sÀkerhetspersonalen ut diskarna frÄn servern och skickade dem till dig. Under transporten förlorades en disk för alltid.
Det Àr nödvÀndigt att ÄterstÀlla Wiki-funktionaliteten, framförallt intresserar vi oss för innehÄllet pÄ wiki-sidorna. En viss bit text som fanns pÄ en av sidorna i denna wiki Àr ett lösenord till servern 1C och behövs akut för dess upplÄsning.
Dessutom fanns det nÄgonstans pÄ wiki-sidorna eller pÄ nÄgot annat stÀlle lösenord till loggservern och övervakningsservern, som ocksÄ helst bör ÄterstÀllas, utan dem Àr det omöjligt att undersöka incidenten. Som vanligt förvÀntar man sig en snabb lösning pÄ frÄgan!
3.3. Lösning
1. Vi försöker starta frÄn de diskar vi har i tur och ordning och fÄr samma meddelande överallt:
No bootable medium found! System halted
Vi mĂ„ste starta frĂ„n nĂ„got. Ă
terigen rĂ€ddas vi av att starta frĂ„n Live CD/DVD (Felsökning -> Ă
terstÀllning). Vid uppstart försöker vi hitta startpartitionen, men hittar ingen och hamnar i shell. Vi försöker studera vad som finns pÄ diskarna. Det Àr kÀnt att det finns tre. Verktygen för detta Àr fler i version 7 av CentOS, dÀr det finns kommandon blkid eller lsblk, som visar oss all information om diskarna.
Vad vi gör:
$ ls /dev/sd*Det Àr tydligt att
/dev/sdb1 - ext4
/dev/sdb2 - ŃаŃŃŃ lvm
/dev/sda1 Đž /dev/sdc1 - ŃаŃŃĐž ŃĐ”ĐčЎа
/dev/sda2 Đž /dev/sdc2 - ĐżŃĐŸ ĐœĐžŃ
ĐœĐžŃĐ”ĐłĐŸ ĐœĐ” ОзĐČĐ”ŃŃĐœĐŸ ĐœĐ° ŃĐ”ĐșŃŃĐžĐč ĐŒĐŸĐŒĐ”ĐœŃVi monterar sdb1, och det Ă€r tydligt att detta Ă€r startpartitionen för CentOS 6.
$ mkdir /mnt/sdb1 && mount /dev/sdb1 /mnt/sdb1Det Ă€r uppenbart att vi gĂ„r till grub-partitionen och hittar dĂ€r den första nyckeln â James191955Gosling i en ovanlig fil.
2. Vi studerar pvs och lvs, eftersom vi arbetar med LVM. Vi ser att det borde finnas 2 fysiska volymer, en hittas inte och klagar pÄ förlorat uid. Vi ser att det borde finnas 2 logiska volymer: root och swap, och root Àr delvis förlorad (attributet P för volymen). Det gÄr inte att montera, vilket Àr synd! Vi behöver den verkligen.
Det finns ytterligare 2 diskar, vi kollar pÄ dem, samlar ihop och monterar:
$ mdadm --examine --verbose --scan
$ mdadm --assemble --verbose --scan
$ mkdir /mnt/md127 && mount /dev/md127 /mnt/md127 Vi kollar, det Ă€r tydligt att detta Ă€r startpartitionen för CentOS 6 och en kopia av det som redan finns pĂ„ /dev/sdb1, och dĂ€r igen den samma nyckeln â DennisBMacAlistairCRitchie!
Vi ser hur den Àr sammansatt /dev/md127.
$ mdadm --detail /dev/md127
Vi ser att den skulle ha samlats frÄn 4 diskar, men har samlats frÄn tvÄ /dev/sda1 och /dev/sdc1, de borde ha varit nummer 2 och 4 i systemet. Vi förmodar att /dev/sda2 och /dev/sdc2 man ocksÄ kan samla ett arrangemang. Det Àr oklart varför det inte finns nÄgon metadata pÄ dem, men det ligger pÄ samordnaren som nÄgonstans i Goa. Vi förmodar att det bör vara RAID10 hÀr, Àven om det finns alternativ. Vi samlar ihop:
$ mdadm --create --verbose /dev/md0 --assume-clean --level=10 --raid-devices=4 missing /dev/sda2 missing /dev/sdc2
Vi kollar blkid, pvs, lvs. Vi upptÀcker att vi har samlat en fysisk volym som vi tidigare saknade.
Nu fungerar lvroot, vi monterar det, men först aktiverar vi VG:
$ vgchange -a y
$ mkdir /mnt/lvroot && mount /dev/mapper/vg_c6m1-lv_root /mnt/lvroot
Och allt finns dĂ€r, inklusive nyckeln i hemkatalogen för root â /root/sweet.
3. Vi försöker fortfarande fÄ igÄng vÄr server sÄ att den startar normalt. Alla logiska volymer frÄn vÄr /dev/md0 (dÀr vi hittade allt) flyttas till /dev/sdb2, dÀr hela servern ursprungligen arbetade.
$ pvmove /dev/md0 /dev/sdb2
$ vgreduce vg_c6m1 /dev/md0Vi stÀnger av servern, tar bort den första och tredje disken, lÀmnar den andra, och startar upp med Live CD/DVD i Rescue. Vi hittar startpartitionen och ÄterstÀller bootloadern i grub:
root (hd0,0)
setup (hd0)
Vi tar bort startskivan och startar framgÄngsrikt, men webbplatsen fungerar inte.
4. Det finns tvÄ sÀtt att starta webbplatsen: konfigurera Apache frÄn grunden eller anvÀnda en redan förkonfigurerad nginx med php-fpm:
$ /etc/init.d/nginx start
$ /etc/init.d/php-fpm start
Till slut behöver vi starta MySQL:
$ /etc/init.d/mysqld start Det startar inte, och ledtrĂ„den ligger i /var/log/mysql. SĂ„ snart du löser problemet med MySQL, kommer webbplatsen att fungera, och pĂ„ startsidan kommer det att finnas en nyckel â RichardGCCMatthewGNUStallman! Nu har vi tillgĂ„ng till 1C, och anstĂ€llda kan fĂ„ sin lön. Och du har som vanligt mycket arbete framför dig med att stabilisera infrastrukturen och sĂ€kerheten inom företaget.
Vi kan ocksÄ dela med oss av listan med böcker som hjÀlpte oss och vÄra deltagare att förbereda sig för spelet: .
Tack för att ni var med oss! HÄll utkik efter annonsering av nÀsta spel!
KĂ€lla: habr.com
