おっさんのダベリ

IT系の技術的な話題が多いです

LineNotify APIでsshログイン通知をする

以前、sshでログインしたことをSlackに通知するというのを書いたことがあります。

yhanada.hatenablog.com

ちょっと前にLineNotify APIがリリースされたので、こちらでも使って見るようにしてみました。 基本的な設定方法は↑のエントリと同じですが、スクリプトなどの内容だけをこのエントリでは書いておきますね。

ファイル構成

/etc/pam.d/sshdにて実行するファイルのパスなどを設定しておけば、そのスクリプトが実行されますが、今回はスクリプトとLineNotify API実行時にヘッダに設定するToken情報を記述するファイルを分けてみました。

/etc/line
├── line-token
└── login-notify.sh

tokenは、https://notify-bot.line.me/my/で発行できます。

login-notify.shの内容は次のようにしました。

#!/bin/sh

script_dir=`dirname "${0}"`
endpoint=https://notify-api.line.me/api/notify

if [[ $PAM_TYPE != "close_session" ]] ; then
  host=$(hostname)
  message="SSH Login: ${PAM_USER} from ${PAM_RHOST} on ${host}"
  token=$(cat "${script_dir}/line-token") 
  header="Authorization: Bearer ${token}"
  curl -X POST -H "${header}" -F "message=${message}" ${endpoint}
fi

Lineに送信する内容を変えたい場合には、messageを指定している部分を適宜変更してください。

基本的には上記の内容で動作するはずですが、うまく動かない場合にはcurlの出力をファイルに書き出すと内容が確認できます。

例えば、-o /tmp/res などを追加するとAPIを呼び出したレスポンスを確認できます。

参考