3 email gnome security gdm login
我想知道是否可以将它设置为在登录失败时 Ubuntu 会向我发送电子邮件?当然,如果尝试发生时计算机没有连接到互联网,那么它应该在再次连接互联网后向我发送电子邮件,而不是仅仅尝试、失败,然后再不提醒我登录。该电子邮件应包含day/month/year - hour:minute:second登录尝试失败的日期和时间 ( ),以及(尽管是可选的 - 换句话说,不解释如何执行此操作的答案是可以接受的,因为这可能是一个很大的问题)所采取的任何操作,例如,如果我将其设置为将人锁定 5 分钟之类的那么它应该提醒我它已采取该行动的事实。我正在使用 GNOME 3.18 运行 Ubuntu GNOME 15.10,这可能吗?
具有 root 权限的人可以使用该命令lastb查看计算机中所有失败的登录尝试,还可以在/var/log/auth.log(无需 root 权限)和错误的登录尝试将如下列出:
MONTH DAY HH:MM:SS MACHINE lightdm: pam_unix(lightdm:auth): authentication failure; logname= uid=0 euid=0 tty=:0 ruser= rhost= user=USER
Run Code Online (Sandbox Code Playgroud)
您可以编写一个脚本来读取这些日志文件,并在记录新的错误登录尝试时通过电子邮件将它们发送给您。这是我的看法:
首先让我们在有人尝试登录并失败时触发脚本执行。PAM 保留/var/log/auth.log以便我们可以使用它来触发我们的脚本。打开/etc/pam.d/common-auth:
sudo vim /etc/pam.d/common-auth
Run Code Online (Sandbox Code Playgroud)
然后,就在该行之前:
auth requisite pam_deny.so
Run Code Online (Sandbox Code Playgroud)
添加这个:
auth [default=ignore] pam_exec.so seteuid /usr/bin/report_badlogin
Run Code Online (Sandbox Code Playgroud)
并且在上面的行中更改任何出现的success=1tosuccess=2和,如果有的话,success=2tosuccess=3等等。
现在创建指定的脚本:
sudo vim /usr/bin/report_badlogin
Run Code Online (Sandbox Code Playgroud)
在其中写入向您发送报告电子邮件的命令:
MONTH DAY HH:MM:SS MACHINE lightdm: pam_unix(lightdm:auth): authentication failure; logname= uid=0 euid=0 tty=:0 ruser= rhost= user=USER
Run Code Online (Sandbox Code Playgroud)
简要说明:首先grep通过从最后保存的日志文件副本 (.old) 中减去它来获取日志文件的更改。Secondgrep获取重要的行,通知您尝试登录的日期、时间和用户的行。mail向您发送这一行作为主题为错误登录尝试通知的电子邮件。如果电子邮件已成功发送,auth.log.old则会更新,但由于脚本以 root 身份运行,我们会将文件的所有权归还给您的用户。
保存并关闭它(VIM 命令:wq)。
确保脚本具有执行权限:
sudo chmod a+x /usr/bin/report_badlogin
Run Code Online (Sandbox Code Playgroud)
手动创建第一个副本auth.log:
cp /var/log/auth.log{,.old}
Run Code Online (Sandbox Code Playgroud)
处理没有互联网连接的场景
潜在的入侵者可以在他尝试猜测密码以阻止通知电子邮件时断开您的 PC 与 Internet 的连接,但即使他这样做,他的错误登录尝试也会被记录到auth.log.
为了尽快获得通知,您可以做的是在您的机器连接到互联网的情况下成功登录后触发一个略有不同的脚本。为此,让我们使用~/.bashrc脚本,它在您登录时执行:
vim ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
将这些行添加到文件末尾:
sudo vim /etc/pam.d/common-auth
Run Code Online (Sandbox Code Playgroud)
保存并退出。现在创建该脚本:
sudo vim /usr/bin/report_pending
Run Code Online (Sandbox Code Playgroud)
并在其中写入以下内容:
auth requisite pam_deny.so
Run Code Online (Sandbox Code Playgroud)
简要说明:此脚本与第一个几乎相同,但由于它始终在登录时执行,因此我们首先检查是否存在未决报告,否则无论何时登录,您都会收到一封空白电子邮件。请注意,此脚本不是以 root 权限运行的,因此auth.log.old更新后无需更改所有权。
现在只需为脚本添加执行权限:
sudo chmod a+x /usr/bin/report_pending
Run Code Online (Sandbox Code Playgroud)
为了发送电子邮件,安装mailutils和sSMTP:
sudo apt-get install mailutils ssmtp
Run Code Online (Sandbox Code Playgroud)
配置sSMTP:
sudo vim /etc/ssmtp/ssmtp.conf
Run Code Online (Sandbox Code Playgroud)
将其编辑为如下所示:
root=yoursmtpemail@gmail.com
mailhub=smtp.gmail.com:587
AuthUser=yoursmtpemail
AuthPass=PASSWORD
UseSTARTTLS=YES
hostname=yoursmtpemail@gmail.com
FromLineOverride=YES
Run Code Online (Sandbox Code Playgroud)
如果您不使用 GMail,只需将其更改为您的提供商即可。
我建议您创建一个仅用作 SMTP 服务器 ( yoursmtpemail@gmail.com) 的电子邮件,而不是使用您的个人电子邮件,因为正如您所看到的,您将这封电子邮件的密码存储在一个纯文本文件中(只有 root 可以访问该文件,但它是无论如何都不是一个好习惯,尽管我不知道如何以任何其他方式做到这一点......)。
对于 GMail(我还没有尝试过其他提供商),您仍然需要允许访问安全性较低的应用程序。如果您尝试运行,echo "Test mail" | mail -s "Testing" yourpersonal@email.com您应该会收到一封电子邮件,yoursmtpemail@gmail.com通知您访问该电子邮件的应用程序已被拒绝,该应用程序不符合 GMail 的安全级别,如果您愿意,可以了解有关允许访问不太安全的应用程序的更多信息,请单击它和 GMail 最终会为您提供允许它的选项。
完毕!