You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Linux服务器出现大量重复SSH连接,疑似入侵?求排查方法

关于异常SSH连接的入侵判定与排查方案

首先可以明确:这绝对属于高度可疑的入侵行为。已经被禁用的用户还能持续发起SSH连接,进程被杀死后立刻重建,完全不符合正常系统操作逻辑,大概率是攻击者已经在你的服务器上留下了持久化恶意程序,或者利用了某种SSH相关的漏洞来维持访问。

下面是一步步的排查和处置方案:

一、先做紧急止损,切断异常连接

  • 临时封禁该用户的SSH访问:编辑/etc/ssh/sshd_config,添加一行DenyUsers user_name,保存后重启SSH服务:systemctl restart sshd(CentOS/RHEL、Debian/Ubuntu通用)。这样能先阻止新的连接从该用户发起。
  • 定位连接来源IP:用ss -tunp | grep sshd命令查看所有SSH连接的进程信息,找到对应user_name的远程IP地址,然后用iptables临时封禁这个IP:iptables -A INPUT -s 可疑IP -j DROP,防止它继续发起请求。

二、排查恶意进程与持久化手段

  1. 追踪进程父链:执行ps auxf | grep sshd,这个命令会以树形结构显示进程关系。你要找那些异常sshd进程的父进程(PPID列),如果父进程不是系统正常的sshd主进程(通常是root运行的、监听22端口的那个),而是某个陌生进程,那这个父进程就是你要重点排查的恶意程序。找到后直接杀死它,再看异常连接是否还会重建。
  2. 检查定时任务:攻击者常用定时任务来实现持久化。先查该用户的定时任务:crontab -u user_name -l,再检查系统级的定时任务目录:ls -la /etc/cron.d/ls -la /etc/cron.hourly/等,看看有没有陌生的脚本文件,尤其是那些定时执行的、用来重启恶意连接的脚本。
  3. 检查登录自动执行脚本:即使用户被禁用,其家目录下的启动脚本可能还会被触发。查看/home/user_name/.bashrc/home/user_name/.bash_profile这些文件,有没有被添加恶意代码。另外,系统级的/etc/profile/etc/bashrc也要检查。
  4. 检查SSH授权密钥:虽然用户被禁用,但如果/home/user_name/.ssh/authorized_keys里有攻击者的公钥,可能存在某种绕过登录限制的情况,先删除这个文件里的异常条目。

三、通过日志定位攻击细节

  • 查看SSH认证日志:CentOS/RHEL是/var/log/secure,Debian/Ubuntu是/var/log/auth.log,用grep user_name /var/log/secure(对应系统选日志文件)搜索该用户的相关记录,看有没有成功登录的记录、连接来源IP、登录尝试的时间规律,这些能帮你判断攻击者是怎么进来的。
  • 查看系统日志:/var/log/messages(CentOS)或/var/log/syslog(Debian),搜索异常进程启动、文件修改的记录,比如有没有陌生程序被频繁启动。

四、彻底清理与系统加固

  • 清理恶意程序:如果找到了恶意脚本或可执行文件,比如/tmp目录下的陌生文件,直接删除(rm -f 恶意文件路径),然后用pkill -u user_name杀死该用户的所有进程。
  • 检查隐藏恶意文件:用find / -name "*.sh" -type f -mtime -7搜索最近7天修改的脚本文件,看看有没有陌生的;或者用ls -la /tmp查看临时目录里的可疑文件。
  • 加固SSH服务:
    • 修改SSH默认端口为非22端口
    • 禁用密码登录,只允许密钥登录(PasswordAuthentication no
    • 禁用root用户SSH登录(PermitRootLogin no
    • 限制可SSH登录的用户(AllowUsers 你的正常用户名
    • 安装Fail2ban来自动封禁暴力破解的IP

内容的提问来源于stack exchange,提问作者Dragan Matic

火山引擎 最新活动