サーバーにSSH接続した場合は通知メールを飛ばす設定を行ったので、メモ代わりに。
CentOS6.6で設定を行っています。
CentOS5やDebianだとmailコマンドのオプション指定が異なりますのでご注意を!
また、他のOSでの設定を追記したいと思います。
とにかくSSHでログインされたらメールを飛ばす
-
どのユーザーがログインしてもメールを飛ばしたい場合
/etc/ssh/sshrc に下記の内容を記述します。
echo ""$USER" has logged in from $SSH_CLIENT at `date +"%Y/%m/%d %p %I:%M:%S"` " | mail -s "bacchi.me sshd login alert" -r
このスクリプトを入れてやることで、どの全てのユーザーがSSH接続でログインしてきた場合、任意の宛先にメールを飛ばします。
-
特定のユーザーがログインしたらメールを飛ばしたい場合
任意のユーザーの、~/.ssh/rc に上記のスクリプトを記述します。
なお、~/.ssh/rc があるときは、/etc/ssh/sshrc は無視されます。
特定のホストから接続が合った場合にはメールを通知しない
自宅やオフィスのの固定IPからの接続はメール通知を行いたくないと思うことがあると思います。
その場合は下記のスクリプトを単体で作り、/etc/ssh/sshrc に仕込みましょう!
# vim /usr/local/bin/ssh_alert.sh
---
#!/bin/bash
client_ip=`echo ${SSH_CLIENT} | cut -d " " -f 1`
trust_ip="192.168.100.2"
if [ "$trust_ip" != "$client_ip" ]; then
echo ""$USER" has logged in from $SSH_CLIENT at `date +"%Y/%m/%d %p %I:%M:%S"` " | mail -s "bacchi.me sshd login alert" -r
fi
---
# chmod 755 /usr/local/bin/ssh/alert.sh
# vim /etc/ssh/sshrc
---
/bin/bash /usr/local/bin/ssh_alert.sh
こんなややこしい方法にしたのは /etc/ssh/sshrc でifが使えるかいまいちわかんなかったから。
試すのも邪魔くさかったのでゴリ押ししてしまいました。
もしご存知の方がいらっしゃれば教えて下さい・・・
最後に
最後までご覧いただきありがとうございました!
この記事があなたのお役に立てたのであれば嬉しいです。