Pencarian Linux. Selamat kepada para pemenang dan beri tahu kami tentang solusi tugas tersebut

Pencarian Linux. Selamat kepada para pemenang dan beri tahu kami tentang solusi tugas tersebut

Pada tanggal 25 Maret kami membuka pendaftaran untuk Pencarian Linux, ini adalah Game untuk pecinta dan ahli sistem operasi Linux. Beberapa statistik: 1117 orang mendaftar untuk permainan ini, 317 di antaranya menemukan setidaknya satu kunci, 241 berhasil menyelesaikan tugas tahap pertama, 123 - tahap kedua, dan 70 lolos tahap ketiga. Hari ini permainan kami telah berakhir dan kami mengucapkan selamat kepada para pemenang kami!

  • Alexander Teldekov menempati posisi pertama.
    Alexander berkata pada dirinya sendiri bahwa dia adalah administrator sistem yang paling umum. Tinggal di Volgograd, telah menjalankan berbagai sistem mirip Unix selama sekitar dua puluh tahun. Saya berhasil bekerja di penyedia Internet, bank, dan integrator sistem. Sekarang dia bekerja jarak jauh di sebuah perusahaan kecil, mengerjakan infrastruktur cloud untuk pelanggan asing yang besar. Suka membaca dan mendengarkan musik. Tentang Game tersebut, Alexander mengatakan bahwa dia menyukai game tersebut secara keseluruhan, dia menyukai tugas-tugas seperti itu. Saat wawancara di salah satu perusahaan saya melakukan hal serupa dengan Hackerrank, itu menarik.
  • Tempat kedua adalah Roman Suslov.
    Sebuah novel dari Moskow. Dia berusia 37 tahun. Bekerja sebagai insinyur Linux/Unix di Jet Infosystems. Di tempat kerja, saya harus mengelola dan memecahkan masalah sistem Linux/Unix + SAN. Minatnya beragam: sistem Linux, pemrograman, rekayasa balik, keamanan informasi, Arduino. Tentang Game Roman mencatat bahwa dia menyukai game tersebut secara keseluruhan. “Saya sedikit meregangkan otak saya dan beristirahat dari kehidupan sehari-hari yang kelabu dalam pekerjaan sehari-hari. 🙂 Saya ingin memiliki lebih banyak tugas, jika tidak, sebelum saya sempat mencobanya, permainan sudah berakhir.”
  • Ketiga - alex3d.
    Alex tinggal di Moskow dan bekerja di bidang pengembangan perangkat lunak. “Terima kasih atas kontesnya, menarik sekali untuk menguji kemampuan google-fu saya.”

Juga di peringkat 10 pemain terbaik:

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

Kami memahami bahwa ada banyak pilihan untuk menyelesaikan semua masalah kami; beberapa solusi yang mungkin dijelaskan di bawah ini.

1. Tahap pertama

Kami menyebutnya “Apakah Anda benar-benar seorang admin?”, karena tugasnya cukup sederhana - memperbaiki layanan lampu hangat.

1.1. Fakta Menarik:

Dua pemain menemukan kunci pertama dalam 15 menit pertama permainan, dan dalam satu jam pertama kami memiliki tiga pemimpin yang menyelesaikan tugas tersebut.

1.2. Latihan

Anda bekerja di sebuah perusahaan yang sudah lama tidak memiliki spesialis teknologi informasi yang kompeten. Sebelum Anda mulai membereskan segala sesuatunya, Anda perlu menyelesaikan masalah pembakaran yang menghalangi pekerjaan kantor.

Wanita pembersih menangkap kabel listrik kabinet server dengan kain pel. Listrik telah pulih, namun situs web yang sangat penting masih tidak berfungsi. Situs web penting karena perusahaan tidak terlalu memperhatikan keamanan informasi, dan di halaman utama Anda dapat menemukan kata sandi administrator untuk komputer CEO dalam teks yang jelas.

Suatu hari kata sandi diubah, tetapi semua orang lupa yang baru, direktur tidak dapat bekerja. Ada rumor bahwa ada lebih banyak kunci pada mesin ini yang dapat membantu kami menguraikan salinan cadangan dokumen akuntansi.

Semua orang mengharapkan penyelesaian segera atas masalah ini!

1.3. Solusi

1. Pertama-tama, Anda perlu mengubah kata sandi root pada mesin virtual untuk mendapatkan akses ke sana. Saat memulai, kami melihat bahwa ini adalah Server Ubuntu 16.04.

Untuk mereset kata sandi root, kami me-restart mesin, saat memuat, saat menu grub ditampilkan, lanjutkan untuk mengedit item Ubuntu dengan tombol "e". Edit baris linux, tambahkan di akhir init=/bin/bash. Kami memuat melalui Ctrl+x, kami mendapat bash. Remount root dengan rw, ganti passwordnya:

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

Jangan lupa tentang sinkronisasi, reboot.

2. Kondisi mengatakan web server kita tidak berfungsi, lihat :

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

Faktanya, Apache sedang berjalan, tetapi merespons dengan kode 404. Mari kita lihat konfigurasinya:

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

Ada juga kuncinya di sini - StevenPaulSteveJobs.

Memeriksa jalan /usr/share/WordPress - tidak ada hal seperti itu, tapi ada /usr/share/wordpress. Edit konfigurasi dan mulai ulang Apache.

$ systemctl restart apache2

3. Coba lagi, kami mendapatkan error:

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

Basis datanya tidak berjalan?

$ systemctl status mysql
Active: active (running)

Apa masalahnya? Kita perlu mencari tahu. Untuk melakukan ini, Anda perlu mendapatkan akses ke MySQL, seperti yang dijelaskan di dokumentasi. Salah satu poin dokumentasi merekomendasikan agar kami mendaftarkan opsi tersebut skip-grant-tables в /etc/mysql/mysql.conf.d/mysqld.cnf. Ada juga kuncinya di sini - AugustaAdaKingByron.

Memperbaiki hak pengguna 'wp'@'localhost'. Kami meluncurkan MySQL, membuatnya dapat diakses melalui jaringan, mengomentari opsi di konfigurasi skip-networking.

4. Setelah langkah-langkah ini, server web dimulai, tetapi situs masih tidak berfungsi karena

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

Kami mengedit hak atas file.

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

Kami menyegarkan halaman, membuka situs dan menemukan kuncinya - BjarneStroustrup! Kami menemukan ketiga kunci, direktur kami dapat bekerja, kami mendekripsi file akuntansi. Semua orang senang, dan Anda memiliki banyak pekerjaan di depan Anda untuk menyiapkan infrastruktur, cadangan, dan keamanan di perusahaan.

2. Tahap kedua

Hal itu perlu untuk memecahkan masalah pengumpulan analitik. Semua orang menyukai analitik - siapa yang menggunakannya, di mana, dan dalam jumlah berapa. Kami menemukan sebuah kasus yang mungkin dihadapi semua insinyur dalam satu atau lain bentuk dalam kehidupan.

2.1. Fakta menarik

Salah satu pemain kami memasukkan kunci yang benar dalam 10 menit pertama permainan, dan dalam satu jam pertama kami memiliki pemimpin yang menyelesaikan tugas tersebut.

2.2. Latihan

Anda pergi bekerja di perusahaan, manajer mendatangi Anda dan meminta Anda mencari tahu kepada siapa surat-surat itu dikirim dari Afrika. Kita perlu membuat 21 alamat penerima teratas berdasarkan alamat tersebut. Huruf pertama dari alamat penerima adalah kuncinya. Satu hal: server email tempat pengiriman surat tidak dimuat. Semua orang mengharapkan penyelesaian segera atas masalah ini!

2.3. Solusi

1. Server tidak bisa boot karena tidak ada partisi swap di fstab, saat memuat, sistem mencoba memasangnya dan crash. Bagaimana cara mem-bootnya?

Download image, kita download CentOS 7, boot dari Live CD/DVD (Troubleshooting -> Rescue), mount sistem, edit /etc/fstab. Kami segera menemukan kunci pertama - GottfriedWilhelm11646Leibniz!

Buat pertukaran:

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

2. Seperti biasa, tidak ada kata sandi, Anda perlu mengubah kata sandi root pada mesin virtual. Kami sudah melakukan ini di tugas pertama. Kita ubah dan berhasil login ke server, namun langsung masuk ke reboot. Server kelebihan beban dengan kecepatan sedemikian rupa sehingga Anda bahkan tidak punya waktu untuk melihat semua log dengan cermat. Bagaimana memahami apa yang terjadi?

Sekali lagi kita mem-boot dari livecd, mempelajari log sistem dengan cermat dan, untuk berjaga-jaga, melihat ke dalam cron, karena periodisitasnya. Di sana kami menemukan masalah dan kunci kedua - Alan1912MathisonTuring!

Dibutuhkan di /etc/crontab hapus atau komentari baris tersebut echo b > /proc/sysrq-trigger.

3. Setelah server dimuat, dan Anda dapat menyelesaikan tugas manajer: “Apa alamat di Afrika?” Informasi ini umumnya tersedia untuk umum. Anda dapat menemukan informasi ini di Internet menggunakan frasa “alamat ip afrika”, “database geoip”. Untuk mengatasi masalah ini, Anda dapat menggunakan database distribusi alamat (geoip) yang tersedia secara gratis. Kami menggunakan database sebagai standar MaxMind GeoLite2, tersedia di bawah lisensi Creative Commons Attribution-ShareAlike 4.0.

Mari kita coba menyelesaikan masalah kita hanya dengan menggunakan utilitas sistem Linux, tetapi secara umum masalah ini dapat diselesaikan dengan banyak cara: menggunakan utilitas pemfilteran teks dan menggunakan skrip dalam berbagai bahasa pemrograman.

Untuk memulainya, kita hanya akan mendapatkan pasangan “IP pengirim-penerima” dari log email /var/log/maillog (mari kita buat tabel penerima email - IP pengirim). Hal ini dapat dilakukan dengan perintah berikut:

$ 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

Dan sebelum kita melanjutkan menyusun database alamat Afrika, mari kita lihat alamat IP pengirim teratas.

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

Di antara semuanya, tiga penerima pertama dari atas jelas menonjol dalam hal jumlah surat. Jika Anda mengetahui alamat IP pengirim yang mengirim ke alamat dari 3 teratas ini, Anda akan melihat dominasi yang jelas dari jaringan tertentu:

$ 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

Sebagian besar jaringan 105/8, 41/8, 196/8,197/8 dialokasikan ke AFRINIC - salah satu dari lima pendaftar Internet regional yang mendistribusikan sumber daya Internet. AFRINIC mendistribusikan ruang alamat di seluruh Afrika. Dan 41/8 mengacu pada AFRINIC sepenuhnya.

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

Jadi, jawaban atas masalahnya sebenarnya ada di log itu sendiri.

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

Pada tahap ini kita mendapatkan string “LinuxBenedictTorvadst”.

Kunci yang benar: "LinusBenedictTorvalds".

String yang dihasilkan berisi kesalahan ketik sehubungan dengan kunci yang benar dalam 3 karakter terakhir. Hal ini disebabkan oleh fakta bahwa jaringan yang kami pilih tidak sepenuhnya didedikasikan untuk negara-negara Afrika dan cara email didistribusikan berdasarkan alamat IP di log kami.

Dengan spesifikasi yang memadai mengenai jaringan terbesar yang dialokasikan ke negara-negara Afrika, jawaban yang tepat dapat diperoleh:

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

Masalahnya juga bisa diselesaikan dengan cara lain.
Unduh MaxMind, buka paketnya, dan tiga perintah berikutnya juga menyelesaikan masalah kita.

$ 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

Dengan satu atau lain cara, kami akhirnya menghitung statistiknya, dan para manajer menerima data yang mereka butuhkan untuk bekerja!

3. Tahap ketiga

Tahap ketiga agak mirip dengan yang pertama - Anda juga perlu memperbaiki layanan lampu hangat, tetapi semuanya lebih rumit daripada tugas pertama.

3.1. Fakta menarik

Dalam 15 menit pertama, tiga pemain menemukan kunci pertama; 2 jam 20 menit setelah dimulainya tahapan, pemenang kami menyelesaikan tugas.

3.2. Latihan

Anda bekerja di sebuah perusahaan di mana semua dokumen perusahaan disimpan di server Wiki internal. Tahun lalu, seorang insinyur memesan 3 disk baru untuk server selain satu disk yang sudah ada, dengan alasan bahwa agar sistem dapat toleran terhadap kesalahan, disk tersebut perlu ditempatkan dalam beberapa jenis array. Sayangnya, beberapa minggu setelah pemasangannya, insinyur tersebut pergi berlibur ke India dan tidak kembali.

Server bekerja tanpa kegagalan selama beberapa tahun, namun beberapa hari yang lalu jaringan perusahaan diretas. Berdasarkan instruksi, staf keamanan mengeluarkan disk dari server dan mengirimkannya kepada Anda. Selama transportasi, satu disk hilang dan tidak dapat diambil kembali.

Kita perlu memulihkan fungsionalitas Wiki; pertama-tama, kita tertarik pada konten halaman wiki. Sepotong teks tertentu yang ada di salah satu halaman wiki ini adalah kata sandi untuk server 1C dan sangat dibutuhkan untuk membukanya.

Selain itu, di suatu tempat di halaman wiki atau di tempat lain terdapat kata sandi untuk server log dan server pengawasan video, yang juga ingin dipulihkan; tanpa mereka, penyelidikan atas insiden tersebut tidak mungkin dilakukan. Seperti biasa, kami mengharapkan penyelesaian segera atas masalah ini!

3.3. Solusi

1. Kami mencoba mem-boot satu per satu dari disk yang kami miliki dan di mana pun kami menerima pesan yang sama:

No bootable medium found! System halted 

Anda perlu mem-boot dari sesuatu. Booting dari Live CD/DVD (Pemecahan Masalah -> Penyelamatan) membantu lagi. Saat memuat, kami mencoba mencari partisi boot, kami tidak dapat menemukannya, kami berakhir di shell. Kami mencoba mempelajari apa dan bagaimana melakukannya dengan disk. Diketahui jumlahnya ada tiga. Ada lebih banyak alat untuk ini di CentOS versi 7, di mana terdapat perintah blkid или lsblk, yang menunjukkan kepada kita semua informasi tentang disk.

Bagaimana dan apa yang kami lakukan:

$ ls /dev/sd*

Segera jelas bahwa

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

Kami memasang sdb1, jelas ini adalah partisi boot CentOS 6.

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

Jelas, kita pergi ke bagian grub dan menemukan kunci pertama di sana - James191955Gosling dalam file yang tidak biasa.

2. Kami mempelajari pvs dan lvs, karena kami bekerja dengan LVM. Kami melihat seharusnya ada 2 volume fisik, satu tidak ditemukan dan mengeluh kehilangan cairan. Kita melihat bahwa seharusnya ada 2 volume logis: root dan swap, sedangkan root hilang sebagian (atribut volume P). Tidak mungkin untuk memasangnya, sayang sekali! Kami sangat membutuhkannya.

Ada 2 disk lagi, kami melihatnya, merakit dan memasangnya:

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

Kita lihat, kita dapat melihat bahwa ini adalah partisi boot CentOS 6 dan duplikat dari apa yang sudah ada /dev/sdb1, dan di sini lagi kunci yang sama - DennisBMacAlistairCRitchie!
Mari kita lihat cara perakitannya /dev/md127.

$ mdadm --detail /dev/md127

Kami melihat bahwa itu seharusnya dirakit dari 4 disk, tetapi dirakit dari dua /dev/sda1 и /dev/sdc1, mereka seharusnya menjadi nomor 2 dan 4 dalam sistem. Kami berasumsi bahwa dari /dev/sda2 и /dev/sdc2 Anda juga dapat mengumpulkan array. Tidak jelas mengapa tidak ada metadata di dalamnya, tapi ini berdasarkan hati nurani admin, yang ada di suatu tempat di Goa. Kami berasumsi bahwa harus ada RAID10, meskipun ada opsi. Kami mengumpulkan:

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

Kami melihat blkid, pvs, lvs. Kami menemukan bahwa kami telah mengumpulkan volume fisik yang sebelumnya tidak kami miliki.

lvroot langsung diperbaiki, kita mount, tapi aktifkan dulu VG:

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

Dan semuanya ada di sana, termasuk kunci di direktori root home - /root/sweet.

3. Kami masih berusaha untuk menghidupkan kembali server kami agar dapat berjalan normal. Semua volume logis dari kami /dev/md0 (tempat kami menemukan semuanya) seret ke /dev/sdb2, tempat seluruh server awalnya bekerja.

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

Kami mematikan server, mengeluarkan disk 1 dan 3, membiarkan yang kedua, boot dari Live CD/DVD ke Rescue. Temukan partisi boot dan pulihkan bootloader di grub:

root (hd0,0)
setup (hd0)

Kami merobek disk boot dan berhasil memuat, tetapi situs tersebut tidak berfungsi.

4. Ada dua opsi untuk meluncurkan situs web: konfigurasikan Apache dari awal atau gunakan nginx dengan php-fpm yang sudah dikonfigurasi sebelumnya:

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

Terakhir, Anda perlu memulai MySQL:

$ /etc/init.d/mysqld start

Itu tidak akan dimulai, dan jawabannya ada di dalam /var/log/mysql. Segera setelah Anda menyelesaikan masalah dengan MySQL, situs akan berfungsi, di halaman utama akan ada kunci - RichardGCCMatthewGNUStallman! Sekarang kami memiliki akses ke 1C, dan karyawan dapat menerima gaji mereka. Dan seperti biasa, Anda memiliki banyak pekerjaan ke depan untuk membangun infrastruktur dan keamanan di perusahaan.

Kami juga dapat sekali lagi membagikan daftar buku yang membantu kami dan peserta mempersiapkan permainan: linux.mail.ru/books.

Terima kasih karena telah bersama kami! Nantikan pengumuman game berikutnya!

Sumber: www.habr.com

Tambah komentar