2012-05-13 18 views
1

我在Ubuntu 12.04上托管计算服务,我需要一种方法来防止用户攻击。我目前在Linux中使用setrlimit(RLIMIT_NPROC)。但是,这实际上为给定UID的进程数设置了全局限制。由于我的服务具有许多并行作业,所有作业都使用相同的UID运行,这意味着一个进程可以对整个服务进行DOS操作。分叉/子过程的限制数

相反,我正在寻找一种方法来设置限制。当前进程的子进程的递归数量。我被告知要查看linux cgroups/libcgroup但我真的不明白这是如何解决我的问题。有小费吗?

回答

1

互联网说,防止(读:缓解)叉炸弹的唯一方法是设置RLIMIT_NPROC。可能是因为用户标识是附加“至今已分叉的流程”呼叫的唯一实用场所。

建议:您的服务是否在多个uid下运行,并且每个服务的调用都选择一个。那么一个流氓客户端通过分叉轰炸DOS的能力会受到所使用UID数量的限制。

你应该可能需要某种SUID帮助程序来做到这一点,除非服务的顶级进程以root身份运行(通常被认为是一个坏主意)。