我目前正在为我称为sandbox
用户限制进程数量。
我在/etc/security/limits.conf
configuration了进程限制,如下所示:
sandbox hard nproc 100
但是,如果我想连接到容器作为sandbox
用户,ssh返回:
shell request failed on channel 0
所以我以root
身份login,并检查sandbox
用户正在运行多less个进程,但小于5。
那么有什么办法可以阻止我通过SSHlogin?
没有设置限制ssh sandbox
login用户工作正常。
或者有没有其他办法来防止叉炸弹袭击?
连接到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个进程
(免责声明:信息没有在真实机器上检查,待确认)