ヤマムギ

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

  関連記事

RedmineをELB(ALB)でAutoScalingグループへ負荷分散

高可用なRedmineを作るためのELBの設定です。 高可用なRedmine R …

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

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

「MasterCloud第10回 ~超AWS神回の予感~」に行ってきました

JAWS DAYS 2018のコミュニテイフレンドシップにも参加しているMast …

Amazon LinuxにRedmine をインストールする(手順整理版)

Amazon LinuxにRedmineをインストールしました手順を記載します。 …

Selenium, Headless ChromeとAWS Lambdaで夜な夜なスクレイピング

このようなアーキテクチャで、Alexaスキルの開発を進めていまして、元となる情報 …

「JAWS-UG大阪 第18回勉強会 サーバーレス」の運営をしました

JAWS-UG大阪 第18回勉強会 サーバーレスを開催、運営しました〜。 事の発 …

「第14回RxTStudy(Redmine勉強会)」に行ってきました

土曜日の真っ昼間に半分以上が初参加者さんで80席が満席。 それだけRedmine …

LINEとAWSとTwilioとkintoneでBOTを作ってみるハンズオン (1)LambdaからSlackへ通知する1

作る部分 SlackのWebURLを確認する Slackでチームを作成してbot …

AWS Toolkit for Eclipseをセットアップする

AWSでそろそろ課金がされつつありますので、夜中はインスタンスを自動停止して朝自 …

EC2のAMIとRDSのスナップショットを他のAWSアカウントに共有してブログサイトをAWSアカウント間で引っ越す

当ブログで使用しているEC2とRDSを環境の整理のため、他のAWSアカウントへ引 …