kn007的个人博客
♥ You are here: Home > 软件与网络 > VPS > SSH登录时自动邮件提醒

SSH登录时自动邮件提醒

by | 39 Comments

提醒:本文最后更新于 3114 天前,文中所描述的信息可能已发生改变,请仔细核实。

20160917021722好吧,前几天有人问了我这个问题,正好发篇文章分享下我的方法。

以下方法适用OpenSSH,其他根据实际修改:

首先,确认你为OpenSSH使用了PAM,检查“/etc/ssh/sshd_config”,看下“UsePAM”的值是不是定义为“yes”。

接下来,利用pam_exec给OpenSSH做个钩子注册动作,编辑“/etc/pam.d/sshd”,在末尾添加一行:

session    optional     pam_exec.so seteuid /etc/ssh/login-notifications.sh

然后,创建个“login-notifications.sh”脚本来处理邮件发送,通常我会在“/etc/ssh/”下创建,内容如下:

#!/bin/sh
if [ "$PAM_TYPE" != "close_session" ]; then
    MAILTO='kn007@126.com'
    HOSTNAME=$(hostname)
    NOW=$(date)
    echo "Someone from $PAM_RHOST using $PAM_USER logged into $HOSTNAME on $NOW." | mail -s 'SSH Login Notification' $MAILTO
fi

记得把MAILTO值改为你的邮箱。最后为该脚本文件添加执行权限:

chmod +x /etc/ssh/login-notifications.sh

用这种方式的好处是什么呢?

或者说比你通过修改Shell的Profile文件(如bashrc、zshrc等等)来做邮件提醒有什么好处?

第一,免去多种Shell共存时,你都要去修改相应Shell配置文件。(如果你只用Bash Shell,那还好)

第二,免去每新增一个Shell窗口,便邮件提醒你一次。(有时开很多shell窗口来处理事物时,过多邮件提醒,很烦,也很傻)

第三,如果对方登录你的VPS,并不打开SSH窗口,便不会提醒的毛病。(比如我登录VPS,只是想SFTP而非SSH,这种方法也会邮件提醒,而通过修改Shell配置文件的则不会提醒,因为这时还没触发启动Shell)

第四,钩子直接在OpenSSH上,省去各种可能的意外。(比如上面第三点)

OK,就介绍到这里。

注意邮件提醒,需要你的服务器有邮件系统(比如Sendmail、Postfix等),另外还需要“mailx”这个组件来使Shell可发信。


原来有些小伙伴是这样想的。。。
qq%e6%88%aa%e5%9b%be20160918105251
再次说明一下,邮件提醒只是一种安全措施(举措),而不是安全手段(认证或保密)。邮件提醒无法代替任何安全手段,比如“禁止密码,使用密钥登录”、“两步验证”等一些认证手段还是很有必要的。

邮件提醒并不能保障你的密码、密匙不会被盗或者说被泄漏,它只是很单纯的在有人登录的时候提醒你,仅此而已。

转载请注明转自:kn007的个人博客的《SSH登录时自动邮件提醒

donate
有所帮助?

Comments

39 Comments立即评论
  1. :evil: 沙发
    还是那么能折腾

    1. MOD回复

      @World: 还好,只是看来没什么人需要这个。

  2. LV5回复

    这个可以有,迟些如果真的换上 vps 就可以用上了。 :lol:

    1. MOD回复

      @老杨: :o 你还用着主机呢。。

    2. LV5回复

      @kn007: 没办法,技术太菜了,还没信心呢。

    3. MOD回复

      @老杨: 谦虚了。

  3. LV2回复

    可以开始折腾 varnish 5 + h2 了

    1. MOD回复

      @ivmm: 居然有5了,还能支持ssl?! :!: 去看看

    2. MOD回复

      @ivmm: 还真的能支持,不过第一句话就:The HTTP/2 code is not mature enough for production :evil: (Very Experimental HTTP/2 support)
      下个版本计划时间略显久:Next release is scheduled for March 15th 2017, and will most likely be Varnish 5.1. :x
      而且居然还求赞助了。。。We need more money :o

    3. LV2回复

      @kn007: 我就怕是 h2c。。 明年3月,5.1 可以用于生产,也快了。 不过,没有翻到怎么搞 h2 的详细文档

    4. MOD回复

      @ivmm: 确实没看到文档,文档没更新。我看了很多文章,怎么感觉像是本身不提供证书链这些,而是提供http2协议隧道。
      也就是说Varnish前面还要套一层proxy,然后这层proxy与varnish能以http2来建立通讯。
      现在4.1,nginx对外虽然是h2,但是内部通讯还是http/1.1,5.0可以用实现内部通讯是h2。

    5. MOD回复

      @ivmm: 而且bug好多啊,5.0,好囧,基本用h2或多或少会出现segment fault :o 我还是等稳定点吧。

  4. 从有几种好处来看,你这方法已经够细微了,哈哈。

    1. MOD回复

      @郑永: 要不我也不会推荐,可惜看来并没有多少人care。。

  5. 回复

    可以很强势的方法,但是我还是喜欢用 Ban IP 的形式阻止异常登录。

    1. MOD回复

      @麦葱: 我这个不是为了阻止,而是提醒。毕竟那些登进来的人可能不是你。 :mrgreen:

  6. 1.如果用密匙加密的话还有必要设置这个么?2.为什么不采用密匙加密登录呢 :?:

    1. MOD回复

      @Bor Lee: 用了密匙也很有必要,好吧。。。
      没准密匙泄漏了,你还不知道,异常的登录提醒,不就可以很好的为你挽回可能的损失。。。
      邮件提醒是种安全措施,而不是安全手段。

    2. @kn007: 我密匙一般都放在本地不携带,确实没考虑到密匙泄漏。

    3. MOD回复

      @Bor Lee: 密匙相对密码来说,确实稳妥,但无法保证一定不会被泄漏。万一呢,对吧?
      密匙在带来便捷的同时,也带来一些其他问题。比如你使用密码,你可能偶尔会改下密码,而密匙基本你很少会重新生成。密码你还想着可能会被泄漏什么的,密匙觉得在自己眼皮底下,可能就掉以轻心。
      邮件提醒并不能保障你的密码、密匙不会被盗,它只是很单纯的在有人登录的时候提醒你,仅此而已。

    4. @kn007: 说得很有道理!确实,当初生成了密匙就有一种一劳永逸的感觉,一语惊醒梦中人。另外邮件提醒的作用我懂。

  7. 回复

    哈哈,挺有用的方法。
    我之前是通过监控特定文件的变化来间接监控SSH登录情况的,不过这种方法的效果看上去更好。

    1. MOD回复

      @a-z: 嗯,可以尝试一下

  8. 从没想过密匙能被盗。。。
    邮件提醒自己登录也提醒不是很烦嘛 :o
    一般个人的话,密匙,禁root登录,改登录端口,防火墙再加套规则,基本没啥事儿了吧

    1. MOD回复

      @stan: 基本没啥事的。邮件提醒只是给个心安。

  9. geeeeeeeek!

    1. MOD回复

      @ArchiTech: :lol: ,新工作如何?

  10. LV4回复

    又有好几个博友域名失效了,唉。。。

    1. MOD回复

      @尽欢: 这很正常

正在提交, 请稍候...

icon_wink.gificon_neutral.gificon_mad.gificon_twisted.gificon_smile.gificon_eek.gificon_sad.gificon_rolleyes.gificon_razz.gificon_redface.gificon_surprised.gificon_mrgreen.gificon_lol.gificon_idea.gificon_biggrin.gificon_evil.gificon_cry.gificon_cool.gificon_arrow.gificon_confused.gificon_question.gificon_exclaim.gif