![sshd:从外部 LAN 禁用密码身份验证时出现问题](https://linux22.com/image/6623/sshd%EF%BC%9A%E4%BB%8E%E5%A4%96%E9%83%A8%20LAN%20%E7%A6%81%E7%94%A8%E5%AF%86%E7%A0%81%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E6%97%B6%E5%87%BA%E7%8E%B0%E9%97%AE%E9%A2%98.png)
我有一台带有 2 个网卡的 CentOS 7 服务器,一个位于 LAN 内,具有专用 IP 192.168.1.1 (lan0),另一个具有公共互联网 IP (ppp0)
对于源自 LAN 内部的连接,我希望密码或公钥身份验证可用。
对于来自互联网的连接,我只需要公钥。我在 /etc/ssh/sshd_config 中这样做了
PasswordAuthentication No
最后几行是:
Match address 192.168.1.0/24
PasswordAuthentication yes
因此,为了进行测试,我登录到另一台我拥有的计算机(即互联网上的 VPS)并尝试通过 ssh 登录。正如预期的那样,我得到了以下结果:
Permission denied (publickey).
但我不明白的是为什么我的 /var/log/secure 充满了这样的暴力尝试:(IP 已更改)
Apr 22 09:57:36 linuxhost1 sshd[15149]: input_userauth_request: invalid user webmaster [preauth]
Apr 22 09:57:36 linuxhost1 sshd[15149]: Received disconnect from a.b.c.d: 11: Bye Bye [preauth]
Apr 22 09:57:36 linuxhost1 sshd[15151]: Invalid user webmaster from a.b.c.d
Apr 22 09:57:36 linuxhost1 sshd[15151]: input_userauth_request: invalid user webmaster [preauth]
Apr 22 09:57:36 linuxhost1 sshd[15151]: Received disconnect from a.b.c.d: 11: Bye Bye [preauth]
Apr 22 09:57:36 linuxhost1 sshd[15153]: Invalid user webpop from a.b.c.d
Apr 22 09:57:36 linuxhost1 sshd[15153]: input_userauth_request: invalid user webpop [preauth]
Apr 22 09:57:36 linuxhost1 sshd[15153]: Received disconnect from a.b.c.d: 11: Bye Bye [preauth]
Apr 22 09:57:36 linuxhost1 sshd[15155]: Invalid user web from a.b.c.d
Apr 22 09:57:36 linuxhost1 sshd[15155]: input_userauth_request: invalid user web [preauth]
Apr 22 09:57:36 linuxhost1 sshd[15155]: Received disconnect from a.b.c.d: 11: Bye Bye [preauth]
Apr 22 09:57:37 linuxhost1 sshd[15157]: Invalid user william from a.b.c.d
Apr 22 09:57:37 linuxhost1 sshd[15157]: input_userauth_request: invalid user william [preauth]
Apr 22 09:57:37 linuxhost1 sshd[15157]: Received disconnect from a.b.c.d: 11: Bye Bye [preauth]
Apr 22 09:57:37 linuxhost1 sshd[15159]: Invalid user windowserver from a.b.c.d
Apr 22 09:57:37 linuxhost1 sshd[15159]: input_userauth_request: invalid user windowserver [preauth]
Apr 22 09:57:37 linuxhost1 sshd[15159]: Received disconnect from a.b.c.d: 11: Bye Bye [preauth]
这些暴力攻击者是如何被允许输入 a 的username
?
答案1
这些暴力攻击者是如何被允许输入 a 的
username
?
您在命令行上写入用户名(或者默认使用当前用户名)。您始终需要输入用户名。您没有通过此阻止连接(有firewalld
或iptables
为此),而只是密码身份验证。
对于更注重细节的人来说,有RFC4252,第 5 节,它描述了SSH_MSG_USERAUTH_REQUEST
密钥交换之后的消息。它有一个包含请求的用户名的字段。要么通过请求password
身份验证,这将被拒绝,要么使用pubkey
身份验证(也会被拒绝,除非您的密钥被盗)或none
(第 5.2 节),这基本上是列出可用方法的请求(并且应该是第一个尝试的方法)。
答案2
公钥认证是每个用户。您需要一个用户名和您的密钥。事实上,您实际上可以使用相同的密钥登录同一服务器上的两个不同用户。
如果您尝试这样做(无论是否有有效密钥),您还会收到“权限被拒绝”的消息,并且错误会显示在服务器日志中。ssh [email protected]
因此,这种行为是有意的,实际上与公钥身份验证本身没有任何关系。