在login时显示最近的login失败

我有一个面向networking的Ubuntu Linux服务器。 正因为如此,我得到了相当数量的蛮力SSH尝试(谁没有)。 我想在login提示符下显示最近N次失败的login尝试。 我已经制定了简单的脚本:

grep "Failed" /var/log/auth.log | tail -5 

但是我需要知道的是我在哪里放置这行脚本? 有没有地方可以说这是壳不可知的?

有几个软件包可以用来帮助暴力攻击。

  1. 的DenyHosts
  2. 的fail2ban

要收集日志并向您发送报告,您可以使用logwatch。 它也可以发送失败的login摘要。

要回答你原来的问题,你可以把你的脚本放在“/etc/profile.d/yourscript.sh”中,它应该在login时执行。

你也可以考虑设置arno-iptables-firewall软件包。

这真的是依赖于shell。 对于bash ,你应该把它放在.bash_login文件中。

对于强悍的攻击防范,除了已经为黑名单攻击者的IP所取得的成就之外,我通常会告诉sshd在一个非标准端口上进行侦听并禁用密码authentication。 当然,这可能不总是可能的,但它确实是有效的。

把所有东西放在/ etc / profile中。

在进入你的shell启动文件之前,它将在/ etc / profile中运行所有的东西。

我最终做的是在我的主目录中创build一个.profile.d目录,并将执行循环从/etc/profile复制到我的$HOME/.profile 。 然后我把我的displayAttacks.sh脚本放到我的$HOME/.profile.d目录(以及我的其他init脚本)。

除了.profile之外。

 if [ -d "${HOME}/.profile.d" ]; then for i in ${HOME}/.profile.d/*.sh; do if [ -r "$i" ]; then . "$i" fi done unset i fi 

有一个perl脚本 , SSHBlock可以用来反对暴力破解SSH。
它经常从一个IP地址尝试,并减缓他们的尝试。

你有一些问题在那里。 首先,任何非root用户都不应该能够读取auth日志文件。 如果你以root身份login,不要再这样做了:)

其次,使用适当的工具。 我喜欢OSSEC的方法,在一段时间内给我发送每X次失败的login信息。 它也自动阻止IP,减less暴力攻击成功的机会。