ヤマムギ

growing hard days.

*

ヤマムギ vol.10 (AWS)EC2モニタリングハンズオン 手順

   


このブログは2020/5/6に開催しました、「ヤマムギ vol.10 (AWS)EC2モニタリングハンズオン勉強会」の手順です。

「AWSではじめるLinux入門ガイド」出版 & 「AWS認定資格試験テキスト AWS認定 クラウドプラクティショナー」出版一周年記念勉強会を開催しました。

解説は、勉強会内で説明しますので、こちらのブログには手順のみを記載します。

※個人検証向けとしての設定です。

環境準備

デフォルトVPCのEC2にSystemsManager セッションマネージャーから接続します。

AWSアカウントをお持ちでない方は、「ヤマムギ vol.7 AWSアカウント作成 & 最初の設定ハンズオン 手順」をご参考の上、作成してください。

検証用のEC2インスタンスは「ヤマムギ vol.8 (AWS)EC2でLinuxサーバー構築 手順」をご参考の上、作成してください。

やること

EC2のCloudWatch Agentをインストールして、カスタムメトリクスと、CloudWatch LogsでSecure Logを収集し、メトリクスフィルタで不正アクセス試行をアラーム検知します。
ダッシュボードも作成します。

IAMロールにポリシーを追加

1). EC2インスタンスに割り当てているIAMロールに、ポリシーを追加します。
追加するポリシーは CloudWatchAgentAdminPolicy にしてください。
“cloudwatchagent”などで検索すると表示されます。
CloudWatchAgentServerPolicyとの違いは、パラメータストアに書き込めるかどうかです。

このハンズオンでは、CloudWatchAgentの設定を、パラメータストアに書き込んで管理しますので、CloudWatchAgentAdminPolicyにします。

CloudWatch Agentのインストール

ヤマムギ vol.8 (AWS)EC2でLinuxサーバー構築 手順」で起動したEC2インスタンスに、CloudWatch Agentをインストールします。

2). サービスで検索して、SystemsManagerダッシュボードにアクセスします。
“sys”とかで出てきます。

3). 左ペインで[マネージドインスタンス]を選択すると、EC2インスタンスが確認できます。

4). 左ペインで[Run Command]を選択して、[Run command]ボタンを押下します。

5). コマンドドキュメント AWS-ConfigureAWSPackage を選択します。
“AWS-Con”などで検索すると出てきます。

6). ドキュメントのバージョン、Action、Installtion Typeはデフォルトのままです。
Nameに AmazonCloudWatchAgent、Versionに latest と入力します。

7). ターゲットは[インスタンスを手動で選択する]で、インスタンスを直接選択します。

8). 今回は検証なので、S3バケットへの書き込みは、オフにしておきます。
[実行]ボタンを押下します。

9). コマンド実行が成功したことを確認します。

CloudWatch Agentの設定

10). セッションマネージャでEC2インスタンスに接続します。

11). amazon-cloudwatch-agent-config-wizard を実行します。

ここまでデフォルト選択のまますすめてきます。

12). ログの設定です。
サンプルとして、 /var/log/secure と /var/log/messages を指定しました。
他のログファイルをさらに追加して設定してもいいです。

13). パラメータストアに書き込むか、聞かれますのでデフォルトのまま、書き込む設定ですすめて完了です。

必要パッケージのインストール

14). CloudWatchAgentを実行するために必要なパッケージをインストールしておきます。

CloudWatchAgentの開始

SystemsManagerダッシュボードに戻ります。

15). SystemsManager左ペインで[パラメータストア]を確認してみましょう。

16). AmazonCloudWatch-linux が作成されています。

17). 値のセクションを見ると、ターミナルで設定した情報が格納されています。
例えば、モニタリングするログファイルを追加したいときには、この値を編集することで追加できます。

18). 左ペインで[Run Command]を選択して、[Run command]ボタンを押下します。

19). コマンドドキュメントは、 AmazonCloudWatch-ManageAgent を選択します。

20). Optional Configuration Location でパラメータ名 AmazonCloudWatch-linux を入力します。
他はデフォルトです。

21). ターゲットは[インスタンスを手動で選択する]で、インスタンスを直接選択します。

23). 今回は検証なので、S3バケットへの書き込みは、オフにしておきます。
[実行]ボタンを押下します。

24). 成功を確認します。

メトリクスフィルタの作成

25). CloudWatchにアクセスします。

26). ロググループを選択します。

27). secure を選択して、[メトリクスフィルターの作成]ボタンを押下します。

28). フィルターパターンに、 Invalid user と入力して、[メトリクスの割り当て]ボタンを押下します。

29). メトリクス名を任意に設定して、[フィルターの作成]ボタンを押下します。

30). [アラームの作成]を選択します。

31). 条件を「1以上」などにします。

32). 通知先のSNSトピックは、メールエンドポイントをサブスクリプションにしている、既存のSNSトピックがあればそれを利用してもいいですし、新規で作成してもいいです。
新規の場合は、確認メールの承認が必要ですので、受信メールを確認して、Confirmしておきましょう。

33). アラーム名を任意で入力して、[次へ]ボタンを押下して、次の確認画面でアラームを作成します。

ダッシュボードを作成

34). [ダッシュボード]を選択して、[ダッシュボードの作成]ボタンを押下します。

35). ダッシュボード名を任意で入力して、[ダッシュボードの作成]ボタンを押下します。

36). [線]を選択して[設定]ボタンを押下します。

37). メトリクスが選択できます。
CloudWatchAgentによって収集されているカスタムメトリクス「CWAgent」もあります。

38). 例として、[EC2]-[インスタンス別メトリクス]-[CPUUtilization]を選択して、[ウィジェットの作成]ボタンを押下します。

39). 他のメトリクス(例えば、カスタムメトリクスのメモリ使用量など)も、[ウィジェットの追加]ボタンから追加できます。

ウィジェットの追加が完了すれば、[ダッシュボードの保存]ボタンで保存しておきます。

40). 右上の時間設定で、[現地タイムゾーン]が選択できます。

41). 右上の更新設定で、[自動更新]とすることもできます。

動作テストをしてみる

42). セッションマネージャでEC2に接続します。

43). EC2自身のプライベートIPアドレスに対して、存在しないユーザーでsshコマンドを実行してみましょう。
適当にいろんなユーザー名で数回行ってみましょう。

初回の「Are you sure you want to continue connecting (yes/no)? 」メッセージは yes ですすめましょう。

「Permission denied (publickey,gssapi-keyex,gssapi-with-mic).」となります。

44). secureログを確認すると、

45). 「Invalid user」文字列が出力されています。

46). CloudWatchのLogMetricsを確認してみましょう。
(反映が遅れる場合もあります)

47). メトリクス画面から[アクション]-[ダッシュボードに追加]もできます。

48). 例えば、ウィジェットタイプ数値などで追加します。

49). SNSトピックの通知先で設定したメールアドレスに、アラームメールが送信されていることを確認します。

リソースの削除

メトリクス以外は削除できますので、必要なければ忘れないように削除しておきましょう。
カスタムメトリクスは送信が止まれば課金が止まりますので、EC2インスタンスを停止、終了すればOKです。


最後までお読みいただきましてありがとうございました!

【PR】 「AWS認定試験対策 AWS クラウドプラクティショナー」という本を書きました。

【PR】 「AWSではじめるLinux入門ガイド」という本を書きました。

 - AWS, event, study ,

ad

ad

  関連記事

Alexaで作る受付システム(Alexa Day 2019でのブログ)

ランチタイムセッション3本目はウフルさん。 たくさんのLEDをコントロールされて …

Amazon CloudWatch クロスリージョンクロスアカウントダッシュボードを作成

本ブログのCloudFrontとWAFのアカウントと、EC2、RDS、S3などオ …

Developers Summit 2018 「NRIの働き方改革 – 開発スタイルから文化まで変えた軌跡 -」を聞きました

以下は、思ったことや気になったことをメモしていますので、必ずしも登壇者の発表内容 …

Alexa Skills Kit 最新アップデート(Alexa Day 2019 でのブログ)

以下は、気になったことのメモとか感想を書いています。 登壇者、発表者、主催企業な …

AWS Code Commitをプライベートリポジトリとして使う

GitHubでもいいんですが、アクセスキーとかパスワードとかコンフィグ系で書いて …

AWS BackupでRDSスナップショットをクロスリージョンコピー

クロスリージョンでコピーしたい対象と理由 このブログはブログのアーキテクチャをコ …

交通情報系スキルを事例に見る日常生活に溶け込むスキルのテクニック(Alexa Day 2019でのブログ)

以下は、気になったことのメモとか感想を書いています。 登壇者、発表者、主催企業な …

Rapidminerハンズオン勉強会に行ってきました

機械学習 OSSのRapidminerの勉強会に行ってきました。 OSS BI …

Systems Manager パブリックパラメータCLIでAWSのサービス数を出力してみました(2020/5/26)

先日のAWSのサービス数を数えてみました(2020/5/23)を見られて、お師匠 …

家族目線(HVC-C2W)SDKサンプルコードを実行してみました(iOS編)

オムロンさんの家族目線(HVC-C2W)SDKサンプルコードを実行してみました。 …