リナックスク゚スト。 優勝者の皆さん、おめでずうございたす。課題の解決策に぀いお教えおください。

リナックスク゚スト。 優勝者の皆さん、おめでずうございたす。課題の解決策に぀いお教えおください。

25月XNUMX日より参加登録を開始したした リナックスク゚スト、これは Linux オペレヌティング システムの愛奜家や専門家のためのゲヌムです。 いく぀かの統蚈: 1117 人がゲヌムに登録し、そのうち 317 人が少なくずも 241 ぀のキヌを芋぀け、123 人が第 70 段階のタスクを正垞に完了し、XNUMX 人が第 XNUMX 段階、XNUMX 人が第 XNUMX 段階を通過したした。 今日、私たちの詊合は終わりたした。勝者を祝犏したす。

  • アレクサンダヌ・テルデコフがXNUMX䜍ずなった。
    アレクサンダヌは、自分が最も兞型的なシステム管理者であるず自分に蚀い聞かせたした。 ノォルゎグラヌドに䜏んでおり、玄 XNUMX 幎間、さたざたな Unix 系システムを管理しおきたした。 私はむンタヌネットプロバむダヌ、銀行、システムむンテグレヌタヌでなんずか働くこずができたした。 珟圚、圌は䞭小䌁業でリモヌト勀務し、倖囜の倧芏暡顧客向けのクラりド むンフラストラクチャに取り組んでいたす。 読曞ず音楜を聎くのが倧奜きです。 ゲヌムに぀いおアレクサンダヌは、ゲヌム党䜓が気に入っおおり、そのようなタスクが倧奜きであるず述べたした。 ある䌁業の面接䞭に、Hackerrank に䌌たようなこずをしたのですが、それは興味深いものでした。
  • XNUMX䜍 - ロヌマン・ススロフ。
    モスクワ発の小説。 圌は37歳です。 Jet Infosystems で Linux/Unix ゚ンゞニアずしお働いおいたす。 職堎では、Linux/Unix システムず SAN の管理ずトラブルシュヌティングを行う必芁がありたす。 Linux システム、プログラミング、リバヌス ゚ンゞニアリング、情報セキュリティ、Arduino など、興味はさたざたです。 ゲヌムに぀いお Roman はゲヌム党䜓が気に入ったず述べたした。 「私は少し頭を䌞ばしお、毎日の仕事に远われる灰色の日垞から離れお䌑憩を取りたした。 🙂 もっずタスクを増やしたいのですが、そうでないず、それを味わう前にゲヌムが終わっおしたいたす。」
  • 3番目 - アレックスXNUMXd。
    アレックスはモスクワに䜏んでおり、゜フトりェア開発の仕事をしおいたす。 「コンテストに参加しおくれおありがずう。Google のスキルをテストするのは面癜かったです。」

ベスト10遞手のランキングにも

  • ゚フゲニヌ・サルダ゚フ
  • マルケル・モクナチェフスキヌ
  • コンスタンチン・コノ゜フ
  • パベル・セルギ゚フ
  • りラゞヌミル・ボバ゚フ
  • むワン・ブブノフ
  • パブロ・クレッツ

すべおの問題を解決するには倚くの遞択肢があるこずを私たちは理解しおいたす。考えられる解決策のいく぀かを以䞋に説明したす。

1. 第䞀段階

タスクはりォヌム ランプ サヌビスを修正するずいう非垞に単玔な䜜業だったので、「あなたは本圓に管理者ですか?」ず名付けたした。

1.1. 興味深い事実:

ゲヌムの最初の 15 分で XNUMX 人のプレむダヌが最初の鍵を芋぀け、最初の XNUMX 時間で XNUMX 人のリヌダヌがタスクを完了したした。

1.2. ゚クササむズ

あなたは、長い間、有胜な情報技術の専門家がいない䌚瀟に就職したした。 物事を敎理し始める前に、オフィスの仕事を劚げおいる深刻な問題を解決する必芁がありたす。

掃陀婊はモップでサヌバヌキャビネットの電源ケヌブルを匕っ掛けた。 電力は埩旧したしたが、非垞に重芁なりェブサむトはただ動䜜しおいたせん。 同瀟は情報セキュリティをあたり重芖しおいないため、この Web サむトは重芁であり、このメむン ペヌゞには CEO のコンピュヌタの管理者パスワヌドが平文で蚘茉されおいたす。

先日パスワヌドが倉曎されたしたが、党員が新しいパスワヌドを忘れおしたい、ディレクタヌは仕事ができなくなりたした。 このマシンには䌚蚈曞類のバックアップコピヌを解読するのに圹立぀鍵がさらにあったずいう噂がありたす。

誰もが問題の迅速な解決を期埅しおいたす。

1.3 解決策

1. たず、仮想マシンにアクセスするには、その仮想マシンの root パスワヌドを倉曎する必芁がありたす。 起動するず、これが Ubuntu 16.04 サヌバヌであるこずがわかりたす。

root パスワヌドをリセットするには、マシンを再起動し、ロヌド時に grub メニュヌが衚瀺された瞬間に、「e」ボタンで Ubuntu 項目を線集したす。 linux ずいう行を線集し、最埌に远加したす init=/bin/bash。 Ctrl+x でロヌドするず、bash が埗られたす。 rw を䜿甚しおルヌトを再マりントし、パスワヌドを倉曎したす。

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

同期、再起動を忘れないでください。

2. 状態は、Web サヌバヌが動䜜しおいないこずを瀺しおいたす。芋おください。

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

぀たり、実際には、Apache は実行されおいたすが、コヌド 404 で応答したす。構成を芋おみたしょう。

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

ここにも鍵がありたす - StevenPaulSteveJobs。

パスを確認する /usr/share/WordPress - そんなこずはありたせんが、ありたす。 /usr/share/wordpress。 蚭定を線集し、Apache を再起動したす。

$ systemctl restart apache2

3. 再詊行するず、次の゚ラヌが衚瀺されたす。

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

デヌタベヌスが動いおいないのでしょうか

$ systemctl status mysql
Active: active (running)

どうしたの それを理解する必芁がありたす。 これを行うには、「」で説明されおいるように、MySQL ぞのアクセスを取埗する必芁がありたす。 ドキュメンテヌション。 ドキュメントのポむントの XNUMX ぀は、オプションを登録するこずを掚奚しおいたす。 skip-grant-tables в /etc/mysql/mysql.conf.d/mysqld.cnf。 ここにも鍵がありたす - AugustaAdaKingByron。

ナヌザヌ暩限の修正 'wp'@'localhost'。 MySQL を起動し、ネットワヌク経由でアクセスできるようにし、蚭定内のオプションをコメント化したす。 skip-networking.

4. これらの手順の埌、Web サヌバヌは起動したすが、サむトはただ動䜜したせん。

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

ファむルに察する暩利を線集したす。

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

ペヌゞを曎新し、サむトにアクセスしおキヌを芋぀けたす - BjarneStroustrup! XNUMX ぀の鍵がすべお芋぀かり、ディレクタヌは䜜業できるようになり、䌚蚈ファむルも埩号化されたした。 誰もが満足しおいたすが、瀟内のむンフラストラクチャ、バックアップ、セキュリティをセットアップするためには、倚くの䜜業が埅っおいたす。

2. 第二段階

分析を収集するずいう問題を解決する必芁がありたした。 誰もが分析を愛しおいたす。誰が、どこで、どのくらいの量でそれを䜿甚するのか。 私たちは、すべおの゚ンゞニアが人生においお䜕らかの圢で遭遇する可胜性のあるケヌスを考え出したした。

2.1. 興味深い事実

プレむダヌの 10 人がゲヌム開始から XNUMX 分以内に正しいキヌを入力し、最初の XNUMX 時間以内にタスクを完了したリヌダヌがいたした。

2.2. ゚クササむズ

あなたが䌚瀟に出勀するず、マネヌゞャヌがあなたのずころにやっお来お、アフリカから誰に手玙が送られおきたのか調べおほしいず頌たれたした。 それらに基づいお䞊䜍 21 の受信者アドレスを構築する必芁がありたす。 受信者のアドレスの最初の文字がキヌです。 XNUMX ぀目は、手玙の送信に䜿甚されたメヌル サヌバヌが読み蟌たれないずいうこずです。 誰もが問題の迅速な解決を期埅しおいたす。

2.3 解決策

1. fstab にスワップ パヌティションが存圚しないため、サヌバヌが起動せず、ロヌド時にシステムがそれをマりントしようずしおクラッシュしたす。 起動方法は

むメヌゞをダりンロヌドし、CentOS 7 をダりンロヌドし、Live CD/DVD から起動し (トラブルシュヌティング -> レスキュヌ)、システムをマりントし、線集したす /etc/fstab。 最初の鍵はすぐに芋぀かりたした - GottfriedWilhelm11646Leibniz!

スワップを䜜成したす。

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

2. い぀ものように、パスワヌドはありたせん。仮想マシンの root パスワヌドを倉曎する必芁がありたす。 これは最初のタスクですでに実行したした。 倉曎しおサヌバヌに正垞にログむンしたしたが、すぐに再起動が始たりたす。 サヌバヌは、すべおのログを泚意深く芋る時間さえないほどの速床で過負荷になりたす。 䜕が起こっおいるのかをどのように理解すればよいでしょうか?

ここでも livecd から起動し、システム ログを泚意深く調査し、念のため、このような呚期性があるため cron を調べたす。 そこで問題ず 1912 番目の鍵、AlanXNUMXMathisonTuring が芋぀かりたした。

必芁な /etc/crontab 行を削陀たたはコメントアりトする echo b > /proc/sysrq-trigger.

3. サヌバヌがロヌドされるず、マネヌゞャヌのタスク「アフリカの䜏所は䜕ですか?」を完了できたす。 この情報は䞀般に公開されたす。 この情報は、むンタヌネット䞊で「IP アドレス アフリカ」、「GEOIP デヌタベヌス」ずいうフレヌズを䜿甚しお芋぀けるこずができたす。 この問題を解決するには、無料で利甚できるアドレス配垃デヌタベヌス (geoip) を䜿甚できたす。 デヌタベヌスを暙準ずしお䜿甚したした マックスマむンド ゞオラむト 2、クリ゚むティブ・コモンズ衚瀺-継承 4.0 ラむセンスの䞋で利甚可胜です。

Linux システム ナヌティリティのみを䜿甚しお問題を解決しおみたすが、䞀般に、テキスト フィルタリング ナヌティリティを䜿甚したり、さたざたなプログラミング蚀語のスクリプトを䜿甚したりするなど、非垞に倚くの方法で問題を解決できたす。

たず、メヌル ログから「送信者ず受信者の IP」のペアを取埗したす。 /var/log/maillog (電子メヌル受信者 - 送信者 IP のテヌブルを䜜成したしょう)。 これは次のコマンドで実行できたす。

$ 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

アフリカの䜏所のデヌタベヌスの䜜成を続ける前に、送信者の䞊䜍 IP アドレスを芋おみたしょう。

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

その䞭でも、䞊から最初の 3 人の宛先は、手玙の数の点で明らかに際立っおいたす。 この䞊䜍 XNUMX ぀のアドレスに送信した送信者の IP アドレスを grep するず、特定のネットワヌクが明らかに優勢であるこずがわかりたす。

$ 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

ネットワヌク 105/8、41/8、196/8,197、8/41 のほずんどは、むンタヌネット リ゜ヌスを配垃する 8 ぀の地域むンタヌネット レゞストラの XNUMX ぀である AFRINIC に割り圓おられおいたす。 AFRINIC はアフリカ党土にアドレス空間を配垃したす。 そしお、XNUMX/XNUMX は完党に AFRINIC を指したす。

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

したがっお、問題に察する答えは実際にはログ自䜓の䞭にありたす。

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

この段階で、文字列「LinuxBenedictTorvadst」を取埗したす。

正しいキヌ:「LinusBenedictTorvalds」。

結果の文字列には、最埌の 3 文字の正しいキヌに関するタむプミスが含たれおいたす。 これは、私たちが遞択したネットワヌクが完党にアフリカ諞囜専甚ではないずいう事実ず、ログ内の IP アドレスによっお電子メヌルが配信される方法によるものです。

アフリカ諞囜に割り圓おられた最倧のネットワヌクの十分な仕様があれば、正確な答えを埗るこずができたす。

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

この問題は別の方法でも解決できたす。
MaxMind をダりンロヌドしお解凍するず、次の XNUMX ぀のコマンドも問題を解決したす。

$ 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

いずれにせよ、私たちは最終的に統蚈を蚈算し、マネヌゞャヌは䜜業に必芁なデヌタを受け取りたした。

3.第XNUMX段階

XNUMX 番目の段階は最初の段階ず倚少䌌おいたす。りォヌム ランプ サヌビスも修正する必芁がありたすが、すべおが最初のタスクよりも耇雑です。

3.1. 興味深い事実

最初の 15 分間で 2 人のプレむダヌが最初の鍵を芋぀け、ステヌゞ開始から 20 時間 XNUMX 分埌に勝者がタスクを完了したした。

3.2. ゚クササむズ

あなたは、すべおの瀟内ドキュメントが瀟内 Wiki サヌバヌに保存されおいる䌚瀟に勀めるこずになりたした。 昚幎、ある゚ンゞニアは、システムがフォヌルト トレラントであるためには、ディスクを䜕らかのアレむに配眮する必芁があるず䞻匵しお、サヌバヌ甚に既存の 3 台に加えお XNUMX 台の新しいディスクを泚文したした。 残念ながら、蚭眮から数週間埌、゚ンゞニアは䌑暇でむンドに行ったたた戻っおきたせんでした。

サヌバヌは数幎間故障するこずなく動䜜しおいたしたが、数日前に䌚瀟のネットワヌクがハッキングされたした。 指瀺に埓っお、セキュリティ スタッフがサヌバヌからディスクを取り出し、あなたに送りたした。 茞送䞭に XNUMX 枚のディスクが玛倱しおしたい、修埩䞍可胜でした。

Wiki の機胜を埩元する必芁がありたす。たず、Wiki ペヌゞのコンテンツに興味がありたす。 この Wiki のペヌゞの 1 ぀にある特定のテキストは XNUMXC サヌバヌのパスワヌドであり、ロックを解陀するために緊急に必芁です。

さらに、Wiki ペヌゞたたは別の堎所のどこかにログ サヌバヌずビデオ監芖サヌバヌのパスワヌドがあり、これも回埩するこずが望たしく、それらがなければ事件の調査は䞍可胜です。 い぀ものように、問題が迅速に解決されるこずを期埅しおいたす。

3.3 解決策

1. 所有しおいるディスクから XNUMX ぀ず぀起動しようずしたすが、どこでも同じメッセヌゞが衚瀺されたす。

No bootable medium found! System halted 

䜕かから起動する必芁がありたす。 Live CD/DVD からの起動 (トラブルシュヌティング -> レスキュヌ) が再び圹に立ちたす。 ロヌド時にブヌト パヌティションを芋぀けようずしたすが、芋぀からず、シェルにたどり着きたす。 私たちはディスクをどう扱うかを研究しようずしおいたす。 そのうちの7぀があるこずが知られおいたす。 CentOS の第 XNUMX バヌゞョンには、このためのさらに倚くのツヌルがあり、コマンドがありたす。 blkid たたは lsblk、ディスクに関するすべおの情報が衚瀺されたす。

私たちがどのように、そしお䜕を行うか:

$ ls /dev/sd*

それはすぐに明らかです

/dev/sdb1 - ext4
/dev/sdb2 - часть lvm
/dev/sda1 О /dev/sdc1 - частО рейЎа
/dev/sda2 О /dev/sdc2 - прП МОх МОчегП Ме ОзвестМП Ма текущОй ЌПЌеМт

sdb1 をマりントしたす。これが CentOS 6 のブヌト パヌティションであるこずは明らかです。

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

明らかに、grub セクションに移動し、通垞ずは異なるファむル内の最初のキヌ、James191955Gosling を芋぀けたす。

2. LVM を䜿甚しおいるため、pv ず lvs を研究したす。 2 ぀の物理ボリュヌムがあるはずですが、2 ぀は芋぀からず、uid が倱われたずいうメッセヌゞが衚瀺されおいるこずがわかりたす。 ルヌトずスワップの XNUMX ぀の論理ボリュヌムが存圚するはずですが、ルヌトが郚分的に倱われおいたす (ボリュヌムの P 属性)。 マりントできないのが残念 私たちには本圓に圌が必芁なのです。

さらに 2 ぀のディスクがあるので、それらを確認し、組み立おおマりントしたす。

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

芋おみるず、これが CentOS 6 のブヌト パヌティションであり、すでに存圚するものの耇補であるこずがわかりたす。 /dev/sdb1、そしおここでも同じキヌです - DennisBMacAlistairCRitchie!
組み立お方を芋おみたしょう /dev/md127.

$ mdadm --detail /dev/md127

4 枚のディスクから組み立おられおいるはずですが、XNUMX 枚のディスクから組み立おられおいるこずがわかりたす。 /dev/sda1 О /dev/sdc1、それらはシステム内の番号 2 ず 4 であるはずです。 からず仮定したす。 /dev/sda2 О /dev/sdc2 配列を収集するこずもできたす。 なぜメタデヌタがないのかは䞍明ですが、これはゎアのどこかにいる管理者の良心によるものです。 オプションはありたすが、RAID10 があるはずだず想定しおいたす。 私たちは以䞋を収集したす:

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

blkid、pvs、lvs を芋おいきたす。 以前は䞍足しおいた物理ボリュヌムを収集したこずがわかりたした。

lvroot はすぐに修埩されたので、マりントしたすが、最初に VG をアクティブにしたす。

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

ルヌト ホヌム ディレクトリ /root/sweet のキヌも含め、すべおがそこにありたす。

3. サヌバヌが正垞に起動するよう、サヌバヌを埩掻させようずしおいたす。 匊瀟のすべおの論理ボリュヌム /dev/md0 (すべおを芋぀けた堎所) にドラッグしたす /dev/sdb2、サヌバヌ党䜓が最初に動䜜しおいた堎所。

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

サヌバヌの電源を切り、ディスク 1 ず 3 を取り倖し、XNUMX 番目のディスクはそのたたにしお、Live CD/DVD から Rescue を起動したす。 ブヌト パヌティションを芋぀けお、grub でブヌトロヌダヌを埩元したす。

root (hd0,0)
setup (hd0)

ブヌトディスクを切り離しおロヌドは成功したしたが、サむトは動䜜したせん。

4. Web サむトを起動するには XNUMX ぀のオプションがありたす。Apache を最初から蚭定するか、事前に蚭定枈みの php-fpm で nginx を䜿甚したす。

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

最埌に、MySQL を起動する必芁がありたす。

$ /etc/init.d/mysqld start

始たらない、答えはそこにある /var/log/mysql。 MySQL の問題を解決するずすぐにサむトは機胜し、メむン ペヌゞにキヌ (RichardGCCMatthewGNUStallman) が衚瀺されたす。 これで、1C にアクセスできるようになり、埓業員は絊䞎を受け取るこずができるようになりたす。 そしおい぀ものように、瀟内のむンフラストラクチャずセキュリティを確立するには、倚くの䜜業が必芁です。

たた、私たちず参加者がゲヌムの準備をするのに圹立った曞籍のリストをもう䞀床共有するこずもできたす。 linux.mail.ru/books.

ご䞀緒させおいただきありがずうございたした 次回のゲヌムの発衚もお楜しみに

出所 habr.com

コメントを远加したす