Windows-Server-2008

winlogon / LogonUI 的周期性峰值 CPU 使用率

  • July 21, 2015

我注意到我的 AWS 伺服器偶爾會無緣無故開始使用一堆 CPU,看起來像這樣:

在此處輸入圖像描述

觀察它不是在特定時間發生,而是有一個非常明確的模式。它持續不到一個小時。

在這種情況下遠端連接到機器總是會使其停止發生。讓帳戶永久登錄允許我擷取更細粒度的 CPU 使用跟踪。它看起來像這樣:

在此處輸入圖像描述

這是正確的; 實際消耗該 CPU 的程序不在列表中。相反,它們總是出現和消失。ProcMon 顯然是完成這項工作的工具,所以我擷取了一個踪跡。這是我發現的:

在此處輸入圖像描述

還涉及 Postgres:

在此處輸入圖像描述

然而所有的 CPU 使用都是由 Winlogon/LogonUI/etc 引起的:

在此處輸入圖像描述

以下是此事件期間程序啟動和停止事件的簡短摘錄:

在此處輸入圖像描述

請注意,postgres 不會與 smss/winlogon/etc 的每次啟動/停止交錯,而只是其中一些。

任何想法為什麼會發生這種情況,以及如何防止它?

問題是有人在暴力破解我的 RDP 登錄。第二個問題是網路級別的身份驗證被禁用,使得每次登錄嘗試的 CPU 成本都相對較高。

解決方案是將 RDP 埠從 3389 更改為停止暴力攻擊,並啟用網路級身份驗證以降低登錄嘗試的 CPU 成本。

提示 #1,來自 syneticon-dj:檢查事件日誌。這些峰值與許多登錄失敗相關,嘗試使用“john”、“admin”、“test”等使用者名,每個使用者名都有大約 3-5 個不同的密碼。他們相隔3-4秒到達。

提示 #2,來自 Olivier S:此伺服器作為 Amazon EC2 實例,需要 RDP。真正的問題是,預設情況下, EC2 機器出於某種原因**禁用了 Network Level Authentication 。**這意味著每次有人想嘗試輸入密碼時,都會啟動整個登錄 UI,只是為了向他們展示一個漂亮的遠端桌面會話。這就是導致所有 CPU 使用率的原因。

對於 postgres 部分,這是因為 postgres 為每個會話創建一個程序 - 而不是執行緒。這在 Windows 上相當昂貴(但在 unix 系統上相當有效)。

Winlogon / LogonUi 部分這很奇怪。伺服器可以遠端訪問嗎?網路上是否有網路掃描器會嘗試打開伺服器上的埠 3389 並因此跨越一個 rdp 會話,這將解釋 smss / winlogon / logonui 序列?我想到了網路掃描器,因為會話立即關閉。

所以我對賞金的猜測:你有一個 nmap 程序或一些“網路發現”工具來掃描你的網路上的埠,或者你的伺服器在埠 3389 (可能是 5432 )上沒有防火牆對網際網路開放。

引用自:https://serverfault.com/questions/360834