是否可以为拒绝访问服务器的用户设置自定义错误消息?实际上,我只想在由于设置了IP过滤器而拒绝用户时显示此消息sshd_config
。但是一条全局错误消息就足够了。
是否可以为拒绝访问服务器的用户设置自定义错误消息?实际上,我只想在由于设置了IP过滤器而拒绝用户时显示此消息sshd_config
。但是一条全局错误消息就足够了。
Answers:
我认为“错误消息”是指客户端程序正在显示的文本字符串。“消息”一词在SSH身份验证协议RFC中有一些上下文,我将在后面引用,但我认为这不是您在其中使用的含义。
我相信您认为SSH类似于TELNET,其中服务器守护程序发送的任意文本字符串将由客户端显示。SSH使用身份验证协议,该协议以二进制值的形式在客户端和服务器之间来回传递令牌化的消息。这些令牌化消息之一“ SSH_MSG_USERAUTH_BANNER”可用于指示客户端显示任意文本字符串(如果愿意的话),但是您必须修改SSH守护程序以在适当的时间发送它们。我不认为OpenSSH具有任何内置功能,可以在身份验证过程中的任意时间段发送SSH_MSG_USERAUTH_BANNER消息。
我想问一下,为什么要向远程攻击者提供有关身份验证失败的其他信息。他们知道这是失败的,因为他们的SSH客户端从SSH守护程序接收到表示失败的令牌化消息并对其做出反应。
编辑:埃文·安德森(Evan Anderson)输入的速度比我快,并且似乎确认该消息无法在服务器大小上自定义。
您可以在sshd_config中指定标题文件。该横幅将在登录提示之前显示给所有用户,并声明仅允许来自某些域和地址的登录。
SSH可以将登录信息传递给unix / bin / login命令。根据您的操作系统,您可能有一个自定义提示和错误的选项?
我能想到的任何其他内容都可能意味着编辑代码并重新编译。为了防止攻击者收集信息,失败消息可能不是以字符串形式而是以代码形式从服务器发送到客户端。(如果它是一个字符串并且可以自定义,则有人会将其设置为“登录失败。OpenSSH_3.7_p221032004”)
这不适用于ip过滤器sshd_config
,但它适用于PAM通过使用实施的任何访问控制pam_echo.so
。
例如:
account [success=2 default=ignore] pam_lastlog.so inactive=30
account optional pam_echo.so file=/path/to/lastlog_error_message.txt
account requisite pam_deny.so
account ...
在这种情况下,如果经过身份验证的用户在过去三十天内未登录,/path/to/lastlog_error_message.txt
则将在关闭SSH连接之前将其内容回显为标准输出。如果他们通过了检查,pam_lastlog
则评估将跳过pam_echo
和pam_deny
调用以继续评估其余的PAM模块。