自从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。