サーバーにSSH接続した場合は通知メールを飛ばす設定を行ったので、メモ代わりに。
CentOS6.6で設定を行っています。
CentOS5やDebianだとmailコマンドのオプション指定が異なりますのでご注意を!
また、他のOSでの設定を追記したいと思います。
とにかくSSHでログインされたらメールを飛ばす
-
どのユーザーがログインしてもメールを飛ばしたい場合
/etc/ssh/sshrc に下記の内容を記述します。
1 2 |
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 <from_address> <to_address> |
このスクリプトを入れてやることで、どの全てのユーザーがSSH接続でログインしてきた場合、任意の宛先にメールを飛ばします。
-
特定のユーザーがログインしたらメールを飛ばしたい場合
任意のユーザーの、~/.ssh/rc に上記のスクリプトを記述します。
なお、~/.ssh/rc があるときは、/etc/ssh/sshrc は無視されます。
特定のホストから接続が合った場合にはメールを通知しない
自宅やオフィスのの固定IPからの接続はメール通知を行いたくないと思うことがあると思います。
その場合は下記のスクリプトを単体で作り、/etc/ssh/sshrc に仕込みましょう!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# 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 <from_address> <to_address> 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が使えるかいまいちわかんなかったから。
試すのも邪魔くさかったのでゴリ押ししてしまいました。
もしご存知の方がいらっしゃれば教えて下さい・・・
最後に
最後までご覧いただきありがとうございました!
この記事があなたのお役に立てたのであれば嬉しいです。