Linuxクエスト。 受賞者の皆さん、おめでとう、問題の解決について話します





3月25日、 Linux Questの登録を開始しました 。これは、Linuxオペレーティングシステムのファンと愛好家向けのゲームです。 いくつかの統計:ゲームに登録した1117人、317人が少なくとも1つのキーを見つけ、241人が第1段階のタスクを正常に完了し、第2段階の123人と第3段階を完了しました。 今日、私たちのゲームは終了し、勝者を祝福します!





また、トップ10プレイヤーのランキングでも:





すべての問題を解決するための多くのオプションがあることを理解しています。可能な解決策の1つを以下に説明します。



1.最初の段階



タスクは非常に単純だったため、「管理者ですか?」と呼びました。暖かいランプサービスを修正するためです。



1.1。 興味深い事実:



2人のプレイヤーがゲームの最初の15分間で最初のキーを見つけ、最初の1時間で3人のリーダーがタスクに対処しました。



1.2。 タスク



長い間有能なITスペシャリストがいなかった会社で働きました。 クリーンアップを開始する前に、オフィスの作業を妨げる書き込みの問題を解決する必要があります。



掃除婦が電源ケーブルをサーバーキャビネットに拭きました。 電源は回復しましたが、非常に重要なWebサイトはまだ機能しません。 会社は情報セキュリティにあまり関心がないため、このWebサイトは重要です。このメインページでは、CEOのコンピューターの管理者パスワードをクリアテキストで見つけることができます。



先日、パスワードが変更されましたが、誰もが新しいパスワードを忘れてしまい、ディレクターは仕事をすることができません。 噂では、このマシンには会計書類のバックアップを解読するのに役立つキーがあったという。



誰もがこの問題の簡単な解決策を待っています!



1.3。 解決策



1.最初に、仮想マシンにアクセスするには、仮想マシンのルートパスワードを変更する必要があります。 起動時に、これはUbuntu 16.04 Serverであることがわかります。



ルートパスワードをリセットするには、マシンを再起動します。起動時に、grubメニューが表示されたら、「e」ボタンを使用してUbuntuアイテムの編集に進みます。 Linuxの行を編集し、 init=/bin/bash



を最後に追加し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



-これはありませんが、 /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にアクセスする必要があります 。これを行う方法はドキュメントに記載されています 。 ドキュメントのポイントの1 /etc/mysql/mysql.conf.d/mysqld.cnf



/etc/mysql/mysql.conf.d/mysqld.cnf



skip-grant-tables



オプションを記述することを推奨してskip-grant-tables



ます。 ここにも鍵があります-AugustaAdaKingByron。



ユーザー'wp'@'localhost'



の権利を修正します。 MySQLを起動し、ネットワーク経由でアクセスできるようにし、configの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! 3つのキーがすべて見つかったので、ディレクターは作業でき、アカウンティングファイルを解読しました。 誰もが幸せであり、会社のインフラストラクチャ、バックアップ、およびセキュリティを確立するために多くの作業を進めています。



2.第2ステージ



分析の収集の問題を解決する必要がありました。 誰もが分析を愛しています-誰が、どこで、どんな量で行くのか。 私たちは、人生のすべてのエンジニアが何らかの形で遭遇する可能性があるケースを思い付きました。



2.1。 興味深い事実



プレーヤーの1人がゲームの最初の10分間に正しいキーを入力し、最初の1時間でタスクに対処するリーダーを獲得しました。



2.2。 タスク



あなたは会社のために働きに行き、マネージャーがあなたのところに来て、アフリカから誰に手紙が送られたかを尋ねました。 上位21の受信者アドレスを作成する必要があります。 受信者アドレスの最初の文字がキーです。 一つのこと:手紙が送信されたメールサーバーはロードされません。 誰もがこの問題の簡単な解決策を待っています!



2.3。 解決策



1. fstabに存在しないスワップパーティションが原因でサーバーがロードされず、ブート時にシステムがマウントを試みてクラッシュします。 起動方法



イメージをダウンロードし、CentOS 7をダウンロードし、Live CD / DVDから起動し(トラブルシューティング-> Rescue)、システムをマウントし、 /etc/fstab



編集します。 ここで最初のキー-GottfriedWilhelm11646Leibnizを見つけます!



スワップを作成します。



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





2.いつものように、パスワードはありません;仮想マシンのルートパスワードを変更する必要があります。 これは最初のタスクですでに実行しました。 変更してサーバーに移動しましたが、すぐに再起動します。 サーバーは、すべてのログを注意深く確認する時間がないほどの速度で過負荷になっています。 何が起こっているのかを理解するには?



繰り返しますが、livecdから起動し、慎重にシステムログを調べます。念のため、このような頻度でクラウンを調べます。 そこで問題が見つかり、2番目のキーはAlan1912MathisonTuringです!



/etc/crontab



の行echo b > /proc/sysrq-trigger



を削除またはコメントアウトする必要があります。



3.その後、サーバーが起動し、マネージャーのタスク「アフリカの住所は?」を完了することができます。この情報は通常入手可能です。 「ip address africa」、「geoip database」というフレーズを使用して、インターネットでこの情報を見つけることができます。 この問題を解決するには、自由に利用できるアドレス配布ベース(geoip)を使用できます。 参照として、Creative Commons Attribution-ShareAlike 4.0ライセンスで利用可能なMaxMind GeoLite2データベースを使用しました。



Linuxシステムユーティリティのみを使用して問題を解決してみましょうが、一般的には、テキストフィルタリングユーティリティの使用やさまざまなプログラミング言語でのスクリプトの使用など、非常に多くの方法で解決できます。



まず、メールログ/var/log/maillog



から「IP送信者-受信者」のペアを取得し/var/log/maillog



(受信者の電子メール-IP送信者のテーブルを作成し/var/log/maillog



)。 これは、次のコマンドで実行できます。



 $ 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 L2JhbjAbM67GA99jg@mail.ru 4165 iHKTBkegOQa6fIALq@mail.ru 3739 nHkcBl7BdgXxijSYD7@mail.ru 3405 SMAzPJAzbl9vp4hAXo@mail.ru 3346 xILz6d7P@mail.ru
      
      





とりわけ、上から最初の3人の受信者は、文字数で明確に区別されます。 このトップ3からのアドレスに送信された送信者のIPアドレスをgrepすると、特定のネットワークの明確な優位性を確認できます。



 $ 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
      
      





ネットワーク105 / 8、41 / 8、196 / 8,197 / 8のほとんどは、AFRINICによって割り当てられています。これは、インターネットリソースを配布する5つの地域インターネットレジストラの1つです。 AFRINICは、アフリカでアドレス空間を配布しています。 そして41/8は完全に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 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
      
      





この時点で、文字列「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 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
      
      





問題は別の方法でも解決できます。

MaxMindをダウンロードして解凍すると、次の3つのチームも問題を解決します。



 $ 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.第3段階



3番目の段階は最初の段階とやや似ています-ウォームランプサービスも修正する必要がありますが、最初のタスクよりも困難です。



3.1。 興味深い事実



最初の15分で、3人のプレーヤーが最初のキーを見つけました。ステージ開始から2時間20分後に、勝者がタスクを完了しました。



3.2。 タスク



会社のドキュメントがすべて内部Wikiサーバーに保存されている会社に勤務しました。 昨年、エンジニアは、既存のディスクに加えてサーバー用に3つの新しいディスクを注文しました。システムのフォールトトレランスのために、いくつかのアレイにディスクを入れる必要があると主張しました。 残念なことに、設置後数週間で、エンジニアはインドで休み、戻ってきませんでした。



数年の間、サーバーは問題なく機能していましたが、数日前に会社のネットワークがハッキングされました。 指示に従って、セキュリティ担当者がサーバーからディスクを取り外して、あなたに送りました。 輸送中に、1つのディスクが完全に失われました。



wikiを復元する必要があります。まず、wikiページのコンテンツに関心があります。 このウィキのページの1つにあったテキストは、1Cサーバーからのパスワードであり、ロックを解除するために緊急に必要です。



さらに、Wikiページのどこか、またはログサーバーとビデオ監視サーバーからのパスワードがありました。これらのパスワードは、インシデントの調査が不可能な状態で回復することが望ましいものです。 いつものように、彼らは問題の迅速な解決から期待されています!



3.3。 解決策



1.所有しているドライブから順番に起動しようとすると、どこでも同じメッセージが表示されます。



 No bootable medium found! System halted
      
      





何かから起動する必要があります。 再度、ライブCD / DVDからブートをレスキューします(トラブルシューティング->レスキュー)。 ブート時に、ブートパーティションを見つけようとしますが、見つけられず、シェルに入ります。 私たちはディスクで何をどのように学ぶかを試みています。 それらの3つがあることが知られています。 CentOSの第7バージョンには、ディスクに関するすべての情報を表示する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とlvを研究します。 2つの物理ボリュームがあるはずです。1つは見つからず、失われたuidを誓います。 ルートは部分的に失われますが(ボリュームのP属性)、論理的に2つのボリュームがあるはずです:ルートとスワップ。 マウントは機能しませんが、申し訳ありません! 彼が本当に必要です。



さらに2つのディスクがあり、それらを見て、アセンブルしてマウントします。



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





これは、CentOS 6ブートパーティションであり、 /dev/sdb1



既にあるものの一部であることは明らかです。ここでも同じキーがJames191955Goslingです!



/dev/md127



方法を確認します。



 $ mdadm --detail /dev/md127
      
      





2つの/dev/sda1



/dev/sdc1



から組み立てられた4つのディスクから組み立てられるべきであることが/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 -ay $ mkdir /mnt/lvroot && mount /dev/mapper/vg_c6m1-lv_root /mnt/lvroot
      
      





そして、ルートホームディレクトリにあるDennisBMacAlistairCRitchieキーを含むすべてのものがあります- /root/sweet







3.それでも、サーバーが正常に起動するようにサーバーを復活させようとしています。 /dev/md0



(すべてが揃っている)からのすべての論理ボリュームcは、サーバー全体が最初に/dev/sdb2



した/dev/sdb2



ドラッグされます。



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





サーバーを消滅させ、1つと3つのディスクを取り外し、2つ目を残して、RescueのLive CD / DVDから起動します。 ブートセクションを見つけ、ブートローダーをgrubで復元します。



 root (hd0,0) setup (hd0)
      
      





ブートディスクを切り離して正常に起動しますが、サイトは機能しません。



4.サイトを開始するには2つのオプションがあります。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を共有することもできます。



一緒にいてくれてありがとう! 次のゲームの発表に従ってください!



All Articles