docker集装箱内防止叉子炸弹

我目前正在为我称为sandbox用户限制进程数量。

我在/etc/security/limits.confconfiguration了进程限制,如下所示:

 sandbox hard nproc 100 

但是,如果我想连接到容器作为sandbox用户,ssh返回:

 shell request failed on channel 0 

所以我以root身份login,并检查sandbox用户正在运行多less个进程,但小于5。

那么有什么办法可以阻止我通过SSHlogin?
没有设置限制ssh sandboxlogin用户工作正常。

或者有没有其他办法来防止叉炸弹袭击?

连接到sshd时的任何错误都会logging到/var/log/auth.log(在基于debian的操作系统中,或在基于redhat的系统中的安全性中)

如果不是,请在/etc/ssh/sshd_config设置LogLevel VERBOSE并重新加载sshd。 这将告诉你为什么sshd拒绝你的连接。

这就是说,回到你的叉式限制器:docker机是基于Linux的容器系统LXC。 LXC正在使用CGROUPS来pipe理每个容器的资源限制。

在/ sys / fs / cgroups中,你可以为正在运行的LXC设置任何限制,在/var/lib/lxc/vmname/config中,你可以设置在启动时执行的限制。

限制cgroup中进程的数量由任务计数器子系统完成 (2011年在Linux内核中添加http://lkml.iu.edu//hypermail/linux/kernel/1109.0/01455.html

使用最近足够的linux内核,通过将这种types的行添加到lxc的configuration文件中来限制cgroup允许的进程数量:

 lxc.cgroup.tasks.limit = 1024 

最多1024个进程

(免责声明:信息没有在真实机器上检查,待确认)