問題背景
什麼是TCP timestamps(TCP 時間戳)?
The remote host implements TCP Timestamps, as defined by RFC1323 (https://www.ietf.org/rfc/rfc1323.txt). A side effect of this feature is that the uptime of the remote host can be sometimes be computed.
以前,TCP/IP 堆疊使用每個傳送資料視窗的一個示例來計算 RTT 。 計時器 (傳送) 時重新傳輸計時器報告,直到收到確認。TCP 時間戳選項現在可以在堆疊認為 (data 和 ACK) 使用,以執行如下操作:
- RTT computation
- PAWS check
使用TCP 時間戳,可以使用較大的視窗準確計算 RTT。 RTT 用於計算重新傳輸間隔。 要獲得最佳吞吐量,需要準確的 RTT 和重新傳輸時間。
如何來解決呢?
禁用TCP timestamps。
在Linux系統中,在 /etc/sysclt.conf 檔案中新增一行 “net.ipv4.tcp_timestamps=0”, 然後再執行 “sysctl -p”指令把修改的設定附加到執行環境。
To disable TCP timestamps on linux add the line 'net.ipv4.tcp_timestamps=0' to /etc/sysclt.conf. Execute 'sysctl -p' to apply the settings at runtime.
再Windows系統中,執行 "netsh int tcp set global timestamps = disabled "
TO disable TCP timestamps on Windows execute ' netsh int tcp set global timestamps = disabled '
問題描述
在Azure App Service中部署的Web App應用,在進行安全掃描的時候,發現了TCP timestamps的問題,建議Disable TCP Timestamps。但是根據安全描述中提示的指令在App Service的Kudu(https://<yourwebapp>.scm.chinacloudsites.cn/)中執行時,提示Deny。如圖:
問題解答
由於App Service是PaaS服務,使用者沒有許可權禁用TCP Timestamp。在啟用改屬性後它帶來的優點是能提升TCP的效能,它的弱點時被攻擊者計算出系統遠行的時間。
而且,Azure App service實際上是在後端Worker上執行Web App的應用程式碼,而Worker前面有還有前端Front End和負載均衡Load Balancer來轉發請求,所以客戶端請求是不會直接到達Worker的。這也是Azure中PaaS服務的一種通常架構。而且在Azure中的服務天然受到Azure環境的保護。
同時,由於這是一個低等級的漏洞,考慮Web App執行在雲環境中,而且如果禁用後也會影響效能等其他問題,所以它是可以忽略的。
安全性
Azure 採用一系列可靠的安全技術和實踐,幫助確保 Azure 基礎結構能夠應對攻擊,保護使用者對 Azure 環境的訪問,並通過加密通訊、威脅管理和緩解實踐 ( 包括定期滲透測試 ) 來幫助保障客戶資料的安全。
附件一: TCP Timestamps掃描漏洞截圖
參考資料
TCP Windows說明:https://docs.microsoft.com/zh-cn/troubleshoot/windows-server/networking/description-tcp-features#timestamps
Finding and Fixing Vulnerabilities in TCP Timestamps Retrieval , a Low Risk Vulnerability:https://beyondsecurity.com/scan-pentest-network-vulnerabilities-tcp-timestamps-retrieval.html?cn-reloaded=1&cn-reloaded=1
RFC1323 :https://www.ietf.org/rfc/rfc1323.txt
認識 Azure安全性:https://www.trustcenter.cn/zh-cn/security/default.html