SSH 为没有 shell 的用户入侵

Ken*_*h L 5 ssh security authentication

我认为我的 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)...
Run Code Online (Sandbox Code Playgroud)

由于错误消息是由 生成的sshd,我认为黑客是通过以myuser. 其各自的记录/etc/passwd如下:

myuser:x:1003:1004:myuser:/home/myuser:/bin/false
Run Code Online (Sandbox Code Playgroud)

我想黑客应该无法像myuseris的 shell 那样登录/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
Run Code Online (Sandbox Code Playgroud)

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

Yar*_*ron 5

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

执行摘要

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

[user@panel~] ssh -N testacct@linuxserver.cconn.info -L 2525:127.0.0.1:25
Run Code Online (Sandbox Code Playgroud)

临时修复

禁用端口转发

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

AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no
Run Code Online (Sandbox Code Playgroud)

阻止用户帐户/密码

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

影子口令 具有*如在加密的密码/etc/shadow装置,该帐户被锁定时,用户将无法登录在通过口令认证,但是其它的方法(例如SSH密钥)可以被仍允许


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

  • 我认为您不必在此处包含该博客文章的全文。您已经提供了摘要和有用的部分,将其全部包含在这里是否有任何价值? (2认同)