Cloudflare 和 AWS - 間歇性 525 SSL 握手
我在 Cloudflare 和我們的 AWS EC2 Windows 2016 IIS 之間收到間歇性(大約 0.01% 的請求)525(SSL 握手失敗),使用以管理員身份執行的win-acme安裝了 Let’s Encrypt CA。我們前面是 ReactJs,後面是 .NET Framework 4.7.2。
我嘗試過的事情
- 我瀏覽過 Cloudflare 標準資源:The Community Tip and Debug Docs
- 我已經向 Cloudflare 提出了支持票,他們在握手期間告訴我“由 Peer 重置連接”。
- 我檢查了 IIS 日誌,我可以看到使用者互動成功,但 IIS 沒有記錄任何失敗。
- IIS Failed Request Tracing 已打開,但未顯示任何內容(它沒有達到 IIS)。
- 我已將SCHANNEL 日誌記錄切換為詳細:“HKLM:\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL”值 7 - 我在事件查看器中只看到36880(SSL 協商成功)狀態程式碼。
- 525 的發生與設備、瀏覽器、作業系統、方法或端點(POST 數據和圖像的 GET)無關。所有客戶都在英國地區。
- 儘管大多數故障都是針對 API 的,但我們還在自動化中看到了 Cloudflare 錯誤頁面。
- 我的 CloudFlare SSL 設置是完整(嚴格)、1.2 和 1.3(SSL 3、TLS 1.0 和 1.1 在伺服器上的系統資料庫中已關閉)。
- 我們在伺服器上安裝了可用於 TLS 1.2 的所有密碼,並支持 SNI。
- 伺服器 CPU、Mem、磁碟 I/O 和網路 I/O 在 525 的時候都很低。
- 我們沒有彈性負載均衡器,伺服器直接連接到 AWS 網關。
- 當時沒有其他過程發生(沒有更新檔、證書更新或發布)。
- 我們關閉了速率限制。
- 請求負載非常低,最近的 525(今天早上)我們大約是 50 個請求/分鐘。
- 我在沒有代理的情況下設置了第二個域,使用 AWS Canary 每隔一段時間訪問該站點。截至 2021/06/09 我沒有失敗(說得太早)
我不能輕易做到的事情
- 使用Cloudflare Origin CA證書 - 遷移需要大量的基礎設施自動化更改,因為我們有大量需要單獨指定的多級子域。
- 通過將 Cloudflare IP 添加到將 EC2 實例加入網關的安全組,將 AWS 上的 Cloudflare IP 列入白名單。我需要一個Lambda 函式來使列表保持最新。
我不能做的事情
- 刪除代理(看看它是否消失)。CF 提供我們的 DDoS 保護,我無法將其關閉並保留我們的安全認證。
- 在伺服器上安裝 Wireshark - 這些情況非常間歇性地發生,我會生成大量日誌。我也有變更管理限制,所以我不能在生產伺服器上安裝我喜歡的任何東西。
有什麼我想念的嗎?如果我得到解決方案,我會在這裡發帖以幫助其他人。
解決方案 tldr;
我們在我們的伺服器上使用 ESET File Security 7,它正在創建一個臨時的 IP 黑名單,其中有時包括 Cloudflare 的。我將 Cloudflare IP 添加到IDS 異常中。
細節
Cloudflare 支持工程師(Andronicus - 謝謝!)發現問題在 Cloudflare 內部是間歇性的,並建議尋找任何可以動態阻止 IP 的方法 - 尤其是 Cloudflare 的。由於我們所有的流量都來自 Cloudflare,它可能看起來像是一次攻擊,攻擊域端點的攻擊者也將擁有 Cloudflare IP。
我接受了它並做了更多的閱讀。我們在 AWS EC2 上,所以他們使用的技術是AWS Shield,預設情況下它是打開的,處理洪水而不是我們的低水平。
然後我對伺服器進行了完整的清點。詳細瀏覽了每個應用程序和 Windows 防火牆。我對 Windows 防火牆有豐富的經驗,所以我可以看到沒有任何錯誤配置。
ESET File Security for Windows Server 是一款非常出色的防病毒軟體,尤其適用於殭屍網路入侵檢測。它還有一個稱為網路攻擊保護 (IDS) 的功能,用於掃描可疑的網路流量。其中一部分是“臨時 IP 地址黑名單”。來自 ESET:
查看已被檢測為攻擊源並添加到黑名單中的 IP 地址列表,以在一段時間內阻止連接。顯示已鎖定的 IP 地址。
IP 會在短時間內被添加到黑名單中。通過查看黑名單(它不保留日誌),我發現一些熟悉的 Cloudflare IP 出現了。
我已將Cloudflare IP添加到IDS 例外列表(它允許地址範圍),並向 ESET 提出了一張票,詢問他們我如何使該列表保持最新,因為不能期望 Cloudflare 保持完整的 IP 列表靜態.
如果這對您沒有幫助,請查看我在 Cloudflare Community 上的完整文章。