Linux Quest. Enhorabona als guanyadors i explica'ns les solucions a les tasques

Linux Quest. Enhorabona als guanyadors i explica'ns les solucions a les tasques

El 25 de març vam obrir les inscripcions Linux Quest, aquest és un Joc per als amants i experts del sistema operatiu Linux. Algunes estadístiques: 1117 persones es van registrar al joc, 317 d'elles van trobar almenys una clau, 241 van completar amb èxit la tasca de la primera etapa, 123 van completar la segona etapa i 70 van passar la tercera etapa. Avui s'ha acabat el nostre joc i felicitem als nostres guanyadors!

  • Alexander Teldekov va ocupar el primer lloc.
    Alexander es va dir a si mateix que ell és l'administrador del sistema més típic. Viu a Volgograd, ha estat administrant diversos sistemes semblants a Unix durant uns vint anys. Vaig aconseguir treballar en proveïdors d'Internet, un banc i un integrador de sistemes. Ara treballa de forma remota en una petita empresa, treballant en la infraestructura del núvol per a un gran client estranger. Li agrada llegir i escoltar música. Sobre el joc, Alexander va dir que li agradava el joc en conjunt, que li encanten aquestes tasques. Durant una entrevista a una de les empreses que vaig fer alguna cosa semblant a Hackerrank, va ser interessant.
  • Segon lloc - Roman Suslov.
    Una novel·la de Moscou. Té 37 anys. Treballa com a enginyer Linux/Unix a Jet Infosystems. A la feina, he d'administrar i solucionar problemes de sistemes Linux/Unix + SAN. Els interessos són variats: sistemes Linux, programació, enginyeria inversa, seguretat de la informació, Arduino. Sobre el joc Roman va assenyalar que li agradava el joc en general. “Vaig estirar una mica el cervell i vaig fer una pausa de la grisa vida quotidiana del treball quotidià. 🙂 M'agradaria tenir més tasques, sinó abans de tenir temps de fer-ne un tastet, el joc ja s'havia acabat.”
  • Tercer - alex3d.
    Alex viu a Moscou i treballa en el desenvolupament de programari. "Gràcies pel concurs, va ser interessant posar a prova les meves habilitats de google-fu".

També en el rànquing dels 10 millors jugadors:

  • Yevgeniy Saldaiev
  • Markel Mokhnachevsky
  • Konstantin Konosov
  • Pavel Sergeev
  • Vladimir Bovaev
  • Ivan Bubnov
  • Pavlo Klets

Entenem que hi ha moltes opcions per resoldre tots els nostres problemes; a continuació es descriuen algunes de les possibles solucions.

1. Primera etapa

L'hem anomenat "Ets realment un administrador?", ja que la tasca era bastant senzilla: arreglar un servei de llum càlida.

1.1. Dades d'Interès:

Dos jugadors van trobar la primera clau en els primers 15 minuts de partit, i a la primera hora vam tenir tres líders que van completar la tasca.

1.2. Exercici

Vas anar a treballar en una empresa on durant molt de temps no hi havia cap especialista competent en tecnologies de la informació. Abans de començar a ordenar les coses, cal resoldre el problema de la crema que està bloquejant el treball de l'oficina.

La dona de la neteja va agafar el cable d'alimentació de l'armari del servidor amb una fregona. S'ha restablert l'alimentació, però un lloc web molt important encara no funciona. El lloc web és important perquè l'empresa no està molt preocupada per la seguretat de la informació, i a la pàgina principal d'aquesta podeu trobar en text clar la contrasenya d'administrador de l'ordinador del CEO.

L'altre dia es va canviar la contrasenya, però tothom va oblidar la nova, el director no pot treballar. Hi ha rumors que en aquesta màquina hi havia més claus que ens podrien ajudar a desxifrar la còpia de seguretat dels documents comptables.

Tothom espera una ràpida resolució del problema!

1.3. Solució

1. En primer lloc, cal canviar la contrasenya d'arrel a la màquina virtual per accedir-hi. En començar, observem que es tracta del servidor Ubuntu 16.04.

Per restablir la contrasenya root, reiniciem la màquina, en carregar, en el moment que es mostra el menú grub, aneu a editar l'element Ubuntu amb el botó “e”. Editeu la línia Linux, afegiu-la al final init=/bin/bash. Carreguem mitjançant Ctrl+x, obtenim un bash. Torneu a muntar l'arrel amb rw, canvieu la contrasenya:

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

No us oblideu de la sincronització, reinicieu.

2. La condició indica que el nostre servidor web no funciona, mira:

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

És a dir, de fet, Apache s'està executant, però respon amb el codi 404. Vegem la configuració:

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

També hi ha una clau aquí: StevenPaulSteveJobs.

Comprovant el camí /usr/share/WordPress - No hi ha tal cosa, però sí /usr/share/wordpress. Editeu la configuració i reinicieu Apache.

$ systemctl restart apache2

3. Torna-ho a provar, obtenim l'error:

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

La base de dades no s'està executant?

$ systemctl status mysql
Active: active (running)

Què passa? Hem d'esbrinar-ho. Per fer-ho, heu d'accedir a MySQL, tal com es descriu a documentació. Un dels punts de documentació recomana que registrem l'opció skip-grant-tables в /etc/mysql/mysql.conf.d/mysqld.cnf. També hi ha una clau aquí: AugustaAdaKingByron.

Correcció de drets d'usuari 'wp'@'localhost'. Llencem MySQL, el fem accessible a través de la xarxa, comentant l'opció a la configuració skip-networking.

4. Després d'aquests passos, el servidor web s'inicia, però el lloc encara no funciona perquè

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

Editem els drets del fitxer.

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

Actualitzem la pàgina, anem al lloc i trobem la clau - BjarneStroustrup! Hem trobat les tres claus, el nostre director pot treballar, hem desxifrat els fitxers comptables. Tothom està content i tens molta feina per davant per configurar la infraestructura, les còpies de seguretat i la seguretat a l'empresa.

2. Segona etapa

Calia resoldre el problema de recollir analítiques. A tothom li encanta l'anàlisi: qui l'utilitza, on i en quines quantitats. Vam plantejar un cas que tots els enginyers es poden trobar d'una forma o una altra a la vida.

2.1. Dades interessants

Un dels nostres jugadors va introduir la clau correcta durant els primers 10 minuts de joc, i en la primera hora vam tenir un líder que va completar la tasca.

2.2. Exercici

Vas anar a treballar a l'empresa, els responsables van venir a tu i et van demanar que trobessis a qui s'envien cartes des d'Àfrica. Hem de construir les 21 adreces de destinataris principals a partir d'elles. Les primeres lletres de les adreces dels destinataris són la clau. Una cosa: el servidor de correu a través del qual s'envien les cartes no es carrega. Tothom espera una ràpida resolució del problema!

2.3. Solució

1. El servidor no arrenca a causa d'una partició d'intercanvi inexistent a fstab, quan es carrega, el sistema intenta muntar-la i es bloqueja. Com arrencar?

Baixeu la imatge, vam descarregar CentOS 7, arrenquem des de Live CD/DVD (Resolució de problemes -> Rescat), muntem el sistema, editem /etc/fstab. De seguida trobem la primera clau: GottfriedWilhelm11646Leibniz!

Crear intercanvi:

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

2. Com sempre, no hi ha contrasenya, cal canviar la contrasenya d'arrel a la màquina virtual. Això ja ho vam fer a la primera tasca. Canviem i iniciem la sessió correctament al servidor, però immediatament es reinicia. El servidor està sobrecarregat a una velocitat tal que ni tan sols teniu temps de mirar tots els registres amb atenció. Com entendre el que està passant?

De nou arrenquem des del livecd, estudiem acuradament els registres del sistema i, per si de cas, mirem el cron, ja que aquesta periodicitat. Allà trobem el problema i la segona clau: Alan1912MathisonTuring!

Necessari en /etc/crontab eliminar o comentar la línia echo b > /proc/sysrq-trigger.

3. Després d'això, el servidor s'ha carregat i podeu completar la tasca dels gestors: "Quines són les adreces a Àfrica?" Aquesta informació està generalment disponible per al públic. Podeu trobar aquesta informació a Internet utilitzant les frases “adreça IP Àfrica”, “base de dades geoip”. Per resoldre el problema, podeu utilitzar bases de dades de distribució d'adreces disponibles gratuïtament (geoip). Hem utilitzat la base de dades com a estàndard MaxMind GeoLite2, disponible sota una llicència Creative Commons Reconeixement-CompartirIgual 4.0.

Intentem resoldre el nostre problema utilitzant només utilitats del sistema Linux, però en general es pot resoldre de moltes maneres: utilitzant utilitats de filtratge de text i utilitzant scripts en diversos llenguatges de programació.

Per començar, simplement obtindrem els parells "IP remitent-destinatari" del registre de correu /var/log/maillog (creem una taula de destinataris de correu electrònic: IP del remitent). Això es pot fer amb la següent comanda:

$ 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

I abans de continuar compilant una base de dades d'adreces africanes, fem una ullada a les principals adreces IP dels remitents.

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

Entre tots ells, els tres primers destinataris de la part superior destaquen clarament pel que fa al nombre de cartes. Si estudieu les adreces IP dels remitents que han enviat a adreces d'aquests 3 principals, notareu un clar predomini de certes xarxes:

$ 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

La majoria de les xarxes 105/8, 41/8, 196/8,197/8 estan assignades a AFRINIC, un dels cinc registradors regionals d'Internet que distribueixen recursos d'Internet. AFRINIC distribueix espai d'adreces per tot Àfrica. I 41/8 es refereix completament a AFRINIC.

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

Per tant, la resposta al problema es troba, de fet, en el propi registre.

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

En aquesta etapa obtenim la cadena "LinuxBenedictTorvadst".

Clau correcta: "LinusBenedictTorvalds".

La cadena resultant conté un error ortogràfic en relació amb la clau correcta dels 3 últims caràcters. Això es deu al fet que les xarxes que hem seleccionat no estan totalment dedicades als països africans i a la manera com es distribueixen els correus electrònics entre les adreces IP del nostre registre.

Amb una especificació suficient de les xarxes més grans assignades als països africans, es pot obtenir una resposta precisa:

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

El problema també es pot resoldre d'una altra manera.
Baixeu MaxMind, desempaqueteu-lo i les tres ordres següents també resolen el nostre problema.

$ 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

D'una manera o altra, finalment vam calcular les estadístiques, i els responsables van rebre les dades que necessitaven per treballar!

3. Tercera etapa

La tercera etapa és una mica semblant a la primera: també cal arreglar el servei de llum càlida, però tot és més complicat que a la primera tasca.

3.1. Dades interessants

En els primers 15 minuts, tres jugadors van trobar la primera clau; 2 hores i 20 minuts després de l'inici de l'etapa, el nostre guanyador va completar la tasca.

3.2. Exercici

Vas anar a treballar per a una empresa on tots els documents de l'empresa s'emmagatzemen en un servidor Wiki intern. L'any passat, un enginyer va demanar 3 discs nous per al servidor a més d'un d'existent, argumentant que perquè el sistema fos tolerant a errors, els discs s'havien de col·locar en algun tipus de matrius. Malauradament, unes setmanes després de la seva instal·lació, l'enginyer es va anar de vacances a l'Índia i no va tornar.

El servidor va funcionar sense errors durant diversos anys, però fa un parell de dies la xarxa de l'empresa va ser piratejada. Segons les instruccions, el personal de seguretat va treure els discs del servidor i us els va enviar. Durant el transport, un disc es va perdre irremeiablement.

Hem de restaurar la funcionalitat de la wiki; en primer lloc, ens interessa el contingut de les pàgines wiki. Un determinat text que es trobava en una de les pàgines d'aquesta wiki és la contrasenya del servidor 1C i es necessita urgentment per desbloquejar-lo.

A més, en algun lloc de les pàgines wiki o en un altre lloc hi havia contrasenyes per al servidor de registre i el servidor de videovigilància, que també seria desitjable recuperar; sense elles, la investigació de l'incident és impossible. Com sempre, esperem una ràpida resolució del problema!

3.3. Solució

1. Intentem arrencar un a un des dels discos que tenim i arreu rebem el mateix missatge:

No bootable medium found! System halted 

Necessites arrencar des d'alguna cosa. L'arrencada des d'un CD/DVD en directe (Resolució de problemes -> Rescat) ajuda de nou. En carregar, intentem trobar la partició d'arrencada, no la podem trobar, acabem a l'intèrpret d'ordres. Estem intentant estudiar què i com fer amb els discos. Se sap que n'hi ha tres. Hi ha més eines per a això a la 7a versió de CentOS, on hi ha ordres blkid o lsblk, que ens mostren tota la informació sobre els discos.

Com i què fem:

$ ls /dev/sd*

De seguida és evident que

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

Muntem sdb1, està clar que aquesta és la partició d'arrencada de CentOS 6.

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

Òbviament, anem a la secció grub i hi trobem la primera clau: James191955Gosling en un fitxer inusual.

2. Estudiem pvs i lvs, ja que treballem amb LVM. Veiem que hi hauria d'haver 2 volums físics, un no està localitzat i es queixa d'un uid perdut. Veiem que hi hauria d'haver 2 volums lògics: root i swap, mentre que root es perd parcialment (l'atribut P del volum). No es pot muntar, que és una llàstima! Realment el necessitem.

Hi ha 2 discs més, els mirem, els muntem i els muntem:

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

Mirem, podem veure que aquesta és la partició d'arrencada de CentOS 6 i un duplicat del que ja està activat /dev/sdb1, i aquí de nou la mateixa clau: DennisBMacAlistairCRitchie!
A veure com es munta /dev/md127.

$ mdadm --detail /dev/md127

Veiem que s'hauria d'haver muntat a partir de 4 discos, però es va muntar a partir de dos /dev/sda1 и /dev/sdc1, haurien d'haver estat els números 2 i 4 del sistema. Suposem que des de /dev/sda2 и /dev/sdc2 També podeu recollir una matriu. No està clar per què no hi ha metadades, però això està en la consciència de l'administrador, que es troba en algun lloc de Goa. Suposem que hi hauria d'haver RAID10, tot i que hi ha opcions. Recollim:

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

Mirem blkid, pvs, lvs. Descobrim que hem recollit un volum físic que abans ens faltava.

lvroot es va reparar immediatament, el muntem, però primer activem VG:

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

I tot hi és, inclosa la clau del directori d'inici arrel: /root/sweet.

3. Encara estem intentant reactivar el nostre servidor perquè s'iniciï amb normalitat. Tots els volums lògics del nostre /dev/md0 (on ho hem trobat tot) arrossegueu-lo /dev/sdb2, on inicialment funcionava tot el servidor.

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

Apaguem el servidor, traiem els discs 1 i 3, deixem el segon, arrenquem des del Live CD/DVD a Rescue. Cerqueu la partició d'arrencada i restaureu el carregador d'arrencada a grub:

root (hd0,0)
setup (hd0)

Arranquem el disc d'arrencada i carreguem correctament, però el lloc no funciona.

4. Hi ha dues opcions per llançar un lloc web: configurar Apache des de zero o utilitzar nginx amb php-fpm ja configurat per endavant:

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

Finalment, heu d'iniciar MySQL:

$ /etc/init.d/mysqld start

No començarà, i la resposta està en /var/log/mysql. Tan bon punt resolgueu el problema amb MySQL, el lloc funcionarà, a la pàgina principal hi haurà una clau: RichardGCCMatthewGNUStallman! Ara tenim accés a 1C i els empleats podran cobrar els seus sous. I com sempre, tens molta feina per endavant per establir infraestructura i seguretat a l'empresa.

També podem tornar a compartir una llista de llibres que ens van ajudar a nosaltres i als nostres participants a preparar-nos per al joc: linux.mail.ru/books.

Gràcies per estar amb nosaltres! Estigueu atents als anuncis dels propers jocs!

Font: www.habr.com

Afegeix comentari