JAWS-UG 初心者支部 #22 ハンズオン用の資料です。
目的
AWSアカウントを不正利用されないために、アカウントを作成したらまずやるべきセキュリティ周りの設定を行います。
前提
- AWSアカウントを作成済みであること
- AWSアカウントにログインしていること
- リージョンは東京リージョンを利用します
ハンズオン手順
アカウント周りの設定
ルートアクセスキーの削除
※ルートアカウントのアクセスキーは、デフォルトでは作成されておりません。アクセスキーを作成済みの方を対象とします。
ルートアカウントは全てのサービスへのアクセスが出来てしまうため、ルートアカウントは使用せず、IAMユーザーを使用しましょう。
CLI等のプログラムアクセスも不要なため、アクセスキーを削除します。
https://console.aws.amazon.com/iam/home#/security_credentials

ルートアカウントのMFA有効化
もしメールアドレスとパスワードが流出してしまっても、ログインできないように多要素認証を有効化しておきます。
「多要素認証(MFA)」のタブにある「MFAの有効化」をクリックします。
https://console.aws.amazon.com/iam/home#/security_credentials

割り当てるMFAデバイスの種類を選択します。
今回は仮想MFAデバイスを利用します。仮想MFAとしては「GoogleAuthenticator」等のアプリがあります。
AppStoreやGooglePlayStoreからMFAアプリをダウロードしましょう。

「QRコードを表示」をクリックし、画面に表示されたQRコードをMFAアプリでスキャンします。(もしくはシークレットキーを入力します)
アプリに表示されたコードを2つ入力し、MFAの割り当てを行います。

以下のようなモーダルが表示されると、割り当てが完了します。

パスワードポリシーの変更
デフォルトの設定は「6文字以上」となっていますが、もう少し複雑なパスワードポリシーに変更します。
「パスワードポリシーを設定する」をクリックします。

今回は
- 8文字以上
- 1文字以上のアルファベット大文字(A〜Z)を含む
- 1文字以上のアルファベット小文字(a〜z)を含む
- 1文字以上の数字を含む
- 1文字以上の記号を含む
とします。

IAMグループの作成
IAMユーザーを作成する前に、IAMグループを作成します。
IAMグループを作成することで、権限管理がしやすくなります。
「新しいグループの作成」をクリックします。

グループ名を入力します。
今回は全ての操作ができるグループを作成するため、admin
とします。
IAMグループにアタッチするポリシーを選択します。
今回はマネージドポリシーの「AdministratorAccess」を選択します。
※今回はハンズオンのためAdministratorAccessを利用しますが、実際に運用を始める際には最低限の権限を付与することをお勧めします。

IAMユーザーの作成
ルートアカウント以外にログインできるアカウント(IAMユーザー)を作成します。
https://console.aws.amazon.com/iam/home#/users
ユーザー名を入力します。
今回はマネジメントコンソールにログインが出来れば良いので、「AWSマネジメントコンソールへのアクセス」にチェックを入れます。
パスワードは「カスタムパスワード」を選択し、任意のパスワードを入力します。

IAMユーザーを追加するIAMグループを選択します。
先程作成したadmin
を選択します。
必要に応じて「.csvのダウロード」からログイン情報をダウンロードして下さい。

ユーザーの作成が終わったら、ログインしてみましょう。
完了画面に表示されているログインURL(https://xxxxxxxxxxxx.signin.aws.amazon.com/console
)からログイン出来ます。
MFA設定
作成したIAMユーザーに対してもMFAの設定を行い、セキュアにしておきましょう。
IAMユーザー一覧から、先程作成したユーザーを選択し、「認証情報」タブにあるMFAデバイスの割り当ての「管理」をクリックします。

rootアカウントの時と同様に設定を行います。
「仮想MFAデバイス」を選択します。

「QRコードを表示」をクリックし、画面に表示されたQRコードをMFAアプリでスキャンします。(もしくはシークレットキーを入力します)
アプリに表示されたコードを2つ入力し、MFAの割り当てを行います。

以下のようなモーダルが表示されると、割り当てが完了します。

ロギング設定
ここから先は料金が発生します
※GuardDutyには30日間の無料トライアル期間があります。
CloudTrailの有効化
CloudTrailはAWSのAPIに対する操作ログを取得するサービスです。
有効化しておくと、いつ、どのアカウントが、どのような操作を行ったかを確認することが出来ます。
無料で90日分を遡ることが出来ますが、CloudTrailの有効化を行うことで、操作ログをS3に保存しておくことが出来ます。
「証跡の作成」をクリックします。

操作ログを保存するS3を作成します。
重複しない名前を入力します。
GuardDutyの有効化
GuardDutyはAWSアカウントやAWSリソースに対する不審なアクティビティを検知/通知してくれるサービスです。
「今すぐ始める」をクリックしたあと、「GuardDutyの有効化」をクリックして有効化します。


結果画面が表示されたら完了です。

時間が余ったら・・・
GuardDutyのサンプル表示
GuardDutyでイベントが検知された場合、どのような結果が取得できるのか、サンプルデータで確認することが出来ます。
左メニューの「設定」→「結果サンプルの生成」をクリックします。

ボタンのローディングアニメーションが終了したら、左メニューの「結果」をクリックして結果一覧を見てみましょう。

リストをクリックすることで詳細を確認することが出来ます。
以下の例であれば、 i-9999999
のEC2インスタンスがビットコインに関するIPアドレスにリクエストしている旨の警告が出ています。

課金リソースの削除
CloudTrailとGuardDutyは、トライアル期間が終了してしまうと料金が発生するため、削除方法も記載しておきます。
CloudTrailの無効化
左メニューの「証跡情報」から、先程作成した証跡を選択します。
S3バケットの削除
CloudTrailのログを格納してあるS3バケットを削除します。
S3のコンソール画面から、対象のS3バケットを選択し、「空にする」をクリックしオブジェクトを削除した後、「削除」をクリックしてバケットを削除します。
GuardDutyの無効化
左メニューの「設定」から、一覧下にある「GuardDutyの無効化」セクションの「無効化」をクリックします。
参考
AWSが公開しているIAM運用のベストプラクティスも参照してみて下さい。
https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html
【初心者向け】AWSの脅威検知サービスAmazon GuardDutyのよく分かる解説と情報まとめ
この他にも最初にやるべきことがたくさんありますので、こちらもチェックしてみて下さい。
AWSアカウントを作ったら最初にやるべきこと ~令和元年版