如何在 OpenBSD 5.3 下记录使用用户名登录 SSHD 失败的情况?

如何在 OpenBSD 5.3 下记录使用用户名登录 SSHD 失败的情况?

自从DYNDNS成为付费服务后,我找到了解决动态IP地址问题的方法:

OPENWRT路由器端(动态IP,这一行在CRON中):

echo close | ssh LOCATION@SERVER -p 22 > /dev/null 2>&1

SERVER端(有固定IP):

on OpenBSD 5.1 I had nothing to do*

客户端(我想从那里连接到动态IP/OpenWRT路由器):

vi .bashrc
DYNNAMEHERE() {
DYNNAMEHERE01=`ssh root@DOMAINHERE -p PORTHERE "grep 'user DYNNAMEHERE from' /var/log/authlog | tail -1" | sed 's/ from /\n/g' | tail -1 | grep -o "[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*"`
ssh root@"${DYNNAMEHERE01}" -p PORTHERE
}

然后我只需要使用这个命令:

DYNNAMEHERE

我以 root 身份登录 OpenWRT 路由器。

问题:*但是在 OpenBSD 5.3 中,失败的登录用户名不会被记录。为什么?我尝试将 SSHD 日志级别设置为 DEBUG3(然后:“kill -HUP SSHDPID”),但未记录失败的登录用户名。

更新:“位置”是登录名。 (但我也尝试过“-l”,但没有成功)

更新:不,除了以下内容之外,我没有更改 sshd_config:

ListenAddress 0.0.0.0
PermitRootLogin without-password
PubkeyAuthentication yes
PasswordAuthentication no

答案1

为 sshd 设置自定义日志

我意识到 OpenBSD 上已经设置了用于日志记录的默认选项,因此如果该设置有问题或配置错误,这是一个替代方案!

如果您对 OpenBSD 5.3 中包含的常规日志记录功能有问题,您可以使用对 sshd_config 文件进行以下修改来覆盖日志发送位置:

SyslogFacility LOCAL7

然后配置 syslogd 以获取这些消息并将它们记录到单独的文件中:

local7.*     /var/log/local7.log

进行上述更改后,请务必重新启动 sshd 和 syslogd 服务。

pam_exec

如果您想要更多可定制的东西,您可能想pam_exec看看。更多详细信息请参见pam_exec 手册页以及本教程标题为:登录通知、pam_exec 脚本

这个想法很简单,创建一个脚本,例如这个脚本,notify-logins:

#!/bin/sh
[ "$PAM_TYPE" = "open_session" ] || exit 0
{
  echo "User: $PAM_USER"
  echo "Ruser: $PAM_RUSER"
  echo "Rhost: $PAM_RHOST"
  echo "Service: $PAM_SERVICE"
  echo "TTY: $PAM_TTY"
  echo "Date: `date`"
  echo "Server: `uname -a`"
} | mail -s "`hostname -s` $PAM_SERVICE login: $PAM_USER" root

该脚本可以修改为记录到文件中。接下来,您需要将此脚本添加到您的 pam 设置中:

auth [default=ignore] pam_exec.so /usr/local/bin/notify-logins

确保上面的脚本可执行(chmod +x notification-logins)。弄清楚将 pam 线放置在哪里可能是此方法中最困难的部分。这是一个不错的教程希望这能让您朝着正确的方向前进。

失败2禁止

第三种方法是使用诸如此类的工具,fail2ban该工具不仅可以记录失败的登录尝试,还可以做更多的事情。它也可以以各种方式对它们做出反应。这里有一个很好的教程,标题为:如何在 Ubuntu 12.04 上使用 fail2ban 保护 SSH。它适用于 Ubuntu,但也可以适用于 OpenBSD。

参考

相关内容