下記のサイトさんのやり方を参考に作成
[Linux]SSHログイン時にメール/Slackで通知する – 備忘録の覚書
以下の"XXX.XXX.XXX.XXX"箇所は信頼できるIPを設定
半角スペースを入れることで複数指定可能。
e.g.) "XXX.XXX.XXX.XXX YYY.YYY.YYY.YYY"
{{ slack_login_alert_webhook_url }}にはSlackのwebhook URLを設定。
#!/bin/bash SOURCE_IP=${SSH_CLIENT%% *} # 信頼するIPを指定 TRUST_IP_LIST="XXX.XXX.XXX.XXX" # リストと比較して信頼していないIPからのアクセスならSlackに通知 for HOST in $TRUST_IP_LIST do if [ $HOST == $SOURCE_IP ]; then exit 0 fi done url="{{ slack_login_alert_webhook_url }}" readonly USER=`whoami` readonly HOST=`hostname` ip=`who | awk '{print $6}' | cut -d '(' -f 2 | sed -e 's/)//g'` user=`w -hsi | awk '{print $1}'` day=`lastlog | grep -w "${USER}" | awk '{print $4}'` month=`lastlog | grep -w "${USER}" | awk '{print $5}'` date=`lastlog | grep -w "${USER}" | awk '{print $6}'` time=`lastlog | grep -w "${USER}" | awk '{print $7}'` payload="payload={ \"attachments\": [ { \"color\": \"#36a64f\", \"title\": \"'${USER}': SSH Connection has established.\", \"fallback\": \"'${USER}': SSH Connection has established.\", \"fields\": [ { \"title\": \"HOSTNAME\", \"value\": \"${HOST}\", \"short\": true }, { \"title\": \"Date / Time\", \"value\": \"${month} ${date} (${day}) ${time}\", \"short\": true }, { \"title\": \"User Name\", \"value\": \"${user}\", \"short\": true }, { \"title\": \"from\", \"value\": \"${ip}\", \"short\": true } ] } ] }" curl -m 5 --data-urlencode "${payload}" "${url}" > /dev/null 2>&1