Windowsのログイン(ログオン)通知

セキュリティ対策の一環としてログイン通知を行うことが考えられます。ここではWindowsでログイン通知を実現する1手法を紹介します。

メール通知スクリプト

まずログイン時にメール送信するスクリプトを用意します。ここではPowerShellスクリプトファイル(loginnotification.ps1)を作成します。

function SendMail($subject, $body) {
    $EmailFrom = "?????@outlook.jp"
    $EmailTo = @("?????@?????")
    $Subject = $subject
    $Body = $body
    $SMTPServer = "smtp.outlook.com" 
    $SMTPPort = 587
    $password = ConvertTo-SecureString "?????" -AsPlainText -Force
    $username = "?????@outlook.jp"
    $credential = New-Object System.Management.Automation.PSCredential($username, $password)

    Send-MailMessage `
        -From $EmailFrom `
        -to $EmailTo `
        -Subject $Subject `
        -Body $Body `
        -SmtpServer $SMTPServer `
        -port $SMTPPort `
        -UseSsl -Credential $credential `
        -DeliveryNotificationOption None `
        -Encoding UTF8 `
        -ErrorAction Stop
}

$loginName = (Get-ChildItem Env:\USERNAME).Value
$date = (Get-Date).ToString("yyyy/MM/dd HH:mm:ss.fff")

$subject = "ログイン通知 : WinPC01 : " + $loginName + " : " + $date
$body = $loginName + "によるログインがありました。`r`n" + $date

SendMail $subject $body

上はOutlook(例はoutlook.jp)アカウントを使ってメール送信しています。Googleだとセキュリティ設定をかいくぐることが困難になっています。そのためこのスクリプトもいつまで使えるかわかりません。もう少し安定的にはoutlookアプリを導入し、outlookをコールする方が現実的かも知れません。

また上のファイルではパスワードをベタに記録するので、スクリプトの保管場所・アクセス権限設定には十分な配慮が必要です。

文中の?????の部分を各自のアカウントに合わせて変更して利用します。またPowerShellスクリプトが動作する環境設定になっているかどうか、スクリプトを実行して確認してください。

イベント処理

次にログイン時に上のスクリプトを呼び出すように設定します。

使用したいアカウントで「タスクスケジューラ」を起動してください。

操作から「タスクの作成」を実行します。以下、次のような手順で設定します。

  1. 「全般」タブ
    • 適切な名前を付ける(全角文字にしておくと区別しやすいかも?)
  2. 「トリガー」タブ
    • 「新規」
    • 「ログオン時」「ユーザーセッションへの接続時」「ワークステーション アンロック時」の3つを登録
  3. 「操作」タブ
    • 「新規」
    • 操作:プログラムの開始
    • プログラム/スクリプトを:powershell
    • 引数の追加:-F “保存したスクリプトファイルのフルパス名”

これでログオンやリモートデスクトップ接続時にメールが送信されるようになります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です