我有一个在 Windows VirtualBox 下运行的 Linux 服务器。我使用远程控制和公钥登录,并使用 lftp 的 sftp 功能进行文件传输,也使用公钥。
今天当我检查日志文件时,有一些事情让我很困惑:
11 月 28 日 21:39:06 软服务器 sshd[11933]: 从 10.0.2.2 端口 50590 ssh2 接受 myusername 的公钥 11 月 28 日 21:39:06 软服务器 sshd[11933]: pam_unix_session(sshd:session): 会话由 (uid=0) 为用户 myusername 打开
11 月 28 日 21:39:25 软服务器 sshd[11946]: 从 10.0.2.2 端口 13494 ssh2 接受 myusername 的密码
11 月 28 日 21:39:25 软服务器 sshd[11946]: pam_unix_session(sshd:session): 会话由 (uid=0) 为用户 myusername 打开
11 月 28 日 21:39:25 soft-server sshd[11948]: 用户 myusername 发出的 sftp 子系统请求
11 月 28 日 21:40:16 soft-server sshd[11935]: 收到来自 10.0.2.2 的断开连接:11: 用户断开连接
11 月 28 日 21:40:16 soft-server sshd[11933]: pam_unix_session(sshd:session): 用户 myusername 的会话已关闭
我怎么突然要用密码登录了?是不是我自己的操作导致的?
答案1
嗯,这是来自您的 IP 地址的合法 sftp-via-ssh 连接。要么您被键盘记录了,要么(我认为更有可能)您忘记为某些应用程序(如 DreamWeaver)设置了基于密码的 sftp,该应用程序会自动登录到您的虚拟主机以使其文件存储库保持最新。
答案2
这是真正的登录。至于你的问题“你怎么突然可以使用密码登录”,那是因为你根本没有禁用密码验证。
如果您不需要任何用户进行密码验证,则应该PasswordAuthentication
在您的中设置标志sshd_config
,因为no
密码可能被键盘记录或暴力破解。
我个人就是这样做的,如果某一时刻我确实需要密码验证(比如在紧急情况下,我有一台电脑但没有钥匙),我只需通过我的 VPS 控制面板登录并通过 SSLVNC 启用密码验证。
如果确实有一些用户需要通过密码验证,则可以使用Match User
或Match Group
类似方法:
PasswordAuthentication no
Match User passwordauthuser
PasswordAuthentication yes
或者
PasswordAuthentication no
Match Group passwordauth
PasswordAuthentication yes
如果您确实需要密码验证,那么还有另一个选择,那就是我过去做过的事情,即创建一个非常长的、几乎无法猜测的用户名,以减少有人猜到该用户的机会。
例如echo "mysupersecretuser" | sha256sum | sha256sum
。这仍然容易受到键盘记录或剪贴板劫持的影响。但显然可以降低别人猜出你的用户的可能性。
最后,如果您真的很偏执,请检查服务器上所有允许的 SSH 密钥,更改所有公共服务的所有密码和用户。
不过,我相信 Jeff Albert 的说法是正确的,这可能是某个服务的自动登录。如果您不知道是什么服务,则无论如何都应该禁用登录。
了解连接到您服务器的内容是一种很好的做法,以防应用程序被破坏。(内存很容易被读取,您存储的密码也很容易被读取)。
答案3
看起来您已经被黑客入侵了,因为您使用了类似的常见用户名/密码组合对myusername/mypassword
。
你应该
- 尽快将您的密码/用户名更改为类似
mynEwp@$$_2011foobar
- 检查你的 root 密码
- 查看 shell 历史记录/系统日志并检查被黑账户执行了哪些命令
- 重新绑定
sshd
到非默认端口,例如41022
最后一步可以为您提供一定程度的保护,防止自动“蠕虫”和“机器人”的攻击。它们通常只尝试连接到默认端口。
附言:您还可以尝试完全禁用基于密码的身份验证。特别是当您无法物理访问服务器控制台时。