Ineverleft

什么是 docker 远程未授权

分享
  • Andrew 2 CISP-PTE CISM-WSE
    Andrew2 CISP-PTE CISM-WSE

    Docker Remote API 是一个取代远程命令行界面(rcli)的REST API。Docker Remote API如配置不当可导致未授权访问,攻击者利用 docker client 或者 http 直接请求就可以访问这个 API,可能导致敏感信息泄露,黑客也可以删除Docker上的数据。 攻击者可进一步利用Docker自身特性,直接访问宿主机上的敏感信息,或对敏感文件进行修改,最终完全控制服务器。

    漏洞成因

    1. dockerd -H unix:///var/run/docker. sock -H 0.0. 0.0:2375
    2. docker守护进程监听在0.0.0.0,外网可访问
    3. 没有使用iptable等限制可连接的来源ip。

    漏洞危害及常见的攻击方式

    1.远程对被攻击主机的docker容器进行操作

    docker -H tcp://*.*.*.*:2375 images

    2.远程启动被攻击主机的docker容器,并挂载宿主机的目录,通过容器来修改宿主机的author ized_ keys文件,写入公钥。

    docker H tcp://*.*.*.*:2375 run -it-v /:/mnt imagelD /bin/bash

  • GQQQy 2 风险管理(专业级)RM/PL 高级信息系统项目管理师
    GQQQy2 风险管理(专业级)RM/PL 高级信息系统项目管理师

    DockerRemoteAPI如配置不当可导致未授权访问,攻击者利用dockerclient或者http直接请求就可以访问这个API,可能导致敏感信息泄露,黑客也可以删除Docker上的数据。攻击者可进一步利用Docker自身特性,直接访问宿主机上的敏感信息,或对敏感文件进行修改,最终完全控制服务器。远程启动被攻击主机的docker容器,并挂载宿主机的目录,写入公钥。

    解决docker容器安全问题方法有以下这些:

    • Docker自身安全性改进:在过去容器里的root用户就是主机上的root用户,如果容器受到攻击,或者容器本身含有恶意程序,在容器内就可以直接获取到主机root权限。Docker从1.10版本开始,使用UserNamespace做用户隔离,实现了容器中的root用户映射到主机上的非root用户,从而大大减轻了容器被突破的风险,因此建议尽可能使用最新版Docker。

    • 保障镜像安全:为保障镜像安全,我们可以在私有镜像仓库安装镜像安全扫描组件,对上传的镜像进行检查,通过与CVE数据库对比,一旦发现有漏洞的镜像及时通知用户或阻止非安全镜像继续构建和分发。同时为了确保我们使用的镜像足够安全,在拉取镜像时,要确保只从受信任的镜像仓库拉取,并且与镜像仓库通信一定要使用HTTPS协议。

    • 加强内核安全和管理:宿主机内核尽量安装最新补丁;使用Capabilities划分权限,它实现了系统更细粒度的访问控制;启动容器时一般不建议开启特权模式,如需添加相应的权限可以使用–cap-add参数。

    • 使用安全加固组件:Linux的SELinux、AppArmor、GRSecurity组件都是Docker官方推荐的安全加固组件,这三个组件可以限制一个容器对主机的内核或其他资源的访问控制,目前容器报告里的一些安全漏洞。

    • 资源限制:在生产环境中,建议每个容器都添加相应的资源限制,这样即便应用程序有漏洞,也不会导致主机的资源被耗尽,最大限度降低了安全风险。

    • 使用安全容器:容器有着轻便快速启动的优点,虚拟机有着安全隔离的优点,有没有一种技术可以兼顾两者的优点,做到既轻量又安全呢?答案是有的,那就是安全容器。安全容器与普通容器的主要区别在于,安全容器中的每个容器都运行在一个单独的微型虚拟机中,拥有独立的操作系统和内核,并且有虚拟机般的安全隔离性。

  • 写回答