めざせ!加古川特別

競馬はたまにやる程度です

sudoersで苦労したお話

明けましたね。2024年ですか。
とはいうものの喪中なので寒中お見舞いってやつですね。
ちょっと最近の地球は寒中過ぎるけどね。

さてさて、久々の投稿です。あれから嗅覚はまだ死んでいます。
メンタルも死にかけているという説もありますが、仕事には行けてるしセーフセーフ。

久々の内容はちょっと技術的な内容になります。
ただ、技術ブログ書けるほどの人間🐬でもないんで、まあダラダラ書いてます。
許してね。イラチのあなたは【本題】から読んでくだしあ。
ちなみに、AzureVM上のUbuntuなので、ちょっと状況は特殊だと思います。

っていうかめっちゃ長くなってしまった。すまん。

【概要】

いるかむがドアホだったというお話です。

【前日譚】

会社でもAzure使う機運が高まっていたので、それなら勉強がてら使ってみようかなぁ、ということでAzureVMでUbuntuを使ってサーバーを立ててみようと思っていました。
それなら、マイクラサーバーとか立ててみるか?ってことで、友達が立ててたサーバーを頼み込んで移行させてもらいました。

んで、ちょうど1月の3連休最終日(1/8)の午前、何気なくサーバーのログを見ていたところ、知らん外国人が20分ほどログインして遊んでいた形跡がありました。

あれ?ホワイトリスト管理にしていたはずなんだけどな…。

そう思って設定ファイルを見たら、燦然と輝く

white-list=false

いるかむのドアホポイント +1点

幸い被害は殆ど無く、復旧も1時間程度で終わりました。
その後、設定ファイルやらをがちがちに変更して、僕は思ったのです。
サーバー、立てて設定そのままだった気がする…。

いるかむのドアホポイント +1点

そういえばバイトでサーバー触ってたとき、世界に晒すんだからセキュリティはちゃんとしとこうねとかrootでログインできないようにしようねとか言われたことあったなあ…と今更ながら思いだし、せっかくだし触ってみるか…!と挑戦。設定自体は下記辺りを参考にして触っていました。ここまでは良かったんですよ。

qiita.com

qiita.com

www.tama-negi.com

【本題】

よーし、パパ*1、/etc/sudoers を編集しちゃうぞーと思ったものの、
vi /etc/sudoers を実行すると、Permisson Denied と出ます。

僕はアホではない(前科2点)ので、
sudo vi /etc/sudoers を実行すると、下に[readonly]と出ます。

僕はアホではない(前科2点)ので、
ls -l で確認したところ、アクセス権は440なんですよね。
そりゃ編集できない訳ですよ。ってことで、僕はここで、
sudo chmod 777 /etc/sudoers をしたんですねぇ。
まあ出来てしまうのもどうなんやとは思うけど

本当にアホです(ドアホポイント +100点)。

正解は visudo しないといけないんですが、そんなこと知らなかったので、
何も考えずにsudo chmod 440 /etc/sudoers を実行しました。

sudo: /etc/sudoers is world writable
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin

というとても陽気なメッセージが出てきまして、
まあ要するにこれ以降のすべての操作で sudoできなくなったわけです
しかもその前の設定でrootに入れないようにしていたわけです。

わぁ…!ちゃんとセキュリティ機能してるやーん!
と現実逃避したくなりつつ、復旧作業を開始。
色々試しても、やっぱり

sudo: /etc/sudoers is world writable
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin

というメッセージが返ってきます。
馬鹿の一つ覚えみたいに同じこと言いやがってと思いましたが、
どっちが本当の馬鹿なのかは明白ですねわかります。

とりあえずググって見つけた pkexec chmod 555 /etc/sudoers してみましたが、
This incident will be reported とか言われる始末。
え?なに?闇の組織とかに報告されるの?とか思いながら、
もう少し調べつつ、そういやVMのバックアップ取ってなかったっけ?と思いだし、
バックアップファイルをAzurePortalからダウンロードし、サーバーに送り込んでから
python hogehoge.py を実行。もうこれで勝ったに等しいだろ。あとはよろしくな!


sudo: /etc/sudoers is world writable
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin



まあ、そらそうやろな。

もう少し調べを進めると、諦めたら?みたいな書き込みと共に、 シングルユーザーモードで起動したら変更できるかもよ、という書き込みを発見。*2
Azure VMだけど出来るんかなぁ、と思いつつ調べると、
シリアルコンソールからシングルユーザーモードに入れるとのこと。
learn.microsoft.com

learn.microsoft.com
ということで、下記画像のように Azure Portal から VM のページに進みまして、下のほうにある「シリアルコンソール」に入ってみました。

へぇ~ここがシリアルコンソールかぁ~
すると、まだ再起動とかしてなかったのですが、
Server(仮名) login: と聞かれたので、試しにrootと入れ、
パスワードも入れてみたところ、普通に入れてしまいました。

あれ?入れないんじゃなかったのでは…?
とりあえず root で入れてしまったので、chmod 440 /etc/sudoers を実行。
何も怒られることなくアクセス権の設定が元に戻りまして、先ほどの陽気なメッセージも出なくなりました。

シリアルコンソールに入るには前提条件があるらしいので確認しておいてください。
僕はデフォルト運用だったのですが、ブート診断は既に有効でした。
あと、パスワードベースのユーザーについても事前に設定していたので、
僕の場合は偶然条件を満たしていた可能性があります。

特に何も触っていなかったのが偶然良い方向に作用しただけという可能性も否めません。ここまで書いてて思ったけど、あまりに無知すぎますね…。いろいろ触りながら、もう少し勉強する必要がありそうです。無知って怖いわ。むちむちはもっと怖いけど。
あ~挟まれたくないな~怖いな~。

*1:被告人は独身

*2:ごめん、英語のサイトだったのは覚えてるけどどこだったか忘れちゃった。