
25 Maret, kami membuka pendaftaran untuk
Linux Quest , ini adalah permainan untuk para penggemar dan pakar sistem operasi Linux. Beberapa statistik: 1117 orang mendaftar untuk permainan, 317 dari mereka menemukan setidaknya satu kunci, 241 berhasil menyelesaikan tugas tahap pertama, 123 dari tahap kedua dan 70 menyelesaikan tahap ketiga. Hari ini permainan kami telah berakhir, dan kami mengucapkan selamat kepada para pemenang kami!
- Tempat pertama diambil oleh Alexander Teldekov.
Alexander berkata pada dirinya sendiri bahwa dia adalah sysadmin yang paling khas. Tinggal di Volgograd, mengelola berbagai sistem mirip Unix selama dua puluh tahun. Berhasil bekerja di penyedia Internet, bank, integrator sistem. Sekarang dia bekerja jarak jauh di sebuah perusahaan kecil, dia terlibat dalam infrastruktur cloud untuk pelanggan asing yang besar. Suka membaca, mendengarkan musik. Tentang permainan, Alexander mengatakan bahwa dia menyukai permainan secara keseluruhan, dia menyukai teka-teki seperti itu. Di salah satu perusahaan di wawancara saya terlibat dalam mirip dengan Hackerrank, itu menarik. - Tempat kedua - Roman Suslov.
Sebuah novel dari Moskow. Usianya 37 tahun. Ia bekerja sebagai insinyur Linux / Unix di Jet Infosystems. Untuk bekerja, saya harus mengelola dan memecahkan masalah sistem Linux / Unix + SAN. Minatnya sangat berbeda: sistem Linux, pemrograman, rekayasa terbalik, keamanan informasi, Arduino. Tentang Game, Roman mencatat bahwa ia umumnya menyukai game. “Saya sedikit melenturkan gyrus saya dan teralihkan dari kehidupan sehari-hari yang kelabu dari pekerjaan sehari-hari. :) Saya ingin lebih banyak tugas, kalau tidak saya tidak punya waktu untuk merasakan bagaimana permainan sudah berakhir. " - Yang ketiga adalah alex3d.
Alex tinggal di Moskow, bergerak dalam pengembangan perangkat lunak. "Terima kasih untuk kontesnya, menarik untuk memeriksa keterampilan google-fu kamu."
Juga di peringkat 10 pemain teratas:
- Yevgeniy saldayev
- Markel Mokhnachevsky
- Konstantin Konosov
- Pavel Sergeev
- Vladimir Bovaev
- Ivan Bubnov
- Pavlo klet
Kami memahami bahwa ada banyak opsi untuk menyelesaikan semua masalah kami, salah satu solusi yang mungkin dijelaskan di bawah ini.
1. Tahap pertama
Kami menyebutnya "Apakah Anda yakin admin?", Karena tugasnya cukup sederhana - untuk memperbaiki layanan lampu hangat.
1.1. Fakta menarik:
Dua pemain menemukan kunci pertama dalam 15 menit pertama pertandingan, dan pada jam pertama kami memiliki tiga pemimpin yang mengatasi tugas tersebut.
1.2. Tugas
Anda pergi bekerja untuk sebuah perusahaan di mana untuk waktu yang lama tidak ada spesialis IT yang kompeten. Sebelum Anda mulai membersihkan, Anda harus menyelesaikan masalah pembakaran yang menghambat pekerjaan kantor.
Seorang wanita pembersih mengepel kabel daya ke kabinet server. Daya pulih, tetapi situs web yang sangat penting masih tidak berfungsi. Situs web ini penting karena perusahaan tidak terlalu mementingkan keamanan informasi, dan di halaman utama ini Anda dapat menemukan kata sandi administrator dari komputer CEO dalam teks yang jelas.
Suatu hari, kata sandi diubah, tetapi semua orang lupa yang baru, direktur tidak dapat bekerja. Rumor mengatakan bahwa ada kunci pada mesin ini yang dapat membantu kami mendekripsi cadangan dokumen akuntansi.
Semua orang menunggu solusi cepat untuk masalah ini!
1.3. Solusi
1. Pertama-tama, Anda perlu mengubah kata sandi root di mesin virtual untuk mendapatkan akses ke sana. Saat startup, kami perhatikan bahwa ini adalah Ubuntu 16.04 Server.
Untuk mengatur ulang kata sandi root, kami menyalakan ulang mesin, saat startup, ketika menu grub ditampilkan, buka pengeditan item Ubuntu dengan tombol "e". Kami mengedit baris linux, tambahkan
init=/bin/bash
sampai akhir. Kami memuat melalui Ctrl + x, kami mendapatkan bash. Remount root dengan rw, ubah kata sandi:
$ mount -o remount,rw /dev/mapper/ubuntu--vg-root $ passwd
Jangan lupa tentang sinkronisasi, reboot.
2. Syaratnya mengatakan bahwa server web tidak bekerja untuk kita, kita lihat:
$ curl localhost Not Found The requested URL / was not found on this server. Apache/2.4.18
Faktanya, Apache berjalan, tetapi merespons dengan kode 404. Kami melihat konfigurasi:
$ vim /etc/apache2/sites-enabled/000-default.conf
Ada juga kunci - StevenPaulSteveJobs.
Kami memeriksa jalur
/usr/share/WordPress
- ini bukan, tetapi ada
/usr/share/wordpress
. Kami memperbaiki konfigurasi dan memulai kembali Apache.
$ systemctl restart apache2
3. Kami mencoba lagi, kami mendapatkan kesalahan:
Warning: mysqli_real_connect(): (HY000/2002): Connection refused in /usr/share/wordpress/wp-includes/wp-db.php on line 1488
Basis data tidak berjalan?
$ systemctl status mysql Active: active (running)
Ada apa? Ini perlu dipahami. Untuk melakukan ini, Anda perlu mengakses MySQL, cara melakukannya dijelaskan dalam
dokumentasi . Salah satu poin dalam dokumentasi merekomendasikan agar kita menulis opsi
skip-grant-tables
di
/etc/mysql/mysql.conf.d/mysqld.cnf
. Ini juga kuncinya - AugustaAdaKingByron.
Kami memperbaiki hak pengguna
'wp'@'localhost'
. Kami memulai MySQL, membuatnya dapat diakses melalui jaringan, mengomentari opsi
skip-networking
di konfigurasi.
4. Setelah tindakan diambil, server web memulai, tetapi situs tersebut tetap tidak berfungsi, seperti
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 memperbaiki hak atas file tersebut.
$ chmod 644 /usr/share/wordpress/wp-content/themes/twentysixteen/footer.php
Kami menyegarkan halaman, pergi ke situs dan temukan kunci - BjarneStroustrup! Kami menemukan ketiga kunci, direktur kami dapat bekerja, kami mendekripsi file akuntansi. Semua orang senang, dan Anda memiliki banyak pekerjaan di depan untuk membangun infrastruktur, cadangan, dan keamanan di perusahaan.
2. Tahap kedua
Itu perlu untuk memecahkan masalah pengumpulan analitik. Semua orang menyukai analitik - siapa dan ke mana dan dalam jumlah berapa. Kami menemukan sebuah kasus yang mungkin dihadapi semua insinyur dalam satu atau lain bentuk.
2.1. Fakta menarik
Salah satu pemain kami memasukkan kunci yang benar dalam 10 menit pertama pertandingan, dan pada jam pertama kami mendapat pemimpin yang mengatasi tugas tersebut.
2.2. Tugas
Anda pergi bekerja untuk perusahaan, manajer mendatangi Anda dan meminta untuk mencari siapa surat dikirim dari Afrika. Anda perlu membangun 21 alamat penerima teratas di atasnya. Huruf pertama dari alamat penerima adalah kuncinya. Satu hal: server surat yang digunakan untuk mengirim surat tidak dimuat. Semua orang menunggu solusi cepat untuk masalah ini!
2.3. Solusi
1. Server tidak dimuat karena partisi swap tidak ada di fstab, saat boot sistem mencoba me-mount dan crash. Bagaimana cara mem-boot?
Unduh gambar, kami unduh CentOS 7, boot dari Live CD / DVD (Pemecahan Masalah -> Penyelamatan), pasang sistem, edit
/etc/fstab
. Di sini kita menemukan kunci pertama - GottfriedWilhelm11646Leibniz!
Buat swap:
$ lvcreate -n swap centos -L 256M $ sync && reboot
2. Seperti biasa, tidak ada kata sandi, Anda perlu mengubah kata sandi root di mesin virtual. Kami sudah melakukan ini dalam tugas pertama. Kami berubah dan berhasil masuk ke server, tetapi segera masuk ke reboot. Server kelebihan beban pada kecepatan yang Anda bahkan tidak punya waktu untuk melihat semua log dengan hati-hati. Bagaimana memahami apa yang terjadi?
Sekali lagi kita boot dari livecd, hati-hati mempelajari log sistem dan kalau-kalau kita melihat mahkota, karena frekuensi seperti itu. Di sana kami menemukan masalah dan kunci kedua adalah Alan1912MathisonTuring!
Penting untuk menghapus atau mengomentari baris
echo b > /proc/sysrq-trigger
di
/etc/crontab
.
3. Setelah itu server boot, dan Anda dapat menyelesaikan tugas manajer: "Apa alamat Afrika?" Informasi ini umumnya tersedia untuk umum. Anda dapat menemukan informasi ini di Internet menggunakan frasa “ip address africa”, “geoip database”. Untuk mengatasi masalah ini, Anda dapat menggunakan basis distribusi alamat yang tersedia secara bebas (geoip). Kami menggunakan basis data
MaxMind GeoLite2 , tersedia di bawah lisensi Creative Commons Attribution-ShareAlike 4.0, sebagai referensi.
Mari kita coba selesaikan masalah kita hanya dengan menggunakan utilitas sistem Linux, tetapi secara umum dapat diselesaikan dengan sejumlah besar cara: menggunakan utilitas penyaringan teks dan menggunakan skrip dalam berbagai bahasa pemrograman.
Untuk memulainya, kita hanya mendapatkan pasangan "pengirim IP - penerima" dari log surat
/var/log/maillog
(
/var/log/maillog
buat tabel email penerima - pengirim IP). 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 dengan kompilasi database alamat Afrika, kita melihat alamat IP pengirim teratas.
$ 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
Di antara semuanya, tiga penerima pertama dari atas jelas dibedakan dengan jumlah huruf. Jika Anda menerima alamat IP pengirim yang dikirim ke alamat dari top-3 ini, Anda dapat melihat dominasi yang jelas dari jaringan tertentu:
$ 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
Sebagian besar jaringan 105/8, 41/8, 196 / 8.197 / 8 dialokasikan oleh AFRINIC - salah satu dari lima pendaftar Internet regional yang mendistribusikan sumber daya Internet. AFRINIC mendistribusikan ruang alamat di Afrika. Dan 41/8 mengacu sepenuhnya pada AFRINIC.
https://www.nic.ru/whois/?searchWord=105.0.0.0 https://www.nic.ru/whois/?searchWord=41.0.0.0
Dengan demikian, jawaban untuk masalah tersebut, sebenarnya, ada di dalam 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 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
Pada titik ini, kita mendapatkan string "LinuxBenedictTorvadst".
Kunci yang benar adalah LinusBenedictTorvalds.
String yang dihasilkan berisi kesalahan ketik yang terkait dengan kunci yang benar dalam 3 karakter ekstrim. Ini disebabkan oleh fakta bahwa jaringan yang kami pilih tidak sepenuhnya dialokasikan ke negara-negara Afrika dan bagaimana email didistribusikan oleh alamat IP di log kami.
Dengan klarifikasi yang cukup dari jaringan terbesar yang dialokasikan ke negara-negara Afrika, Anda bisa mendapatkan jawaban yang tepat:
$ 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
Masalahnya juga bisa diselesaikan dengan cara lain.
Unduh MaxMind, buka paket, dan tiga tim berikut ini juga menyelesaikan masalah kami.
$ 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 statistik, dan para manajer mendapatkan data yang mereka butuhkan untuk bekerja!
3. Tahap ketiga
Tahap ketiga agak mirip dengan yang pertama - Anda juga perlu memperbaiki layanan lampu hangat, tetapi lebih sulit daripada di tugas pertama.
3.1. Fakta menarik
Dalam 15 menit pertama, tiga pemain menemukan kunci pertama, 2 jam 20 menit setelah dimulainya tahap, pemenang kami menyelesaikan tugas.
3.2. Tugas
Anda pergi bekerja di perusahaan tempat semua dokumen perusahaan disimpan di server Wiki internal. Tahun lalu, seorang insinyur memesan 3 disk baru untuk server di samping satu yang sudah ada, dengan alasan bahwa untuk toleransi kesalahan sistem perlu menempatkan disk di beberapa array. Sayangnya, beberapa minggu setelah instalasi mereka, insinyur pergi untuk beristirahat di India dan tidak kembali.
Selama beberapa tahun, server bekerja tanpa kegagalan, tetapi beberapa hari yang lalu jaringan perusahaan diretas. Menurut instruksi, petugas keamanan menghapus disk dari server dan mengirimkannya kepada Anda. Selama transportasi, satu disk hilang.
Anda perlu mengembalikan wiki, pertama-tama, konten halaman wiki menarik. Sepotong teks yang ada di salah satu halaman wiki ini adalah kata sandi dari server 1C dan sangat dibutuhkan untuk membukanya.
Selain itu, di suatu tempat di halaman wiki atau di tempat lain terdapat kata sandi dari server log dan server pengawasan video, yang juga diinginkan untuk dipulihkan, tanpa mereka tidak mungkin untuk menyelidiki insiden tersebut. Seperti biasa, mereka diharapkan dari solusi operasional untuk masalah ini!
3.3. Solusi
1. Kami mencoba untuk mem-boot dari drive yang kami miliki dan di mana pun kami menerima pesan yang sama:
No bootable medium found! System halted
Perlu untuk boot dari sesuatu. Sekali lagi menyelamatkan boot dari Live CD / DVD (Pemecahan Masalah -> Penyelamatan). Saat boot, kami mencoba menemukan partisi boot, kami tidak menemukannya, kami masuk ke shell. Kami mencoba mempelajari apa dan bagaimana dengan disk. Diketahui ada tiga. Ada lebih banyak alat untuk ini dalam versi CentOS ke-7, di mana ada
lsblk
atau
lsblk
yang menunjukkan kepada kita semua informasi tentang disk.
Bagaimana dan apa yang harus dilakukan:
$ ls /dev/sd*
Segera jelas itu
/dev/sdb1 - ext4 /dev/sdb2 - lvm /dev/sda1 /dev/sdc1 - /dev/sda2 /dev/sdc2 -
Mount sdb1, jelas bahwa 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 - James191955Mengambil file yang tidak biasa.
2. Kami mempelajari pvs dan lvs, karena kami bekerja dengan LVM. Kita melihat bahwa harus ada 2 volume fisik, satu tidak ditemukan dan bersumpah pada cairan yang hilang. Kita melihat bahwa harus ada 2 volume logis: root dan swap, sementara root sebagian hilang (atribut P volume). Mount tidak berfungsi, tapi maaf! Kami benar-benar membutuhkannya.
Ada 2 disk lagi, lihat, pasang dan pasang:
$ mdadm --examine --verbose --scan $ mdadm --assemble --verbose --scan $ mkdir /mnt/md127 && mount /dev/md127 /mnt/md127
Kami melihat, jelas bahwa ini adalah partisi boot CentOS 6 dan mengambil apa yang sudah ada di
/dev/sdb1
, dan di sini lagi kunci yang sama adalah James191955Gosling!
Kami melihat bagaimana
/dev/md127
.
$ mdadm --detail /dev/md127
Kita melihat bahwa itu harus dirakit dari 4 disk, dirakit dari dua
/dev/sda1
dan
/dev/sdc1
, mereka harus nomor 2 dan 4 dalam sistem. Kami berasumsi bahwa Anda juga dapat membangun array dari
/dev/sda2
dan
/dev/sdc2
. Tidak jelas mengapa tidak ada metadata pada mereka, tetapi ini adalah hati nurani administrator, yang berada 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 mengumpulkan volume fisik, yang sebelumnya tidak kami miliki.
Kami segera memperbaiki lvroot, memasangnya, tetapi pertama-tama aktifkan VG:
$ vgchange -ay $ mkdir /mnt/lvroot && mount /dev/mapper/vg_c6m1-lv_root /mnt/lvroot
Dan semuanya ada di sana, termasuk kunci DennisBMacAlistairCRitchie - di direktori home root -
/root/sweet
.
3. Namun demikian, kami mencoba untuk menghidupkan kembali server kami sehingga mulai normal. Semua volume logis c dari
/dev/md0
(di mana kita memiliki segalanya) diseret ke
/dev/sdb2
, di mana seluruh server awalnya bekerja.
$ pvmove /dev/md0 /dev/sdb2 $ vgreduce vg_c6m1 /dev/md0
Kami memadamkan server, menghapus 1 dan 3 disk, meninggalkan yang kedua, boot dari Live CD / DVD di Rescue. Kami menemukan bagian boot, mengembalikan bootloader di grub:
root (hd0,0) setup (hd0)
Kami merobek boot disk dan menjalankan boot dengan sukses, tetapi situs tidak berfungsi.
4. Ada dua opsi untuk memulai situs: konfigurasikan Apache dari awal atau gunakan nginx yang sudah dikonfigurasikan sebelumnya dengan php-fpm:
$ /etc/init.d/nginx start $ /etc/init.d/php-fpm start
Akhirnya, Anda harus memulai MySQL:
$ /etc/init.d/mysqld start
Itu tidak memulai, dan solusinya terletak pada
/var/log/mysql
. Segera setelah Anda menyelesaikan masalah dengan MySQL, situs tersebut akan berfungsi, akan ada kunci di halaman utama - RichardGCCMatthewGNUStallman! Sekarang kami memiliki akses ke 1C, dan karyawan akan dapat dibayar. Dan seperti biasa, Anda memiliki banyak pekerjaan di depan untuk membangun infrastruktur dan keamanan di perusahaan.
Kami juga dapat sekali lagi berbagi daftar buku yang membantu kami dan peserta kami mempersiapkan diri untuk permainan:
linux.mail.ru/books .
Terima kasih telah bersama kami! Ikuti pengumuman game selanjutnya!