2012-05-13 23 views
1

我在Ubuntu 12.04上託管計算服務,我需要一種方法來防止用戶攻擊。我目前在Linux中使用setrlimit(RLIMIT_NPROC)。但是,這實際上爲給定UID的進程數設置了全侷限制。由於我的服務具有許多並行作業,所有作業都使用相同的UID運行,這意味着一個進程可以對整個服務進行DOS操作。分叉/子過程的限制數

相反,我正在尋找一種方法來設置限制。當前進程的子進程的遞歸數量。我被告知要查看linux cgroups/libcgroup但我真的不明白這是如何解決我的問題。有小費嗎?

回答

1

互聯網說,防止(讀:緩解)叉炸彈的唯一方法是設置RLIMIT_NPROC。可能是因爲用戶標識是附加「至今已分叉的流程」呼叫的唯一實用場所。

建議:您的服務是否在多個uid下運行,並且每個服務的調用都選擇一個。那麼一個流氓客戶端通過分叉轟炸DOS的能力會受到所使用UID數量的限制。

你應該可能需要某種SUID幫助程序來做到這一點,除非服務的頂級進程以root身份運行(通常被認爲是一個壞主意)。