僕は一々面倒なのでSSHに関しては鍵認証でもなければポートは22のままで運用しています。
そうなると毎日のようにSSHのブルートフォースアタックがくるわけですが万が一、ログインされた時に通知されるようにシェルスクリプトを”初めて”書いてみました。
設置の仕方
/home/user/.ssh の中に rc というファイル名で保存して chmod +x rc
ね?簡単でしょ?
Qiitaにも似たようなのがあるけどあれはログイン時に文字列が出力されちゃってるし、見た目もこっちのほうがいいでしょ?♥
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
url="<web hook url>" | |
readonly USER=`whoami` | |
readonly HOST=`hostname` | |
ip=`lastlog | grep -w "${USER}" | awk '{print $3}'` | |
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\": \"SSH Connection has established.\", | |
\"fallback\": \"SSH Connection has established.\", | |
\"fields\": [ | |
{ | |
\"title\": \"HOSTNAME\", | |
\"value\": \"${HOST}\", | |
\"short\": true | |
}, | |
{ | |
\"title\": \"Date / Time\", | |
\"value\": \"${month} ${date} (${day}) ${time}\", | |
\"short\": true | |
}, | |
{ | |
\"title\": \"from\", | |
\"value\": \"${ip}\", | |
\"short\": true | |
} | |
] | |
} | |
] | |
}" | |
curl -m 5 --data-urlencode "${payload}" "${url}" > /dev/null 2>&1 |