题 winlogon / LogonUI定期使用尖锐CPU


我注意到我的AWS服务器偶尔会开始使用一堆CPU,没有特别的原因,看起来像这样:

enter image description here

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

在这种情况下远程操作机器将不可避免地使其停止发生。让帐户永久登录后,我可以捕获更精细的CPU使用情况跟踪。它看起来像这样:

enter image description here

那就对了;实际使用该CPU的进程不在列表中。相反,它们一直出现和消失。 ProcMon显然是这项工作的工具,所以我抓住了一条痕迹。这是我发现的:

enter image description here

还有Postgres参与:

enter image description here

但是,所有的CPU使用都来自Winlogon / LogonUI / etc:

enter image description here

以下是此过程中流程启动和停止事件的简短摘录:

enter image description here

请注意,postgres不与smss / winlogon / etc的每个开始/停止交错,但仅与其中一些交错。

任何想法为什么会发生这种情况,以及如何预防?


5
2018-02-16 15:17




您应该检查事件日志中的时间相关事件 - the-wabbit


答案:


对于postgres部分,这是因为postgres为每个会话创建一个进程 - 而不是一个线程。这在Windows上非常昂贵(但在unix系统上相当高效)。

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

所以我对赏金的猜测:你有一个nmap进程或一些“网络发现”工具扫描网络上的端口,或者你的服务器在没有防火墙的情况下在3389端口(也许是5432)上网。


4
2018-02-25 11:35



在这种情况下,什么是“会话” - 与数据库的开放连接? - RomanSt
在postgres的情况下,会话是与数据库的连接。每个远程客户端创建一个进程。 - Olivier S


问题是有人蛮力强迫我的RDP登录。第二个问题是网络级别身份验证被禁用,使每次登录尝试都相对CPU昂贵。

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

提示#1,来自syneticon-dj:检查事件日志。这些峰值与许多登录失败相关,尝试用户名如“john”,“admin”,“test”等,每个用户名约有3-5个不同的密码。他们相隔3-4秒。

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


1
2018-03-15 12:26





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

打开命令提示符并键入 netstat -n 寻找你的IP:3389如果有超过1个连接不是你自己那么有人试图进入。

停止接近100%CPU的解决方案是将默认值3389更改为其他内容。

你可以谷歌解决这个问题,端口存储在注册表中

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

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


0
2017-07-20 22:38



是的,这是我遇到的同样问题,也是同样的问题。我本可以更好地解释一下。确认它的另一种方法是检查事件日志,每个失败的登录都有一个条目。 - RomanSt