😱

【アドカレ記事】ネットワーク設定を1つ間違えただけで管理者含め、とある中小企業の全ネットワークを停止させた話

2023/12/18に公開

この記事を読むにあたり、下記の点にご注意下さい。

  • 本記事は2023年12月に執筆されたものです。
  • 記事を参考にした結果、生じたいかなる問題も、読者自身の責任となります。
  • 営利目的でなければ、記事は引用してもらっても構いません。
    寧ろSNSで「この記事参考になるからこれ見ろ。」って言ってもらえると嬉しいです。
  • 本記事の内容は秘密保持契約に基づき、一部だけ内容を改変しております。
  • 専門家、開発者、その道のプロが書いた記事ではありません。
    一般人が執筆した内容であるため、情報に誤りが含まれている可能性があります。
    そのため、真面目に読まず物語として子供達に言い伝えてください。
    誤りを見つけた場合、コメントにてご指摘いただけると幸いです。

本記事の読者層

  • インフラ業務をしている方、ネットワークを管理している管理者
  • インフラエンジニアが楽とか甘く考えてる人達
  • 人間の愚かさを知りたい人

本記事の目標

何故この事件が起こってしまったか、何故このようなことになってしまったか、
また、どうやっていれば防げたのかを徹底的に理解する。

自己紹介

どうもこんにちは、そこらへんにいる一般人 ウユミナこと、みなみんです。

本当は書く気力が0だったんですが、Misskey鯖にて
「すみません、仕事の都合上どうしても...」
ということで枠が開いたので「書いてみるか」となったのがきっかけです。
https://adventar.org/calendars/8652

ちなみに枠を取得したのは12/14です、つまり猶予は3日しかありません。
この緊張感たまらないですね、ワクワクします。
ということで、技術的な話をするのもいいですがインフラエンジニアの苦悩を語ります。

なお、私の簡易的な経歴は以下の通りです。
・2020年、今の会社に新卒入社
・インフラ部署に配属され、SOHO向けネットワークの構築やアドバイザーとして活動
・体調不良を理由に大手メーカーのDB運用にジョブチェンジ
・今に至る

本記事の概要

この記事を読むことにより、以下の事に詳しくなれます。

  • ネットワーク機器の概念について
  • 何故ネットワーク事故は起きるのか、何をすれば防げるのか
  • 人間は何故愚かな生物なのか

物語の序章

午前10時頃、いつものように私は会社で業務をしていました。
この時のインフラエンジニアとしての働きは半年、そこそこの技術を身に着け
家に検証環境設備等も置き始めたどこにでもいる一般社員でした。

この時の仕事内容は、遠隔地にいる他社の顧客要望にお答えするために
・ネットワーク新規構築
・既存ネットワークのセキュリティアドバイス
・既存ネットワークの設定変更指示作業
・既存ネットワークトラブル対応
等の色々な業務をやっており、この日は既存ネットワークのトラブルに対し
切り分け調査をするために、既存ネットワーク機器の設定を
変更する作業を行うことになっていました。

その時の案件は当時、私が所持をしていたものではありませんでしたが
入社して半年ということもあり、付き添いとしてこの業務歴20年という
大ベテランの田代さん(仮称)の案件でした。

私はその仲介役としてこの案件に触れ、田代さんが既に準備していた
「設定変更する内容」を顧客に伝えるだけという
想定していないトラブルが起きることはないと考えていました。

この時は知る由もありませんでした、
あの恐ろしい過ちに気づかなかったことを...

第一章「打ち合わせ」

altテキスト
南「さて...そろそろあの時間だな、田代さーん。準備できましたよ」

altテキスト
田代さん「オッケー、じゃあお客様に連絡する前に改めて、内容をチェックしようか。
このお客様、ゲストの一部端末をBの通信エリアに通したくないのに繋がるって話なんだけど...
設定しているこのフィルタ1がね、間違ってる気がするんだ。
Bのエリアを追加してなさそうなんだ」

フィルタ1:ゲストエリアの通信をAのネットワークには通さない
フィルタ2:経理部の通信をAのエリアに通す
フィルタ3:経理部の通信をBのエリアに通さない
...
フィルタ13:開発部門の通信をEのエリアに通さない
フィルタ14:その他の通信を許可する

altテキスト
南「はいはい...」

altテキスト
田代さん「だからフィルタ0を作ってAとBのフィルタを遮断するフィルタを追加してもらおう
と思ったんだけど、お客様そもそも設定しているフィルタの方向がOUT方向なんだ」

altテキスト
南「えっ?」
altテキスト
田代さん「あーつまりね、フィルタの設定としては合っているんだけど、
セキュリティ対策を目的にするなら

としちゃうと、下手するとゲストがルータにアクセスできてしまう可能性があるわけ。

だからこれを、

こう変えた方がいいと考えたんだよ」

altテキスト
南「あーそうですね。で、この用意した設定内容だけを伝える。でいいんですよね」

altテキスト
田代「そうだね、お客様にはフィルタをキチンと機能するよう設定しています。
これはこういうフィルタで...って話をしてほしいんだ」

altテキスト
南「分かりました。でもちょっとだけ聞いていいですか?」

altテキスト
田代「何かな?」

altテキスト
南「これ、平日の10時に始めるんですよね」

altテキスト
田代「そうだよ?この時間が都合がいいって聞いたからね」

altテキスト
南「分かりました」

この時の私が何故こんな事を聞いたか、それはとある話を聞いていたからでした。

第二章「新人あるある」

それは入社して2,3ヵ月くらい業務が終わった後の雑談にさかのぼります。
altテキスト
田代「どう?仕事には慣れた?」

altテキスト
南「うーん、ちょっとまだ慣れないですけど。難しい案件とかはやってみたいですね」

altテキスト
別の社員「おっ、いいね。私が新人の頃IPアドレスなんてよくわからんくて
難しい案件とかはやりたくなかったな。設定間違ってルータに繋がらくなって
平謝りしまくってたわ」

altテキスト
南「そうなんですか?ルータに繋がらなくなるってどういう状況...」

altテキスト
別の社員「新人研修の時に習ったと思うんだけど、ルータにフィルタを設定した時に
該当しない通信って全て破棄するのよ。暗黙のdenyとか言うね。
これをうっかり忘れてて過去に何もない口にフィルタを1行入れたらね...

ってなっちゃって、ルータへのアクセスも止めちゃってwww
これを結構やらかした過去もあって今は研修中に絶対気を付けろって言われる
理由になったんだよ」

altテキスト
南「それはご愁傷様です」


この話を聞き、「フィルタの設定=怖い物」と覚え必ず設定するときに
・バックアップを取ること
・問題ない時間にメンテナンスすること
・事前に検証しておくこと
を常にお客様に言う事を徹底していました。

この時も田代さんに「平日10時でいいんですよね?」と確認し
「大丈夫だ、問題ない」と回答を聞いたので10時にお客様へと連絡しました。
これが地獄の始まりだとも知らずに

第三章「連絡」

altテキスト
田代「じゃあボクは後ろから見ておくから、かけていいよ」

altテキスト
南「はい、コールしますね」

プルルル...プルルル...
altテキスト
沢木「はい、沢木です」

altテキスト
南「お世話になっております、***会社の担当者、南と申します」

altテキスト
沢木「あ~こちらこそお世話になっています。以前の担当者は田代様じゃなかったですか?」

altテキスト
南「申し訳ございません、田代はあいにく急用の別件対応のため、代理として
私、南が引き続き担当することになりました。田代からは設定するための内容は
確認できておりますので、私からお伝えしたくお電話させていただきました」

altテキスト
沢木「あ~了解です。今サーバ室で準備してまして、すぐアクセスできるので
ちょっと待っててください。カタカタカタカタ...

はい、ルータにログインはできたので内容教えていただけますか?」

altテキスト
南「現在設定されているルータのフィルタなのですが、適用されている方向が
OUT方向となっており、こちらをIN方向に変更してゲストユーザなどが
ルータ自体にアクセスするようなことがないようにしたいと考えております。
まずはOUT方向にあるフィルタを...(コマンドの内容を口頭で伝える)としていただいて
フィルタを削除していただけますでしょうか」

altテキスト
沢木「はいはい、できましたよ。configファイル[1]からも消えましたね。」

altテキスト
南「では次にIN方向に...(フィルタ0を適用するコマンドを伝える)を
入れていただけますでしょうか」

altテキスト
沢木「はいはい...反応しないですね」

altテキスト
南「恐らくですが、処理に時間がかかってるかもしれませんね」

altテキスト
沢木「えっ?なんかルータから切断されちゃったんだけど」

altテキスト
南「えっ...」

altテキスト
沢木「これどうすれば良いんです?」

altテキスト
南「しょ...少々お待ちいただけますか」

電話を保留にし、改めて用意されていた手順書の内容を読み返す。

★田代メモ★
1.まずはOUT方向のフィルタを外す
2.次にIN方向に次のフィルタを適用する
- フィルタ0:ゲストエリアの通信をBのネットワークには通さない
- フィルタ1:ゲストエリアの通信をAのネットワークには通さない
- フィルタ2:経理部の通信をAのエリアに通す
...

ん...?「2.次にIN方向にフィルタを適用する
まさか...

私は田代さんにどうすれば良いか聞くために後ろを振り返った。
すると田代さんの顔は恐ろしいくらい顔が真っ青になっていた。
まるで露天風呂だと思って入ってみたらただの池だったコウメ太夫レベルの真っ青だった。
ここから地獄の始まりだった。

第四章「鬼電」

一体突然何が起きたのか、勘のいい人ならもう分かるであろう。


altテキスト
別の社員「新人研修の時に習ったと思うんだけど、ルータにフィルタを設定した時に
該当しない通信って全て破棄するのよ。暗黙のdenyとか言うね。
これをうっかり忘れてて過去に何もない口にフィルタを1行入れたらね...

ってなっちゃって、ルータへのアクセスも止めちゃってwww


そう、あれだ。
フィルタ0を適用したことにより、トラップカード「暗黙のdeny」が発動したのだ。
これにより、1行だけフィルタを入れたことでフィルタ0以外の通信
(該当しないルータ設定を行っている通信も)を遮断したのだ。

ミュートを解除し、すかさず沢木さんに何が起きたか説明をする。

altテキスト
南「沢木様、申し訳ありません。先ほど設定した手順に誤りがございまして、
設定を元に戻す作業を行いたいと思います。」

altテキスト
沢木「あの、急いで。ネットワークが...あっちょっと別の連絡入ったから待って

altテキスト
あの、社内ネットワーク止まってるって大量に連絡来てるんだけど!?」

altテキスト
南「(!?!!!?!?!?!???!??!?)」

なんとこの客、業務稼働中にネットワークを変更していたのである。


altテキスト
田代「そうだよ?この時間が都合がいいって聞いたからね」


大嘘やないかい!!!

田代さんにアドバイスを貰い、
altテキスト
南「他の接続方法がございます。コンソール接続を利用すれば、
ネットワークが切断されていても問題ありません。コンソールケーブルはありますか?」
と確認する。

コンソールケーブルとは、いわゆるルータを設定するための専用ケーブルである。
一般家庭にはそういった操作が可能になるポートは基本ないが、業務用機器には
基本的にコンソールで接続する用途のポートが存在する。
このコンソール接続はルータの設定の影響を受けないため、フィルタを誤って設定しても
接続してコマンドで操作することが可能なのである。

※赤矢印の部分

ケーブルの詳細については下記が参考になる。
一般的にD-Subコネクタ(またはUSBコネクタ)とRJ-45(通常のLANケーブルの端子)
で接続してコマンドで操作する
https://e-words.jp/w/コンソールケーブル.html

しかし、この顧客から発せられた一言はこうだった。
altテキスト
沢木「いや、そんなケーブル持ってないけど!?というか専用のケーブルって何!?
社内ネットワーク止まってるからすぐ復旧してくれ!!」

altテキスト
南「(!?!!!?!?!?!???!??!?!!?!?!?!?!)」

なんとこの客、管理者なのにコンソールケーブルを知らないのである。

この時点で色々と私は察したのである。
・ルータに接続できた(Web GUI画面でコマンド操作ができる画面に入った)
・フィルタを案内通りに設定した
・設定した結果、暗黙のdenyが働きGUIで接続した通信が遮断された
・勿論、インターネット向け通信その他全てが拒否された状態
・ルータに直接接続するためのコンソールケーブルもない
・会社の従業員が全員インターネットができなくなるので管理者に鬼電←イマココ

となっていたことを察した。
こうなると、もうルータを初期化するしか方法がないのである。

altテキスト
南「沢木様、弊社では既にどうすることもできない状況ですので
お手数おかけしますが、ルータの初期化を行っていただきconfigのバックアップから
設定をし直していただけますでしょうか...。」

すると

altテキスト
沢木「は?はあ!?!?configのバックアップなんて持ってねえよ!!!!」

なんとこの客、設定のバックアップを取っていないのである。
釘バットでぶん殴ってやりたい気持ちを抑え、私は電話を保留にし
田代さんと今後どうするかを相談した。

第五章「幸運」

altテキスト
田代「どうしようか...」

記事ではバッサリ切っているが、この間に1時間以上は経過していた。

  • ルータにアクセスできない
  • 全ネットワークに繋がらない
  • 管理者に鬼電が来ている
  • コンソール接続もできない
  • バックアップもない
  • telnetやSSH接続なんてのもできない

...初期化するしかない。

他社の客先ネットワークを1時間も止めている状況であり、設定を戻す方法もない。
最悪、損害賠償請求にまで発展しかねない深刻な事態であった。

しかし、あることに気づく。
altテキスト
田代「いや待って、この沢木さん。もしかしたら過去にも似たような件で問い合わせてる
可能性あるんじゃないか?」

そう、実はこの案件。もともとはメールで質問が来ており、
何故か経緯は分からんが、電話対応をすることになっていたのだ。

altテキスト
田代「もしかしたら、メールの問い合わせでルータの設定内容送ってたら
データが保存されているんじゃないか!?」

急いで過去の問い合わせ情報を漁りまくる。すると...
問題のルータconfig.txt があったのである。

スグに客に連絡する。

altテキスト
南「沢木様、過去のお問い合わせを確認したところ変更前と思われるconfig情報があったので
メールの送信履歴からconfig情報を抜き出していただき...
ここから、この部分のコマンド全行をルータ初期化後にルータの管理画面から
config投入の設定ボタンを押していただけますでしょうか。」

altテキスト
沢木「あ~そんな問い合わせしたな、待っとけ。電話切って逃げんじゃねえぞ?

とりあえず初期化方法教えてくれ。」

一本の道が見えてきたのか、沢木さんの温度は下がり数分後には
altテキスト
沢木「あ~よかった、とりあえず復旧したぞ!?」

後ろからボソッと
altテキスト
田代「(電話!今回トラブルあったからまた改めて田代の方から折り返す連絡!の合図)」

altテキスト
南「沢木様、今回お騒がせしてしまって誠に申し訳ございません。
改めて設定を見直し、改めて田代の方から折り返しご連絡差し上げます。」

altテキスト
沢木「了解、次はちゃんと確認してくれよな」

ガチャッ...

altテキスト
南「ふ~~~」

altテキスト
田代「あ~~~なんでこんな初歩的なミスに引っかかったんだろう...」

第六章「なぜなぜ分析」

この時、タスクとしては田代さんに全部丸投げしてこの後どうなったかは
私は知る由もない。ただ、新卒半年の経験としてはかなり傷が深く
これが今でも怖く、電話対応は半分近くトラウマ化してしまっている。
会社で怒鳴られるとこういうトラウマを全部思い出すような体になってしまった。

こんな恐ろしいことを防ぐために何故このようになってしまったか、
何故事故は防げなかったのか。独自でなぜなぜ分析を行った。

なぜなぜ分析とは?

簡単に行ってしまえば重大インシデントが発生してしまった場合、
その問題の発生原因を全部洗いだして再発防止をするための考えである。
この発生原因を洗い出す手法として「なぜ?」をひたすら繰り返すことで
真相にたどり着くことが対策のキーとなる。
英語ではRoot Cause Analysisともいう。

確かトヨタ自動車が発案者で「なぜ?」を最低でも5回は繰り返せ。
と言われてた気がするので私独自で振り返ろうと思う。
会社は対策案会議をしなかったし、「田代さんのせいです!」は
何の解決にもならないだろう。これは、しっかり反省すべきインシデントなのだ。


Q.何故今回の事件は起きたのか

単純に考えるだけでも、5つある。

  • 誤ったフィルタリング設定を行ってしまった
  • 設定のバックアップを行っていなかった
  • 設定状況をきちんとヒアリングしていなかった
  • フィルタリングの危険性を事前に伝えていなかった
  • メンテナンス時間を設けなかった
    今回の事件では、運よく復旧したが「復旧した」とは言い難い。
    過去のデータから運よくロールバックできた、と言う方が正しいだろう。

Q.何故誤ったフィルタリング設定をしたのか

  • 設定の手順をきちんと確認せず、何も考えずに手順だけを伝えたため

Q.何故設定の手順をきちんと確認せず、ただ伝えただけだったのか

  • ベテランが作った設定なら問題がないと考えてしまった
  • 軽く見た点では問題ないと思ったから
  • 自分の問題ではない、と軽く見てしまったから

Q.何故ベテランなら問題ないと考えてしまったのか

  • ベテランは失敗しないという考えが心の片隅にあった

Q.何故軽く流し読みをしてしまったのか

  • 自分の技術不足
  • 「この内容を伝えるだけ。」と安直に考えてしまったから

Q.何故自分の問題ではないと考えたのか

  • 自分が所持している案件ではなかったから

Q.何故設定のバックアップを取っていなかったのか

  • 気づいていなかった、事前に保存しているのが当たり前と判断していた

Q.何故気づかなかったのか

  • 引継ぎ作業が不十分であったから

Q.何故引継ぎ作業が不十分だったのか

  • 自分が不安だった内容を引継ぎ時に聞かなかったため

Q.何故設定状況をきちんとヒアリングしなかったのか

  • 新卒ということもあり、自分からここどうですか?と聞くヒアリング力がなかった

Q.何故フィルタリングの危険性を事前に伝えていなかったのか

  • 新卒ということもあるし、ベテランの案件を引き継いだので
    問題ないと慢心していた。

Q.何故メンテナンス時間を設けなかったか

  • 不明(マジで何で業務中にネットワーク弄ろうなんて発想に?)

正直なんか漫才でもやってるんか?と思われるような重大インシデントのせいで
なぜ?が12個も出てきた。まとめると

  1. ベテランは失敗しないと考えていた
    今考えるとマヨネーズはおいしいから味噌汁に入れたら美味しくなる
    みたいな謎理論である。弘法にも筆の誤りという言葉がある通り
    何十年仕事してようがどこかで人間ミスはする。

  2. 自分の技術不足
    新卒だとしても指摘できた内容だったし、ヒアリング技術が本当に足りてなかった。
    引継ぎの時もそうだが、過去に対人恐怖症を発症しており後遺症の影響か、
    「人と話すのが非常にストレス」ということもあり、淡泊に物事を進めることが
    この時多かった印象がある。

  3. 他人の譲り受けた仕事をすぐさま終わらせたい気持ちが高い
    家庭環境の影響が単純にデカい、特に理由なく物事を押し付けられると
    やろうという気分が一瞬で無くなる。やろうとしてもすぐ終わらせたい気持ちで
    頭がいっぱいになっていた。多分対人恐怖症の後遺症もこの辺りを引っ張っている気がした。

  4. 当たり前だと勘違いした
    当たり前が当たり前だと思うなよ、と思った。
    確認を怠った原因でもある。

  5. 引継ぎの確認不足
    淡泊に物事を進める癖があったせいで、引継ぎも
    軽く内容を見ただけで進めてしまったのである。
    読めばすぐ気づけたであろう問題点をここで逃している。

  6. 顧客のヒアリング不足
    引継ぎも酷いが、自分自身でのヒアリング技術が不足しているのもそうだが
    今一度、再確認を行っていれば「それ、本当に大丈夫ですか?」で
    事前に防げたのかもしれない。ここが最終防衛ラインだったと考えるしかない。

  7. メンテナンス時間を設けなかった(客が)
    これは本当によくわからん、常識的に考えてありえん行動だが
    世の中当たり前が当たり前だと思ってはいけないのかもしれない。

他にもトラブル時のバックアップ回線を用意しておくとか
事前に検証しておくとか、色々対策はあるだろうが
結論、人間って愚かじゃないか?
この点を踏まえ、
・ベテランは失敗する。
・自分の技術を磨け、怠けるな。
・他人の譲り受けた仕事を乱暴に扱うな。
・引継ぎはしっかりやれ、報連相徹底的に。
・徹底的に聞きまくれ。
・メンテナンス設けろ、バックアップしろ、冗長化しろ

ということを学びました。

終章

いかがでしたか?
今はこのような重大インシデントを発生させることなく、逆に
仕事の丁寧さ・知識を買われ設備担当でもないのに何故か設備の運用を任されたりする
DBエンジニアになったりと波乱万丈な仕事っぷりを続けていますが
これ以上のデカいやらかしをすることは無くなりました。

インフラエンジニアは楽ではないぞ。
メンテナンス時間が伸びたり、緊急メンテナンスする裏では
人が血眼になって動いていることを覚えておいて欲しいと思います。
今回は人類が愚かだったが

明日の担当はAdrastetion先生です、ではまたどこかの記事でお会いしましょう。

脚注
  1. configファイル
    ルータの設定ファイルのこと。人間が読めるようにできており、
    コマンド形式で設定することでルータの動作を決める。 ↩︎

Discussion