- 研修日:8/21(木)
- 主催:川口洋さん
セキュリティ研修「マイクロハーデニング」に参加した記録です。
研修の概要
実際のECサイト(WordPress+Apache+MySQLが1台のサーバーで稼働)を4人1組のチームで防御し、売上最大化を目指す内容。1分ごとにクローラーがECサイトで購入を行い、45分間で購入できた点数を競う。攻撃による改ざんで売上が下がったり、防御に成功するとボーナスが加算される仕組み。
研修は45分×4セットで実施。
※具体的な脆弱性はネタバレ防止のため記載しません。自分たちの考えや学びを中心にまとめています。
各セットの取り組み
1セット目
最初は攻撃手法や脆弱性の全容が分からず、まず「どんな攻撃が来るのか」を知ることを重視。サービスが止まった場合は復旧のみ行い、観察フェーズとした。
- アクセスログを確認(自分たちのIPを除外)
sudo tail -n 500 /var/log/httpd/access_log | grep -v "192.168.0.200"
- lastコマンドでアクセスユーザーの確認
- /var/www/htmlの改ざんチェック
- アクセスログをzip化しAI(ChatGPT)に投げてアドバイスをもらう
2セット目
1セット目の観察で「SSH経由での侵入・改ざん」や「WordPressの脆弱性を突かれ設定ファイルが取得されている」ことが判明。改ざん検知や復旧体制を強化し、被害拡大を防ぐことを重視。
/var/www/html
をバックアップし、diffで改ざんを検知cp -r /var/www/html /tmp/html sudo diff -r /var/www/html /tmp/html
- 改ざんがあれば即時復旧
- MySQLのデータもdumpしてバックアップ
mysqldump -u root -p wordpress > /tmp/wordpress_backup.sql
- ログ監視も継続
3セット目
2セット目までの観察・検知で「FTP経由での攻撃」や「不要なプラグインの悪用」「PUTメソッドの悪用」など、攻撃者が使える余計な入り口が多いことが判明。不要なサービスやアカウントを整理・制限し、攻撃面を減らすことに注力。
- 不要なWordPressプラグインの洗い出し・停止
- FTPが悪用されていたためFTPサービス停止
sudo service vsftpd stop
- 不要アカウントのロック、利用アカウントのパスワード変更
sudo passwd -l admin
- PUTメソッド(正常運用で不要)が悪用されていたため禁止
サービスやプラグインの削除・停止は1つずつ行い、影響を都度確認しながら進めた。
4セット目
前回までで主なバックドアや攻撃経路を塞いだつもりだったが、特定の商品だけ購入できなくなるという異常が発生。「データ改ざんが起きている」と判断し、原因究明とアクセス制限を強化。
- phpMyAdminへのアクセスを禁止
- 特定商品のみ購入できなくなり、データ改ざんを疑うも、どこが改ざんされたか特定できずにタイムアップ
- ネタバレで「商品タイトルの改ざん」と判明。自分たちは「商品情報自体(在庫や価格など)の改ざん」と思い込み、DBばかりを重点的に調査していた。
ネタバレで印象に残ったこと
- 脆弱なWordPressは「停止」だけでなく「削除」も必要な場合がある
- 一部プラグインはdisable関数が未実装で、WordPressからデータが渡ることがある
- WebDAVの設定やFTPサーバーのログも要注意
上野宣さんの解き方が一番美しかったとのこと。
- 1回目は徹底的にログを取り続ける
- クローラーの1分ごとのアクセスに合わせて、1分ごとに設定を変え、どの設定で購入できなくなるかを確認する
一般的な障害対応については、以下の記事が参考になる。
チームの振り返り
チーム運営・情報共有
- 防御対応の役割分担を明確にして対応
- セットごとにスレッドでやったこと・気づきを共有
- 怪しい点や解決案も積極的に提案
AI活用
- アクセスログやエラーログをAIに投げて助言・対策案をもらった
今後の開発運用で取り入れたいこと
- 余計なライブラリは入れない
- 脆弱なバージョンは使わない
- EOL対応を徹底
- 権限管理の徹底
まとめ・個人の学び
- 普段はSplunkやk8s環境で運用しているため、Linuxのログの場所や見るべきポイントの知見が少なかったと実感
- あらゆるログを幅広く確認することの大切さ
- 改ざん箇所は先入観なく、システマチックに1つずつ確認する必要性
- 不要なサービスやアカウントは作らない