0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Amazon EC2(Windows OS)にログインしたら自動的にメール通知を行う

0
Posted at

踏み台用や試験用でAWSにサーバを作ったときに「不正アクセスされたらどうしよう...」ってなんとなく不安になることってないですか?セキュリティグループで制限をかけているとはいえ不安...かといって一時利用なのでセキュリティに手間をかけていられないという人が安心して眠れるように、サーバにログインがあったときに自動的にメール通知してくれる設定をしてみようと思います。

今回のゴール

Windows サーバにログインが成功したら、指定のアドレスへ自動的にメールを送信する

前提条件

  • 使用するサーバはAmazon EC2(windows OS)
  • サーバのログオンスクリプトにメール送信操作を行うコマンドを記述したPowershellファイルを設置して、ログインをトリガーに動作させる
  • メールサーバへEC2のPoweshellコマンドからアクセスできるようにアクセス認証を調整しておく
  • Amazon VPC のセキュリティグループのアウト方向は全許可にしておく
  • メールサービスは送信はgmailで受信はYahoo mailを使う ※申請が面倒なのでAWS SESは使いません
  • メールサーバへの通信ポートは587を利用する

設定内容

①EC2を準備する
②Poweshellファイルを作成する
③サーバのログオンスクリプトを設定する
④Gmail側でアクセス認証の設定を行う

実際にやってみる

①については他に詳しい記事が多くありますので割愛します。とりあえず、RDP接続できて、インターネットへ接続できればOKです。
続いて②ですが、Powershellの中身は以下のような感じです。xxxの部分は実環境ごとに変更してください。

# Send Gmail Script
# HeaderをScript内に指定(メール送信元/送信先/件名/本文)

# gmail Account
$AccountName = "xxxxxxxx@gmail.com"
$Password = "xxxxxx"

# connect gmail
$SMTPClient = New-Object Net.Mail.SmtpClient("smtp.gmail.com", 587)
$SMTPClient.EnableSsl = $True
$SMTPClient.Credentials = New-Object 
System.Net.NetworkCredential("$AccountName","$Password");

# Header
$MailFrom = "$AccountName"
$MailTo   = "xxxxxx@yahoo.co.jp"
$Subject  = "EC2よりメール送信テスト"
$Body     = "これはEC2のログオンスクリプトからのメール送信テストです。"

# message object
$Message = New-Object Net.Mail.MailMessage($MailFrom, $MailTo, $Subject, $Body)

# send mail
$SMTPClient.Send($Message)

③で上記②で設定したPowershellがログオン時が実行されるように設定します。
タスクスケジューラーで設定する方法もありますが、今回はログオンスクリプトに設定する方法で構築します。

[Windowsボタン]+[R]を押し、gpedit.mscを検索し、アクセスします。
image.png
ローカルコンピュータポリシーエディターが開くので、[ユーザの構成]の中の[Windowsの設定]-[スクリプト「」ログオン/ログオフ]のログオンを設定します。
image.png

以下のように[Powershellスクリプト]タブへ先ほど作成したPowershellを追加します。
image.png

次に④でGmailの管理ページで、Powershellコマンドでメール送信できるように「安全性の低いアプリのアクセス」を有効にしておきます。
image.png
これをしておかないとpowershellからgmailサーバへの認証が通らないです。

では準備は整いましたので、EC2へRDPしてみましょう。
ログインすると以下のようにメール通知されていると思います。
画面.png

これで安心して眠れますd(`・ω・’)

EC2から通信ポート25を使って、メール送受信しようとするとAWSへ申請などが必要で面倒ですがポート587を使って送信するだけであればややこしい申請も不要です。

参考にしたページ

[【PowerShell】Windows PowerShell を使用して GMail や Office 365 からメールを送信する]
(https://docs.microsoft.com/ja-jp/archive/blogs/junichia/powershellwindows-powershell-gmail-office-365)

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?