SSH 被无 shell 的用户攻破

SSH 被无 shell 的用户攻破

我认为我的 Ubuntu 盒子被入侵了,黑客试图用我的电脑发送垃圾邮件(通过端口 25)。

部分内容/var/log/auth.log提取如下(我把实际用户改为,myuser并将一些外部IP地址改为1.2.3.x):

Feb 20 06:07:12 ubuntu systemd-logind[954]: New session 77 of user myuser.
Feb 20 06:08:22 ubuntu sshd[21251]: error: connect_to 1.2.3.4 port 25: failed.
Feb 20 06:08:22 ubuntu sshd[21251]: error: connect_to 1.2.3.5 port 25: failed.
Feb 20 06:08:22 ubuntu sshd[21251]: error: connect_to 1.2.3.5 port 25: failed.
Feb 20 06:08:22 ubuntu sshd[21251]: error: connect_to 1.2.3.6 port 25: failed.
...(thousands of similar lines follows)...

由于错误信息是由 生成的sshd,我推测黑客是通过 以 身份登录 SSH 来获取访问权限的myuser。 其在 中的相应记录/etc/passwd如下:

myuser:x:1003:1004:myuser:/home/myuser:/bin/false

我猜想黑客应该无法以 的shell 身份登录,myuser也就是说/bin/false,即使他可以登录,也应该立即被踢出。我myuser也无法通过 PuTTY 登录。我自己登录的登录记录如下:

Feb 22 10:26:58 ubuntu sshd[3653]: pam_unix(sshd:session): session opened for user myuser by (uid=0)
Feb 22 10:26:58 ubuntu systemd-logind[734]: New session 2 of user myuser.
Feb 22 10:26:58 ubuntu sshd[3653]: pam_unix(sshd:session): session closed for user myuser

所以,显然我的设置有问题,并且/或者在文件/bin/false中不起作用/etc/passwd。我当前的设置有什么问题,我应该如何修复漏洞?

答案1

commandline.ninja 中有关 /bin/false、/sbin/nologin 和 SSH 的文章似乎回答了你的问题。

##执行摘要

黑客可以绕过使用/bin/false作为该用户 shell 的保护转发端口通过ssh以下命令:

[user@panel~] ssh -N [email protected] -L 2525:127.0.0.1:25

##临时修复

###禁用端口转发

如果在您的场景中可能的话,最简单和最彻底的方法就是在配置文件中禁用 TCP 端口转发sshd/etc/ssh/sshd_config在许多系统上):

AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no

###阻止用户帐户/密码

  • 编辑/etc/shadow并设置用户密码为*
  • 确认您的系统中不存在该用户的 SSH 密钥。

影子密码 加密*密码为 意味着/etc/shadow账户被锁定,用户将无法通过密码验证登录但其他方法(例如 SSH 密钥)可能仍被允许


更多信息请访问commandline.ninja 关于 /bin/false、/sbin/nologin 和 SSH

相关内容