Linux Quest. Felicitazioni à i vincitori è diteci di e suluzione à i travaglii

Linux Quest. Felicitazioni à i vincitori è diteci di e suluzione à i travaglii

U 25 di marzu avemu apertu a registrazione per Linux Quest, questu hè un ghjocu per l'amatori è l'esperti di u sistema operatore Linux. Alcune statistiche: 1117 persone registrate per u ghjocu, 317 d'elli anu truvatu almenu una chjave, 241 anu cumpiitu cù successu u compitu di a prima tappa, 123 - a seconda è 70 anu passatu a terza tappa. Oghje u nostru ghjocu hè ghjuntu à a fine è felicitamu i nostri vincitori !

  • Alexander Teldekov hà pigliatu u primu postu.
    Alexander hà dettu à ellu stessu chì hè l'amministratore di u sistema più tipicu. Vive in Volgograd, hà amministratu diversi sistemi Unix-like per circa vint'anni. Aghju riesciutu à travaglià in i fornitori di Internet, un bancu è un integratore di sistema. Avà travaglia remotamente in una piccula cumpagnia, travagliendu in infrastruttura nuvola per un grande cliente straneru. Li piace à leghje è à sente a musica. À propositu di u ghjocu, Alexander hà dettu chì li piacia u ghjocu in generale, amassi tali compiti. Durante una entrevista in una di e cumpagnie chì aghju fattu qualcosa simili à Hackerrank, era interessante.
  • U sicondu postu - Roman Suslov.
    Un rumanzu di Mosca. Hà 37 anni. Funziona cum'è ingegnere Linux / Unix à Jet Infosystems. À u travagliu, aghju da amministrari è risolve i sistemi Linux / Unix + SAN. L'interessi sò variati: sistemi Linux, prugrammazione, ingegneria inversa, sicurità di l'infurmazioni, Arduino. À propositu di u ghjocu Roman hà nutatu chì li piacia u ghjocu in generale. "Aghju allungatu un pocu u mo cervellu è aghju pigliatu una pausa da a vita grisa di ogni ghjornu di u travagliu di ogni ghjornu. 🙂 Mi piacerebbe avè più compiti, altrimenti prima ch'e aghju avutu u tempu di piglià un gustu, u ghjocu era digià finitu.
  • Terzu - alex3d.
    Alex vive in Mosca è travaglia in u sviluppu di software. "Grazie per u cuncorsu, era interessante per pruvà e mo cumpetenze di google-fu."

Ancu in u ranking di i 10 migliori ghjucatori:

  • Evgenij Saldaev
  • Markel Mokhnachevsky
  • Konstantin Konosov
  • Pavel Sergeev
  • Vladimir Bovaev
  • Ivan Bubnov
  • Pavlo Klets

Capemu chì ci sò parechje opzioni per risolve tutti i nostri prublemi; alcune di e pussibuli suluzioni sò descritte quì sottu.

1. Prima tappa

Avemu chjamatu "Sì veramente un amministratore?", postu chì u compitu era abbastanza simplice - per riparà un serviziu di lampada calda.

1.1. Fatti interessanti:

Dui ghjucatori truvaru a prima chjave in i primi 15 minuti di u ghjocu, è in a prima ora avemu avutu trè capi chì anu cumpletu u compitu.

1.2. Eserciziu

Avete andatu à travaglià in una cumpagnia induve per un bellu pezzu ùn ci era micca un specialista in tecnulugia di l'informatica. Prima di cumincià à mette e cose in ordine, avete bisognu di risolve u prublema ardente chì impedisce u travagliu di l'uffiziu.

A donna di pulizia hà pigliatu u cable d'alimentazione di l'armadiu di u servitore cù un mop. A putenza hè stata restaurata, ma un situ web assai impurtante ùn hè micca travagliatu. U situ web hè impurtante perchè a cumpagnia ùn hè micca assai preoccupatu di a sicurità di l'infurmazioni, è in a pagina principale di questu pudete truvà in testu chjaru a password di l'amministratore per l'urdinatore di u CEO.

L'altru ghjornu a password hè stata cambiata, ma tutti anu scurdatu di u novu, u direttore ùn pò micca travaglià. Ci sò rumuri chì ci era più chjave nantu à sta macchina chì puderia aiutà à decifrare a copia di salvezza di i ducumenti cuntabili.

Tutti aspettanu una pronta risoluzione di u prublema!

1.3. Soluzione

1. Prima di tuttu, avete bisognu di cambià a password di a ràdica in a macchina virtuale per accede à questu. Quandu cuminciamu, avemu nutatu chì questu hè Ubuntu 16.04 Server.

Per resettate a password di root, riavvia a macchina, quandu si carica, in u mumentu chì u menu grub hè visualizatu, andate à edità l'elementu Ubuntu cù u buttone "e". Edite a linea linux, aghjunghje à a fine init=/bin/bash. Carichemu via Ctrl + x, avemu un bash. Rimontate a root cù rw, cambiate a password:

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

Ùn vi scurdate di sync, reboot.

2. A cundizione dice chì u nostru servitore web ùn hè micca travagliatu, fighjate:

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

Questu hè, in fattu, Apache hè in esecuzione, ma risponde cù u codice 404. Fighjemu a cunfigurazione:

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

Ci hè ancu una chjave quì - StevenPaulSteveJobs.

Cuntrolla a strada /usr/share/WordPress - ùn ci hè nunda, ma ci hè /usr/share/wordpress. Edite a cunfigurazione è riavvia Apache.

$ systemctl restart apache2

3. Pruvate dinò, avemu l'errore:

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

A basa di dati ùn hè micca in esecuzione?

$ systemctl status mysql
Active: active (running)

Chì ci hè? Avemu bisognu di capisce. Per fà questu, avete bisognu di accede à MySQL, cum'è descrittu in ducumentazione. Unu di i punti di documentazione ricumanda di registrà l'opzione skip-grant-tables в /etc/mysql/mysql.conf.d/mysqld.cnf. Ci hè ancu una chjave quì - AugustaAdaKingByron.

Corrige i diritti di l'utilizatori 'wp'@'localhost'. Lanciamu MySQL, rende accessibile nantu à a reta, cummentendu l'opzione in a cunfigurazione skip-networking.

4. Dopu à sti passi, u servore web principia, ma u situ ùn travaglia sempre perchè

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

Editemu i diritti à u schedariu.

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

Avemu rinfriscà a pagina, andate à u situ è ​​truvate a chjave - BjarneStroustrup! Avemu trovu tutti i trè chjavi, u nostru direttore pò travaglià, avemu decriptatu i schedarii di cuntabilità. Tutti sò cuntenti, è avete assai travagliu davanti à voi per stallà infrastruttura, backups è sicurità in a cumpagnia.

2. Seconda tappa

Era necessariu di risolve u prublema di cullizzioni analitiche. Tutti amanu l'analitiche - quale l'utiliza, induve è in quale quantità. Avemu ghjuntu cun un casu chì tutti l'ingegneri ponu scuntrà in una forma o un altru in a vita.

2.1. Fatti interessanti

Unu di i nostri ghjucatori hà intrutu in a chjave curretta in i primi 10 minuti di u ghjocu, è in a prima ora avemu avutu un capu chì hà finitu u compitu.

2.2. Eserciziu

Andate à travaglià in a cumpagnia, i dirigenti sò ghjunti à voi è vi dumandanu di truvà à quale e lettere sò state mandate da l'Africa. Avemu bisognu di custruisce i primi 21 indirizzi di destinatariu basatu annantu à elli. E prime lettere di l'indirizzi di i destinatari sò a chjave. Una cosa: u servitore di mail à traversu chì e lettere sò state mandate ùn carica micca. Tutti aspettanu una pronta risoluzione di u prublema!

2.3. Soluzione

1. U servitore ùn hè micca avviatu per via di una partizione swap inesistente in fstab, quandu u caricamentu, u sistema prova di muntallu è crashes. Cumu avvià?

Scaricate l'imaghjini, avemu scaricatu CentOS 7, boot da Live CD / DVD (Risoluzione di prublemi -> Rescue), muntate u sistema, edità /etc/fstab. Truvemu subitu a prima chjave - GottfriedWilhelm11646Leibniz!

Crea u scambiu:

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

2. Cum'è sempre, ùn ci hè micca una password, avete bisognu di cambià a password di root in a macchina virtuale. Avemu digià fattu questu in u primu travagliu. Cambiamu è accede cù successu in u servitore, ma entra subitu in reboot. U servitore hè overloaded à una tale velocità chì ùn avete mancu tempu per fighjà tutti i logs cun cura. Cumu capisce ciò chì succede?

Una volta avemu boot da u livecd, studià currettamente i logs di u sistema è, in casu, fighjate in u cron, postu chì una tale periodicità. Ci truvamu u prublema è a seconda chjave - Alan1912MathisonTuring!

Necessariu in /etc/crontab sguassate o cumentate a linea echo b > /proc/sysrq-trigger.

3. Dopu chì u servitore hà caricatu, è pudete cumpiendu u compitu di i gestori: "Chì sò l'indirizzi in Africa?" Sta infurmazione hè generalmente dispunibule per u publicu. Pudete truvà sta infurmazione nantu à Internet utilizendu e frasi "indirizzu ip africa", "database geoip". Per risolve u prublema, pudete aduprà e basa di dati di distribuzione d'indirizzi liberamente dispunibili (geoip). Avemu usatu a basa di dati cum'è standard MaxMind GeoLite2, dispunibule sottu una licenza Creative Commons Attribution-ShareAlike 4.0.

Pruvemu di risolve u nostru prublema utilizendu solu utilità di u sistema Linux, ma in generale pò esse risolta in una quantità enorme di manere: utilizendu utilità di filtrazione di testu è utilizendu script in diverse lingue di prugrammazione.

À principiatu, avemu Mulateri Di L'ottene simpricimenti i pariglii "IP mittente-destinatariu" da u logu di mail /var/log/maillog (Custruemu una tavola di destinatarii di email - IP di mittente). Questu pò esse fattu cù u cumandimu seguitu:

$ 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

È prima di cuntinuà cù a compilazione di una basa di dati di l'indirizzi africani, fighjemu un ochju à i primi indirizzi IP di i mittenti.

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

Frà tutti, i primi trè destinatarii da a cima si distinguenu chjaramente in quantu à u numeru di lettere. Se grep l'indirizzi IP di i mittenti chì anu mandatu à l'indirizzi da questa cima 3, vi vede una clara predominanza di certe rete:

$ 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 maiò parte di e rete 105/8, 41/8, 196/8,197/8 sò attribuiti à AFRINIC - unu di i cinqui registrazioni Internet regiunale chì distribuiscenu risorse Internet. AFRINIC distribuisce u spaziu di indirizzu in tutta l'Africa. È 41/8 si riferisce à AFRINIC cumpletamente.

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

Cusì, a risposta à u prublema hè, in fattu, in u logu stessu.

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

À questu stadiu avemu a stringa "LinuxBenedictTorvadst".

Chjave curretta: "LinusBenedictTorvalds".

A stringa resultanti cuntene un typo in relazione à a chjave curretta in l'ultimi 3 caratteri. Questu hè duvuta à u fattu chì e rete chì avemu sceltu ùn sò micca sanu dedicate à i paesi africani è à a manera chì e-mail sò distribuiti da l'indirizzi IP in u nostru log.

Cù una specificazione sufficiente di e più grande rete attribuite à i paesi africani, una risposta precisa pò esse ottenuta:

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

U prublema pò ancu esse risolta in un altru modu.
Scaricate MaxMind, unpack it, è i prossimi trè cumandamenti risolve ancu u nostru prublema.

$ 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

In una manera o l'altru, avemu eventualmente calculatu e statistiche, è i gestori anu ricivutu i dati chì avianu bisognu à travaglià!

3. Terza tappa

A terza tappa hè un pocu simili à u primu - avete ancu bisognu di riparà u serviziu di lampa calda, ma tuttu hè più cumplicatu chè in u primu travagliu.

3.1. Fatti interessanti

In i primi 15 minuti, trè ghjucatori anu truvatu a prima chjave; 2 ore è 20 minuti dopu à l'iniziu di a tappa, u nostru vincitore hà cumpletu u compitu.

3.2. Eserciziu

Avete andatu à travaglià per una cumpagnia induve tutti i ducumenti di a cumpagnia sò guardati in un servitore Wiki internu. L'annu passatu, un ingegnere hà urdinatu 3 novi dischi per u servitore in più di un esistenti, argumentendu chì per u sistema per esse tollerante à i difetti, i dischi avianu bisognu à esse posti in qualchì tipu di arrays. Sfurtunatamente, uni pochi di settimane dopu a so stallazione, l'ingegnere si n'andò in vacanze in l'India è ùn hà micca vultatu.

U servitore hà travagliatu senza fiaschi per parechji anni, ma un paru di ghjorni fà a reta di a cumpagnia hè stata piratata. Sicondu l'istruzzioni, u persunale di securità hà eliminatu i dischi da u servitore è i mandati à voi. Duranti u trasportu, un discu hè statu irrecuperablemente persu.

Avemu bisognu di restaurà a funziunalità di Wiki; prima di tuttu, ci interessa u cuntenutu di e pagine wiki. Un certu pezzu di testu chì era in una di e pagine di questa wiki hè a password per u servitore 1C è hè urgentemente necessariu per sbloccallu.

Inoltre, in qualchì parte di e pagine wiki o in un altru locu ci era password per u servitore di log è u servitore di videosurveglianza, chì saria ancu desideratu di ricuperà; senza elli, l'investigazione di l'incidentu hè impussibile. Cum'è sempre, aspittemu una pronta risoluzione di u prublema!

3.3. Soluzione

1. Pruvemu di boot unu per unu da i dischi chì avemu è in ogni locu avemu ricevutu u listessu missaghju:

No bootable medium found! System halted 

Avete bisognu di boot da qualcosa. Booting da un Live CD / DVD (Troubleshooting -> Rescue) aiuta di novu. Quandu u caricamentu, pruvemu di truvà a partizione di boot, ùn pudemu micca truvà, finiscemu in a cunchiglia. Avemu pruvatu à studià ciò chì è cumu fà cù i dischi. Hè cunnisciutu chì ci sò trè. Ci hè più arnesi per questu in a versione 7th di CentOS, induve ci sò cumandamenti blkid o lsblk, chì ci mostra tutte l'infurmazioni nantu à i dischi.

Cumu è ciò chì facemu:

$ ls /dev/sd*

Hè subitu evidenti chì

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

Muntemu sdb1, hè chjaru chì questu hè a partizione di boot di CentOS 6.

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

Ovviamente, andemu à a sezione grub è truvamu a prima chjave - James191955Gosling in un schedariu inusual.

2. Studiemu pvs è lvs, postu chì avemu travagliatu cù LVM. Videmu chì ci deve esse 2 volumi fisichi, unu ùn hè micca situatu è si lamenta di un uid persu. Avemu vistu chì ci deve esse 2 volumi lògichi: root è swap, mentri a root hè parzialmente persa (l'attributu P di u voluminu). Ùn hè micca pussibule di muntà, chì hè una pena! Avemu veramente bisognu di ellu.

Ci sò 2 dischi più, li fighjemu, assemblemu è muntanu:

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

Fighjemu, pudemu vede chì questu hè a partizione di boot di CentOS 6 è un duplicatu di ciò chì hè digià /dev/sdb1, è quì dinò a stessa chjave - DennisBMacAlistairCRitchie!
Videmu cumu hè assemblatu /dev/md127.

$ mdadm --detail /dev/md127

Avemu vistu chì duverebbe esse assemblatu da 4 dischi, ma hè statu assemblatu da dui /dev/sda1 и /dev/sdc1, duveranu esse numeri 2 è 4 in u sistema. Assumimu chì da /dev/sda2 и /dev/sdc2 Pudete ancu cullà un array. Ùn hè micca chjaru perchè ùn ci hè micca metadata nantu à elli, ma questu hè nantu à a cuscenza di l'amministratore, chì hè in qualchì locu in Goa. Assumimu chì ci deve esse RAID10, ancu s'ellu ci sò opzioni. Raccogliemu:

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

Fighjemu blkid, pvs, lvs. Scupremu chì avemu cullatu un voluminu fisicu chì ci mancava prima.

lvroot hè stata riparata immediatamente, l'avemu muntatu, ma prima attivate VG:

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

È tuttu hè quì, cumpresa a chjave in u cartulare di casa root - /root/sweet.

3. Avemu sempre à pruvà à rinviviscia u nostru servore per ch'ellu principia nurmalmente. Tutti i volumi lògichi da u nostru /dev/md0 (induve avemu trovu tuttu) trascinallu /dev/sdb2, induve tuttu u servitore hà inizialmente travagliatu.

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

Spegnemu u servitore, sguassate i dischi 1 è 3, lasciate u sicondu, boot da u Live CD / DVD in Rescue. Truvate a partizione di boot è restaurà u bootloader in grub:

root (hd0,0)
setup (hd0)

Strappamu u discu di boot è caricate bè, ma u situ ùn viaghja micca.

4. Ci hè duie opzioni per lancià un situ web: cunfigurà Apache da zero o utilizate nginx cù php-fpm digià cunfiguratu in anticipu:

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

Infine, avete bisognu di inizià MySQL:

$ /etc/init.d/mysqld start

Ùn principia micca, è a risposta si trova /var/log/mysql. Appena risolve u prublema cù MySQL, u situ hà da travaglià, nantu à a pagina principale ci sarà una chjave - RichardGCCMatthewGNUStallman! Avà avemu accessu à 1C, è l'impiegati puderanu riceve i so salarii. È cum'è sempre, avete assai travagliu avanti per stabilisce l'infrastruttura è a sicurità in a cumpagnia.

Pudemu dinò una volta di sparte una lista di libri chì ci anu aiutatu è i nostri participanti à preparà per u ghjocu: linux.mail.ru/books.

Grazie per esse cun noi! Restate sintonizzati per l'annunzii di i prossimi ghjochi!

Source: www.habr.com

Add a comment