Linux Quest. Herzlichen Glückwunsch an die Gewinner und sprechen Sie über die Lösung von Problemen



Am 25. März haben wir die Registrierung für Linux Quest eröffnet. Dies ist ein Spiel für Fans und Experten des Linux-Betriebssystems. Einige Statistiken: 1117 Personen haben sich für das Spiel registriert, 317 von ihnen haben mindestens einen Schlüssel gefunden, 241 haben die Aufgabe der ersten Stufe erfolgreich abgeschlossen, 123 - die zweite und 70 haben die dritte Stufe bestanden. Heute ist unser Spiel zu Ende und wir gratulieren unseren Gewinnern!

  • Den ersten Platz belegte Alexander Teldekov.
    Alexander sagte sich, dass er der typischste Systemadministrator ist. Lebt in Wolgograd und verwaltet seit zwanzig Jahren verschiedene Unix-ähnliche Systeme. Verwaltet für Internetanbieter, Banken und Systemintegratoren. Jetzt arbeitet er remote in einem kleinen Unternehmen und beschäftigt sich mit der Cloud-Infrastruktur für einen großen ausländischen Kunden. Liest gern, hört gerne Musik. Über das Spiel sagte Alexander, dass er das Spiel als Ganzes mochte, er liebt solche Rätsel. In einer der Firmen beim Interview war ich mit einem ähnlichen wie Hackerrank beschäftigt, es war interessant.
  • Zweiter Platz - Roman Suslov.
    Ein Roman aus Moskau. Er ist 37 Jahre alt. Er arbeitet als Linux / Unix-Ingenieur bei Jet Infosystems. Für die Arbeit muss ich Linux / Unix-Systeme + SAN verwalten und Fehler beheben. Die Interessen sind sehr unterschiedlich: Linux-Systeme, Programmierung, Reverse Engineering, Informationssicherheit, Arduino. Über das Spiel bemerkte Roman, dass er das Spiel im Allgemeinen mochte. „Ich habe meinen Gyrus ein wenig gebeugt und war vom grauen Alltag der täglichen Arbeit abgelenkt. :) Ich hätte gerne mehr Aufgaben, sonst hätte ich keine Zeit, einen Eindruck davon zu bekommen, wie das Spiel bereits vorbei war. "
  • Der dritte ist alex3d.
    Alex lebt in Moskau und beschäftigt sich mit Softwareentwicklung. "Vielen Dank für den Wettbewerb. Es war interessant, Ihre Google-Fu-Fähigkeiten zu überprüfen."

Auch in der Rangliste der Top 10 Spieler:

  • Jewgenij Saldayew
  • Markel Mokhnachevsky
  • Konstantin Konosov
  • Pavel Sergeev
  • Vladimir Bovaev
  • Ivan Bubnov
  • Pavlo klets

Wir verstehen, dass es viele Möglichkeiten gibt, alle unsere Probleme zu lösen. Eine der möglichen Lösungen wird unten beschrieben.

1. Die erste Stufe


Wir nannten es "Sind Sie sicher, dass der Administrator?", Weil die Aufgabe ganz einfach war - einen Warmlampendienst zu reparieren.

1.1. Interessante Fakten:


Zwei Spieler fanden den ersten Schlüssel in den ersten 15 Minuten des Spiels, und in der ersten Stunde hatten wir drei Anführer, die die Aufgabe bewältigten.

1.2. Aufgabe


Sie haben für ein Unternehmen gearbeitet, in dem es lange Zeit keinen kompetenten IT-Spezialisten gab. Bevor Sie mit dem Aufräumen beginnen, müssen Sie ein brennendes Problem lösen, das die Arbeit des Büros blockiert.

Eine Putzfrau wischte das Stromkabel zum Serverschrank. Die Stromversorgung wurde wiederhergestellt, aber eine sehr wichtige Website funktioniert immer noch nicht. Die Website ist wichtig, da das Unternehmen sich nicht sehr um die Informationssicherheit kümmert. Auf der Hauptseite finden Sie das Administratorkennwort auf dem Computer des CEO im Klartext.

Neulich wurde das Passwort geändert, aber jeder hat das neue vergessen, der Regisseur kann nicht arbeiten. Gerüchten zufolge gab es auf diesem Computer Schlüssel, mit denen wir die Sicherung von Buchhaltungsdokumenten entschlüsseln konnten.

Jeder wartet auf eine schnelle Lösung des Problems!

1.3. Lösung


1. Zunächst müssen Sie das Root-Passwort in der virtuellen Maschine ändern, um Zugriff darauf zu erhalten. Beim Start stellen wir fest, dass dies Ubuntu 16.04 Server ist.

Um das Root-Passwort zurückzusetzen, starten wir den Computer neu. Gehen Sie beim Start, wenn das Grub-Menü angezeigt wird, mit der Schaltfläche „e“ zur Bearbeitung des Ubuntu-Elements. Wir bearbeiten die Linux-Zeile und fügen am Ende init=/bin/bash . Wir laden durch Strg + x, wir bekommen Bash. Hängen Sie den Root mit rw erneut ein und ändern Sie das Passwort:

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

Vergessen Sie nicht die Synchronisierung, starten Sie neu.

2. Die Bedingung besagt, dass der Webserver bei uns nicht funktioniert, wir schauen:

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

Das heißt, Apache wird ausgeführt, antwortet jedoch mit Code 404. Wir sehen uns die Konfiguration an:

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

Es gibt auch einen Schlüssel - StevenPaulSteveJobs.

Wir überprüfen den Pfad /usr/share/WordPress - dies ist nicht der /usr/share/wordpress , aber es gibt /usr/share/wordpress . Wir korrigieren die Konfiguration und starten den Apache neu.

 $ systemctl restart apache2 

3. Wir versuchen es erneut, wir erhalten eine Fehlermeldung:

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

Die Datenbank läuft nicht?

 $ systemctl status mysql Active: active (running) 

Was ist los? Es ist notwendig zu verstehen. Dazu müssen Sie auf MySQL zugreifen. Wie das geht, finden Sie in der Dokumentation . Einer der Punkte in der Dokumentation empfiehlt, dass wir die Option /etc/mysql/mysql.conf.d/mysqld.cnf skip-grant-tables in /etc/mysql/mysql.conf.d/mysqld.cnf . Hier ist auch der Schlüssel - AugustaAdaKingByron.

Wir korrigieren die Rechte für den Benutzer 'wp'@'localhost' . Wir starten MySQL, machen es über das Netzwerk zugänglich und kommentieren die Option zum skip-networking in der Konfiguration.

4. Nach den durchgeführten Aktionen wird der Webserver gestartet, die Site funktioniert jedoch weiterhin nicht

 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 

Wir korrigieren die Rechte an der Datei.

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

Wir aktualisieren die Seite, gehen zur Website und finden den Schlüssel - BjarneStroustrup! Wir haben alle drei Schlüssel gefunden, unser Direktor kann arbeiten, wir haben die Buchhaltungsdateien entschlüsselt. Alle sind glücklich und Sie haben noch viel Arbeit vor sich, um Infrastruktur, Backups und Sicherheit im Unternehmen zu etablieren.

2. Die zweite Stufe


Das Problem des Sammelns von Analysen musste gelöst werden. Jeder liebt Analytik - wer und wo und in welcher Menge. Wir haben uns einen Fall ausgedacht, dem alle Ingenieure im Leben in der einen oder anderen Form begegnen können.

2.1. Interessante Fakten


Einer unserer Spieler hat in den ersten 10 Minuten des Spiels den richtigen Schlüssel eingegeben, und in der ersten Stunde haben wir einen Anführer, der die Aufgabe bewältigt hat.

2.2. Aufgabe


Sie gingen zur Arbeit für das Unternehmen, Manager kamen zu Ihnen und fragten, an wen Briefe aus Afrika geschickt wurden. Sie müssen die Top-21-Empfängeradressen darauf aufbauen. Die Anfangsbuchstaben der Empfängeradressen sind der Schlüssel. Eines: Der Mailserver, über den Briefe gesendet wurden, wird nicht geladen. Jeder wartet auf eine schnelle Lösung des Problems!

2.3. Lösung


1. Der Server wird aufgrund der nicht vorhandenen Swap-Partition in fstab nicht geladen. Beim Booten versucht das System, ihn bereitzustellen, und stürzt ab. Wie boote ich?

Laden Sie das Image herunter, wir haben CentOS 7 heruntergeladen, von der Live-CD / DVD gestartet (Fehlerbehebung -> Rettung), das System gemountet, /etc/fstab bearbeitet. Hier finden wir den ersten Schlüssel - GottfriedWilhelm11646Leibniz!

Erstellen Sie einen Swap:

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

2. Wie immer gibt es kein Kennwort. Sie müssen das Root-Kennwort auf der virtuellen Maschine ändern. Das haben wir schon in der ersten Aufgabe gemacht. Wir ändern und gehen erfolgreich zum Server, aber es wird sofort neu gestartet. Der Server ist so schnell überlastet, dass keine Zeit bleibt, alle Protokolle sorgfältig zu prüfen. Wie kann man verstehen, was passiert?

Wieder booten wir von livecd, studieren sorgfältig die Systemprotokolle und für den Fall, dass wir in Kronen schauen, da eine solche Häufigkeit. Dort finden wir das Problem und der zweite Schlüssel ist Alan1912MathisonTuring!

Das echo b > /proc/sysrq-trigger in /etc/crontab muss gelöscht oder echo b > /proc/sysrq-trigger .

3. Danach wurde der Server hochgefahren und Sie können die Aufgabe der Manager ausführen: "Wie lauten die Adressen Afrikas?" Diese Informationen sind allgemein öffentlich zugänglich. Sie finden diese Informationen im Internet unter den Begriffen „IP-Adresse Afrika“, „Geoip-Datenbank“. Um das Problem zu lösen, können Sie frei verfügbare Adressverteilungsbasen (Geoip) verwenden. Wir haben die MaxMind GeoLite2- Datenbank, die unter der Creative Commons Attribution-ShareAlike 4.0-Lizenz verfügbar ist, als Referenz verwendet.

Versuchen wir, unser Problem nur mit Linux-Systemdienstprogrammen zu lösen. Im Allgemeinen kann es jedoch auf vielfältige Weise gelöst werden: mithilfe von Textfilterdienstprogrammen und mithilfe von Skripten in verschiedenen Programmiersprachen.

Zunächst erhalten wir nur die Paare "IP-Absender - Empfänger" aus dem E-Mail-Protokoll /var/log/maillog ( /var/log/maillog eine Tabelle mit der E-Mail- /var/log/maillog des Empfängers - IP-Absender). Dies kann mit dem folgenden Befehl erfolgen:

 $ 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 

Bevor wir mit der Zusammenstellung der Datenbank afrikanischer Adressen fortfahren, schauen wir uns die Top-IP-Adressen der Absender an.

 $ 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 

Unter den ersten drei Empfängern von oben unterscheiden sich deutlich die Anzahl der Buchstaben. Wenn Sie die IP-Adressen von Absendern überprüfen, die an Adressen aus diesen Top-3 gesendet wurden, können Sie die eindeutige Dominanz bestimmter Netzwerke erkennen:

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

Die meisten Netzwerke 105/8, 41/8, 196 / 8,197 / 8 werden von AFRINIC zugewiesen - einem der fünf regionalen Internet-Registrare, die Internet-Ressourcen verteilen. AFRINIC verteilt den Adressraum in Afrika. Und 41/8 bezieht sich vollständig auf AFRINIC.

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

Die Antwort auf das Problem befindet sich also tatsächlich im Protokoll selbst.

 $ 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.ru 

Zu diesem Zeitpunkt erhalten wir die Zeichenfolge "LinuxBenedictTorvadst".

Der richtige Schlüssel ist LinusBenedictTorvalds.

Die resultierende Zeichenfolge enthält einen Tippfehler in Bezug auf den richtigen Schlüssel in 3 extremen Zeichen. Dies liegt an der Tatsache, dass die von uns ausgewählten Netzwerke nicht vollständig afrikanischen Ländern zugeordnet sind und wie die E-Mails nach IP-Adressen in unserem Protokoll verteilt werden.

Bei ausreichender Klärung der größten den afrikanischen Ländern zugewiesenen Netze erhalten Sie die genaue Antwort:

 $ 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 

Das Problem kann auch auf andere Weise gelöst werden.
Laden Sie MaxMind herunter, entpacken Sie es und die folgenden drei Teams lösen ebenfalls unser Problem.

 $ 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 

Auf die eine oder andere Weise haben wir schließlich die Statistiken gezählt und die Manager haben die Daten erhalten, die sie zum Arbeiten benötigen!

3. Die dritte Stufe


Die dritte Stufe ähnelt der ersten - Sie müssen auch den Warmlampenservice reparieren, aber es ist schwieriger als bei der ersten Aufgabe.

3.1. Interessante Fakten


In den ersten 15 Minuten fanden drei Spieler den ersten Schlüssel, 2 Stunden 20 Minuten nach Beginn der Etappe erledigte unser Gewinner die Aufgabe.

3.2. Aufgabe


Sie haben in einem Unternehmen gearbeitet, in dem alle Unternehmensdokumente auf dem internen Wiki-Server gespeichert sind. Im vergangenen Jahr bestellte ein Techniker zusätzlich zu einer vorhandenen drei neue Festplatten für den Server und argumentierte, dass es aus Gründen der Systemfehlertoleranz erforderlich sei, Festplatten in einige Arrays einzulegen. Leider ging der Ingenieur einige Wochen nach ihrer Installation in Indien zur Ruhe und kehrte nicht zurück.

Der Server arbeitete mehrere Jahre ohne Fehler, aber vor ein paar Tagen wurde das Netzwerk des Unternehmens gehackt. Gemäß den Anweisungen haben die Sicherheitsbeamten die Datenträger vom Server entfernt und an Sie gesendet. Während des Transports ging eine Festplatte unwiederbringlich verloren.

Sie müssen das Wiki wiederherstellen. Zunächst ist der Inhalt der Wiki-Seiten von Interesse. Ein Text, der sich auf einer der Seiten dieses Wikis befand, ist ein Passwort von einem 1C-Server und wird dringend benötigt, um es zu entsperren.

Außerdem gab es irgendwo auf den Wiki-Seiten oder anderswo Passwörter vom Protokollserver und vom Videoüberwachungsserver, die ebenfalls wiederhergestellt werden sollten. Ohne sie ist es unmöglich, den Vorfall zu untersuchen. Wie immer werden sie von einer operativen Lösung des Problems erwartet!

3.3. Lösung


1. Wir versuchen, der Reihe nach von den Laufwerken zu booten, die wir haben, und überall erhalten wir die gleiche Meldung:

 No bootable medium found! System halted 

Es ist notwendig, von etwas zu booten. Rettet den Start erneut von einer Live-CD / DVD (Fehlerbehebung -> Rettung). Beim Booten versuchen wir, die Boot-Partition zu finden. Wir finden sie nicht. Wir gelangen in die Shell. Wir versuchen zu lernen, was und wie mit Festplatten. Es ist bekannt, dass es drei davon gibt. In der 7. Version von CentOS gibt es weitere Tools dafür. Dort gibt es blkid oder lsblk , die uns alle Informationen zu den Festplatten lsblk .

Wie und was zu tun ist:

 $ ls /dev/sd* 

Es ist sofort klar, dass

 /dev/sdb1 - ext4 /dev/sdb2 -  lvm /dev/sda1  /dev/sdc1 -   /dev/sda2  /dev/sdc2 -         

Mounten Sie sdb1, es ist klar, dass dies die Boot-Partition von CentOS 6 ist.

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

Offensichtlich gehen wir zum Grub-Bereich und finden dort den ersten Schlüssel - James191955Gosling in einer ungewöhnlichen Datei.

2. Wir studieren pvs und lvs, während wir mit LVM arbeiten. Wir sehen, dass es 2 physische Volumes geben sollte, eines befindet sich nicht und schwört auf die verlorene UID. Wir sehen, dass es logisch 2 Volumes geben sollte: root und swap, während root teilweise verloren geht (das P-Attribut von volume). Mount funktioniert nicht, aber sorry! Wir brauchen ihn wirklich.

Es gibt 2 weitere Festplatten, sieh sie dir an, montiere sie und montiere sie:

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

Wir sehen, es ist klar, dass dies die CentOS 6-Boot-Partition ist und eine Aufnahme dessen, was bereits auf /dev/sdb1 , und auch hier ist der gleiche Schlüssel James191955Gosling!

Wir schauen uns an, wie /dev/md127 .

 $ mdadm --detail /dev/md127 

Wir sehen, dass es aus 4 Festplatten zusammengesetzt werden musste, zusammengesetzt aus zwei /dev/sda1 und /dev/sdc1 , sie sollten die Nummern 2 und 4 im System sein. Wir gehen davon aus, dass Sie auch ein Array aus /dev/sda2 und /dev/sdc2 . Es ist unklar, warum sie keine Metadaten enthalten, aber dies liegt im Gewissen des Administrators, der sich irgendwo in Goa befindet. Wir gehen davon aus, dass es RAID10 geben sollte, obwohl es Optionen gibt. Wir sammeln:

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

Wir schauen uns blkid, pvs, lvs an. Wir stellen fest, dass wir ein physisches Volumen gesammelt haben, das uns zuvor gefehlt hat.

Wir haben lvroot sofort repariert, gemountet, aber zuerst VG aktiviert:

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

Und alles ist da, einschließlich des DennisBMacAlistairCRitchie-Schlüssels - im Stammverzeichnis - /root/sweet .

3. Trotzdem versuchen wir, unseren Server wiederzubeleben, damit er normal startet. Das gesamte logische Volume c aus unserem /dev/md0 (wo wir alles haben) wird nach /dev/sdb2 , wo der gesamte Server ursprünglich gearbeitet hat.

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

Wir löschen den Server, entfernen 1 und 3 Festplatten, lassen die zweite, booten von der Live-CD / DVD in Rescue. Wir finden den Boot-Bereich, stellen Sie den Bootloader in grub wieder her:

 root (hd0,0) setup (hd0) 

Wir reißen die Bootdiskette ab und booten erfolgreich, aber die Site funktioniert nicht.

4. Es gibt zwei Möglichkeiten, um die Site zu starten: Konfigurieren Sie Apache von Grund auf neu oder verwenden Sie Nginx, das bereits im Voraus mit php-fpm konfiguriert wurde:

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

Schließlich müssen Sie MySQL starten:

 $ /etc/init.d/mysqld start 

Es startet nicht und die Lösung liegt in /var/log/mysql . Sobald Sie das Problem mit MySQL lösen, funktioniert die Site. Auf der Hauptseite befindet sich ein Schlüssel - RichardGCCMatthewGNUStallman! Jetzt haben wir Zugang zu 1C und die Mitarbeiter können bezahlt werden. Und wie immer haben Sie noch viel Arbeit vor sich, um die Infrastruktur und Sicherheit im Unternehmen aufzubauen.

Wir können auch wieder eine Liste von Büchern teilen, die uns und unseren Teilnehmern geholfen haben, sich auf das Spiel vorzubereiten: linux.mail.ru/books .

Danke, dass Sie bei uns sind! Folgen Sie den Ankündigungen der nächsten Spiele!

Source: https://habr.com/ru/post/de447222/


All Articles