美文网首页容器安全
日更第29日: 容器安全之配置合适的ulimit

日更第29日: 容器安全之配置合适的ulimit

作者: 微凉哇 | 来源:发表于2021-11-10 00:08 被阅读0次

    描述

    什么是ulimit

    ulimit主要是用来限制进程对资源的使用情况的,它支持各种类型的限制,常用的有:

    • 内核文件的大小限制
    • 进程数据块的大小限制
    • Shell进程创建文件大小限制
    • 可加锁内存大小限制
    • 常驻内存集的大小限制
    • 打开文件句柄数限制
    • 分配堆栈的最大大小限制
    • CPU占用时间限制用户最大可用的进程数限制
    • Shell进程所能使用的最大虚拟内存限制

    隐患分析

    ulimit提供对shell可用资源的控制。设置系统资源控制可以防止资源耗尽带来的问题,如fork炸弹。
    有时候合法的用户和进程也可能过度使用系统资源,导致系统资源耗尽。
    Docker守护程序设置默认ulimit将强制执行所有容器的ulimit
    不需要单独为每个容器设置ulimit。 但默认的ulimit可能在容器运行时被覆盖。
    因此,要控制系统资源,需要自定义默认的ulimit

    审计

    确保含有--default-ulimit参数

    [root@localhost ~]# ps -ef|grep dockerd
    root      65353      1  0 03:02 ?        00:00:00 /usr/bin/dockerd --tlsverify --tlscacert=/root/docker/ca.pem --tlscert=/root/docker/server-cert.pem --tlskey=/root/docker/server-key.pem -H unix:///var/run/docker.sock -H tcp://192.168.235.128:2375
    

    修复建议

    调整参数LimitNOFILELimitNPROC

    $ sed -i "s#LimitNOFILE=infinity#LimitNOFILE=20480:40960#g" /etc/systemd/system/docker.service
    $ sed -i "s#LimitNPROC=infinity#LimitNPROC=1024:2048#g" /etc/systemd/system/docker.service
    

    重启

    $ systemctl daemon-reload
    $ systemctl restart docker
    

    启动一个容器测试

    [root@localhost ~]# docker run -idt --name ddd harbor.wl.com/public/alpine sh
    15eebdabbb8bd59366348ae95a89d79100370b9c9381b070fdfbb0119b516400
    

    查看容器PID

    [root@localhost ~]# ps -ef|grep 15eebdabbb8bd59366348ae95a89d79100370b9c9381b070fdfbb0119b516400|grep -v grep|awk '{print $2}'
    80060
    

    查看limit

    [root@localhost ~]# cat /proc/80060/limits
    Limit                     Soft Limit           Hard Limit           Units
    Max cpu time              unlimited            unlimited            seconds
    Max file size             unlimited            unlimited            bytes
    Max data size             unlimited            unlimited            bytes
    Max stack size            8388608              unlimited            bytes
    Max core file size        unlimited            unlimited            bytes
    Max resident set          unlimited            unlimited            bytes
    Max processes             1024                 2048                 processes
    Max open files            20480                40960                files
    Max locked memory         65536                65536                bytes
    Max address space         unlimited            unlimited            bytes
    Max file locks            unlimited            unlimited            locks
    Max pending signals       3795                 3795                 signals
    Max msgqueue size         819200               819200               bytes
    Max nice priority         0                    0
    Max realtime priority     0                    0
    Max realtime timeout      unlimited            unlimited            us
    

    参考文档

    相关文章

      网友评论

        本文标题:日更第29日: 容器安全之配置合适的ulimit

        本文链接:https://www.haomeiwen.com/subject/stfyaltx.html