Sionの技術ブログ

SREとして日々の学習を書いて行きます。twitterは@sion_cojp

aws rootアカウントに二要素認証の必要性と有効化する手順

二要素認証の必要性

nullcon HackIM 2020 Writeup - Lateral Movement - こんとろーるしーこんとろーるぶい

こちらのCTF writeupを拝見したところ、下記のような内容でした。

1. script.jsを見て変なHTTPヘッダーを見つける
2. HTTPヘッダーに値をセットしてリクエストを送ると、「値 = EC2ホスト名」でホスト名にリクエストを転送することが判明
3. メタデータにアクセスする「169.254.169.25」にリダイレクトする踏み台サーバを用意
4. 踏み台のグローバルIPをセットしてリクエストを送り、メタデータ取得
5. IAMアクセスキー取得
6. 他のIAM Userに昇格してpassword書き換え
7. そのUserでawsコンソールログイン -> 権限がある部分は操作できる

フラグを盗まれる側の立場になってみると、

このような脆弱性を持ったヘッダーは開発時の設計&レビューで考慮するとしても、完璧に防げそうにはないなと。

「iamに UpdateLoginProfile を不必要にセットするな!」というのはおっしゃる通り。ですが、ログインされる手前の最終防御として二要素認証があれば防げそうだなぁと思いました。

「今時代、二要素認証が必要」ってのは理解しているものの、具体的になぜ必要なのか、というのをこのwriteupで理解できたことがとてもよかったです。

rootアカウントに二要素認証を有効化する手順

f:id:sion_cojp:20210811174730p:plain:w300 f:id:sion_cojp:20210811174331p:plain:w300

スマホやPC等の単一端末がないと難しいと思いがちですが、1passwordのアプリ(web版じゃないよ!)では二要素認証を有効化することができます。

アプリ側で有効化した後は、右画像の通りweb版でも利用可能になります。

あとはrootでログインし、こちらの手順を参考にしてみてください

仮想 Multi-Factor Authentication (MFA) デバイスの有効化 (コンソール) - AWS Identity and Access Management