是否可以为拒绝访问服务器的用户设置自定义错误消息? 实际上,如果用户由于在sshd_config设置了IP筛选器而被拒绝,我只想显示此消息。 但是一个全局错误信息就足够了。
通过“错误消息”我相信你的意思是由客户端程序显示的文本string。 “message”这个词在稍后会提到的SSHauthentication协议RFC中有一些上下文,但是我不认为这就是你使用它的内涵。
我相信你正在考虑使用SSH作为TELNET,由服务器守护程序发送的任意文本string将被客户端显示出来。 SSH使用身份validation协议 ,在客户端和服务器之间以二进制值的forms传递标记消息。 其中一个标记消息“SSH_MSG_USERAUTH_BANNER”可以用来指示客户端显示任意文本string(如果可以的话),但是你必须修改你的SSH守护进程以在适当的时候发送这些消息。 我不相信OpenSSH有任何内置的function来在authentication过程的任意点发送SSH_MSG_USERAUTH_BANNER消息。
我会问你为什么要给远程攻击者提供有关为什么他们的身份validation失败的附加信息。 他们知道这是失败的,因为他们的SSH客户端接收到来自SSH守护进程的标记消息,并作出反应,表明失败。
编辑:埃文·安德森键入比我更快,似乎确认邮件是不可定制的服务器上的大小。
您可以在sshd_config中指定一个横幅文件。 在login提示之前,横幅将显示给所有用户,并且仅允许来自特定域和地址的login。
SSH可以将login传递给unix / bin / login命令。 根据您的操作系统,您可能有一个选项来自定义提示和错误?
任何我能想到的可能意味着编辑代码和重新编译。 失败消息可能不是以string的forms从服务器发送到客户端,而是作为代码,以防止攻击者收集信息。 (如果是一个string,并且可以自定义,有人会将其设置为“Login Failed。OpenSSH_3.7_p2 21032004”)
这不适用于sshd_config的ipfilter,但它可以用于由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 ...
在这种情况下,如果经过身份validation的用户在过去30天内未login,则在SSH连接closures之前, /path/to/lastlog_error_message.txt to /path/to/lastlog_error_message.txt的内容将被回显到标准输出。 如果他们通过了pam_lastlog的检查,则评估将跳过pam_echo和pam_deny调用,继续评估剩余的PAM模块。