winlogon/LogonUI 的 CPU 使用率周期性飙升

winlogon/LogonUI 的 CPU 使用率周期性飙升

我注意到我的 AWS 服务器偶尔会无缘无故地开始使用大量 CPU,如下所示:

在此处输入图片描述

观察发现,它不会在特定时间发生,而是有非常明确的模式。持续时间不到一小时。

在此情况下远程访问计算机必然会阻止这种情况发生。让帐户永久登录让我能够捕获更细粒度的 CPU 使用率跟踪。它看起来像这样:

在此处输入图片描述

没错,实际消耗该 CPU 的进程并不在列表中。相反,它们总是出现和消失。ProcMon 显然是完成这项工作的工具,所以我捕获了一个跟踪。这是我发现的:

在此处输入图片描述

还有Postgres参与:

在此处输入图片描述

但是所有的 CPU 使用率都被 Winlogon/LogonUI/etc 占用了:

在此处输入图片描述

以下是此事件发生期间进程启动和停止事件的简短摘录:

在此处输入图片描述

请注意,postgres 不会与 smss/winlogon/etc 的每次启动/停止交错,而只是与其中一些交错。

知道为什么会发生这种情况吗?如何防止它?

答案1

对于 postgres 部分,这是因为 postgres 为每个会话创建一个进程(而不是线程)。这在 Windows 上成本很高(但在 Unix 系统上效率很高)。

Winlogon / LogonUi 部分这很奇怪。服务器可以远程访问吗?网络上是否有网络扫描器会尝试打开服务器上的端口 3389,从而跨越 rdp 会话,这可以解释 smss / winlogon / logonui 序列?我想到网络扫描器是因为会话会立即关闭。

因此,我对赏金的猜测是:您有一个 nmap 进程或一些“网络发现”工具来扫描您网络上的端口,或者您的服务器在端口 3389(也许是 5432)上没有防火墙地向互联网开放。

答案2

问题在于有人暴力破解了我的 RDP 登录。第二个问题是网络级身份验证被禁用,导致每次登录尝试的 CPU 消耗都比较大。

解决方案是将 RDP 端口从 3389 改为其他端口,以阻止暴力攻击,并启用网络级别的身份验证以减少登录尝试的 CPU 成本。

提示#1,来自 syneticon-dj:检查事件日志。这些峰值与大量登录失败相关,尝试使用“john”、“admin”、“test”等用户名,每个用户名都有大约 3-5 个不同的密码。它们到达的间隔为 3-4 秒。

提示#2来自 Olivier S:此服务器是 Amazon EC2 实例,需要 RDP。真正的问题是默认情况下,EC2 计算机已禁用网络级别身份验证,出于某种原因。这意味着每次有人想尝试输入密码时,整个登录 UI 都会启动,只是为了向他们呈现一个漂亮的远程桌面会话。这就是导致所有 CPU 使用率的原因。

答案3

我发现答案是 15 个人试图在端口 3389 上强制使用我的 RDP。

打开命令提示符并输入netstat -n查找您的 IP:3389,如果有超过 1 个不是您自己的连接,则有人正在尝试进入。

解决 CPU 接近 100% 的问题是将默认值 3389 更改为其他值。

你可以谷歌一下解决方案,端口存储在注册表中

你可能还需要相应地修改防火墙规则

这解决了我的问题并且我恢复了我的 CPU!

相关内容