こんばんわ!maijunです!
2018/12/1(土)にIT関係の勉強会がありましたので参加してきました。
AWSのre:Invent 2018直後でしたのでAWS関係のお勉強を目的に参加するつもりが、ガッツリHardening(サーバの堅牢化) トレーニングも行ってきたので備忘録として残します。
サーバの堅牢化作業のキモは役割分担なのかもしれません。
JAWS-UG沖縄の勉強会
さて今回参加したIT関係の勉強会ですが、JAWS-UG沖縄が主催する定例のイベントです。
AWSのre:Invent2018直後でしたので新サービス関係の話がメインだと思って参加したのですが、前半はガッツリHardening(サーバの堅牢化) トレーニングでした(ちなみに三時間)
ちゃんとプログラムを事前に確認してなかった当方は戸惑ってつぶやき。
まさかHardeningやるとは。。 pic.twitter.com/1bFZabM6p0
— まいじゅん | 勉強中 (@maijun2) 2018年12月1日
でもやってみると面白い事が多々ありました。
具体的なトレーニング内容
では具体的にどういったトレーニングだったのか?趣旨や作業など具体的な内容を以下に列挙。
- シチュエーションとしては仮想的にオンラインショップのIT担当。
- オンラインショップで商品を販売し売上を計上し続ける。
- しかしショップを運営しているサーバはセキュリティ上の不備が多々ある。
- 不備を突いてサーバが停止だったり、コンテンツが改ざんされショップ運営が滞る。
- 複数人でグループを作り、オンランショップを守るよう対策をする。
- 一番売上が多いグループが優勝。
- AWS上でチーム事にオンラインショップのサーバや作業用踏み台マシンを準備。
- 作業用踏み台マシンからサーバのメンテナンスや対応を行う。
上記内容で説明を受けてグループ分け。私はチーム3として合計4人のメンバーでサーバ保護をすることになりました。
15分程度の接続確認をしトレーニング競技をすることになったのですが、序盤から私は躓いておりました。
実は勉強会参加前に食事に行ったり買い物したりし遅刻をしていたのです。
その結果、会場のWi-Fi環境にもつながっていない状況。なおかつ説明資料もbit.lyで公開後で見れないというシチュエーション。
遅刻ダメorz
いざ競技開始!初っ端からオンラインショップが止まる
グループメンバーの方々とも自己紹介が出来ない状況にもかかわらずいよいよサーバ堅牢化のトレーニング開始です。
開始5分からいきなりオンラインショップが閲覧出来ない状況からスタート。
とりあえずどうするか?ということで、グループメンバーで声掛けあってまずは利用するアカウントの特定と各種パスワードの変更作業からスタートすることになりました。
ここで初っ端から接続が出遅れた私は遅れて踏み台サーバ経由でオンラインショップサーバに接続している頃合いでした。
遅刻絶対ダメorz
作業履歴を残して可視化
さてグループメンバー各自でサーバに接続して作業することになったのですが、とりあえず作業履歴を残しましょう!ということでスプレッドシートで作業履歴を残すことに。
作業履歴内容を見てみるとグループメンバーのYさんが一気に作業を進めていきます。
総工程23件の作業のうち13件ほど怒涛の如く作業。
- DBを他ホストから接続できない様に制限。
- 不要なphpMyAdminを移動。
- DBのコネクション数を拡大
- WordPressのxlmrpc.phpを無効化
- WordPressのwp-config.phpの権限を適切に設定
「あ〜なるほど。サーバ周りの環境設定を中心に作業をしているのだな」
作業履歴を見て判断できたので私はコンテンツ周りの作業をすることにしました。
WordPressやpluginのアップデート処理
さてYさんがサーバ周りの作業をしているのを見て、あえて同じ分野で作業をするのではなく、自分ができそうなWordpress周りの作業をすることにしました。
とりあえず気づいて作業をしたのが以下の内容。
- WordPressの更新作業。
- ファイルアップロードするphpファイルがあったので無効化。
- オンラインショップ機能を提供するプラグインの更新。
- DBのダンプファイルや不要なデータの移動
WordPressは利用して8年近くなるので作業内容は把握していました。よってまずは更新作業をすることになったのですがここでもトラブルがありました。
サーバが遅くて更新作業が出来ない
さてWoredpress周りの更新作業をすることにしたのですがダッシュボード経由で更新しようとすると、遅くてタイムアウトエラー。つまり更新できない状況です。
更新作業をするたびにメンテナンスモードにもなるのでオンラインショップの売上が落ちることに。
1000ms以上時間がかかって使い物にならん!
WordPressのダッシュボードで更新作業できないのを踏まえて早々に諦めて、Shell上で作業をし更新対応することにしました。
以下手順です。
- 作業①ログアウトオンラインショップサーバからログアウト。
- 作業②ファイル取得踏み台サーバにてwgetを利用して更新ファイルを取得。
- 作業③ファイル転送更新ファイルを取得後にscpにて踏み台サーバからオンラインショップサーバに転送。
- 作業④バックアップオンラインショップサーバで既存ファイルのバックアップ。
- 作業⑤更新作業更新ファイルを展開してオンラインショップショップサーバのファイルを上書き。
ショップカートプラグインは更新作業するのは妥当だと判断し自信を持って作業をしたのですが、Wordpress本体も作業すべきかは悩みました。
もしかしてWoredpress本体はバージョン詐称などされておらず大丈夫じゃね?
しかし安全性を考慮しWordpress本体も更新することに。。
ここで感じた事。
サーバ上のファイルは一体何をされているのかわからない!疑って見たほうが良い。
疑心暗鬼モードで作業をしたほうが良いのかもしれませんね。
安定稼働し売上を伸ば続けるチームと阿鼻叫喚なチーム
さてある程度作業が一段落した私達チーム。
よく見てみるとスタートダッシュで売上を伸ばし続ける一位チームに迫って二位の状況でした。
この頃から落ち着いてerror.logあたりを確認していたのですが、周りでは阿鼻叫喚な状況が発生していました。
は?売上がなんで落ちてるの?減ってるし!
パスワードが電子音声で公表されている〜
「オンラインショップで定期的に売上があがるならば減るのは可笑しい。もしかして金額変更されているのか?」
そう思って周りのチームを見回しつつ自チームの売上状況を確認すると減らずに売上が伸び続ける状況。これを見てチームメンバーの方に。。
商品単価を上げるのは駄目?
と提案してみると、ルール上駄目だと明記されているのを教えてもらいましたwww
売上一位達成
売上単価上げる提案をして即NGをもらった頃合いで15:40頃。
残り10分程度でトレーニングは終了します。
落ち着いてaccess.logなどを確認しerror.logでsendmailがエラー履くたびに、「あ!カートで注文されたんだな」と判断し、定期的に売上グラフをチェック。
すると今まで一位だったチームが売上止まりはじめました。そうこうしている間に当方チームが売上が上がっていき遂に一位に達成。思わずツイッターでもつぶやき。
しゃー!!ハードニング競技で売上一位になった!
— まいじゅん | 勉強中 (@maijun2) 2018年12月1日
残り9分で逆転とか胸熱すぎるwwww
振り返りでは思わず驚愕
さてトレーニング締切時間となり結果発表。
見事に一位になったのは当チームでした。やったね!
その後実際の脆弱性内容などの説明があったのですが、一番びっくりした攻撃手法がGhostscriptを用いた方法です。
画像処理などで使われるImageMagickでもお馴染みなGhostscriptですが、ファイルアップロードするphpファイル経由で任意なコマンドを実行できるという説明がありました。
まぢかよ!
まさか画像処理系のGhostscriptの脆弱性使っていくると思わず、説明の時にポロッと口から出てしまいました。
想定外すぎる!
まとめ
AWSの説明関係を目的に参加した勉強会ですが、想定してなかったサーバの堅牢化トレーニング意外と面白かった。
なにより大事だと感じたのが以下の二点です。
1.作業内容の記録
2.作業内容の分担
このあたりをきっちりトレーニング開始前に取り決めておかないとスムーズに進まないでしょうね。特にアカウントのパスワード変更処理とか重複していたら時間の無駄ですしね!
ともかく。
いろいろと実りが多い勉強会で楽しく過ごせました。
企画や準備など各種調整ありがとうございました>主催の方々。
また次回も機会があえば訪問しまーす!
コメント