広告 Linux

SSHでログインしたらメールで通知する

サーバーに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が使えるかいまいちわかんなかったから。

試すのも邪魔くさかったのでゴリ押ししてしまいました。

もしご存知の方がいらっしゃれば教えて下さい・・・

最後に

最後までご覧いただきありがとうございました!

この記事があなたのお役に立てたのであれば嬉しいです。

Sponsor Link

-Linux