行业新闻

    wordpress 虚拟主机 推荐1 Docker容器与虚拟机的区别

    2022-07-14    来源:www.8001717.cn

    文章目录

    容器安全问题的根本原因是容器和宿主机共享内核。如果容器中的某个应用程序使 Linux 内核崩溃,则整个系统可能会崩溃。与虚拟机不同,虚拟机不与主机共享内核,虚拟机崩溃一般不会导致主机崩溃。 1 容器与虚拟机的区别1.1 隔离与共享

    虚拟机通过添加层,输出网卡、内存、cpu等虚拟硬件,然后在其上构建虚拟机。每个虚拟机都有自己的系统内核,容器通过隔离的方式将文件系统、进程、设备、网络等资源隔离(命名空间隔离),进而控制权限、cpu资源等,所以容器不会相互影响。容器不能影响主机。容器与宿主机共享内核、文件系统、硬件等资源。

    1.2 性能和损失

    与虚拟机相比,容器的资源消耗更少。同一主机下,可以创建的容器数量比虚拟机多。但是,虚拟机的安全性略好于容器。对于主机或者其他虚拟机来说,现在想要突破层层是极其困难的。容器和主机共享内核和文件系统等资源,这些资源更有可能影响其他容器和主机。

    差异容器虚拟机

    启动速度

    很快,几秒钟

    慢,几分钟

    跑步表现

    接近原生(直接在内核中运行)

    继续运行,大约损失 50%

    磁盘使用情况

    小,甚至几十KB(根据图像层)

    非常大,在 GB 上

    并发

    一个主机可以启动数百个容器

    多达几十个虚拟机

    隔离

    进程级别

    系统级(更彻底)

    操作系统

    主要支持Linux

    几乎所有

    封装

    只打包项目代码和依赖,共享宿主机内核

    完整的操作系统,与主机隔离

    2 现有安全问题 2.1 自我漏洞

    作为一个应用程序,它的实现会存在代码缺陷。 CVE官方记录历史版本有20多个漏洞。

    黑客常用的攻击手段主要有代码执行、权限提升、信息泄露、权限绕过等。当前版本变化很快,用户最好升级到最新版本

    2.2源码问题

    提供了一个hub,可以让用户上传创建好的镜像供其他用户下载,快速搭建环境wordpress 虚拟主机 推荐,但也带来了一些安全问题,比如以下三种方式:

    3 架构缺陷和安全机制

    其自身的架构和机制可能会导致问题。比如这样的攻击场景,黑客已经控制了宿主机上的一些容器,或者获得了在公有云上建立容器的方法,然后攻击宿主机或者其他容器发起攻击。

    4 安全基线标准

    以下从内核、主机、网络、镜像、容器等六个方面总结了安全基线标准。

    4.1 内核级

    (1)及时更新内核。

    (2)用户(容器内的root权限不是容器外的高权限)。

    (3)(资源的配额和指标),设置CPU、内存、磁盘、IO等资源限制。

    (4)通过启用//GRSEC(控制文件访问)适当的强化系统来增加额外的安全性。

    (5)(权限划分),比如将指定的CPU划分给容器。

    (6)(限制系统调用),限制不必要的系统调用。

    (7)禁止与宿主进程命名空间共享容器命名空间,如宿主网络模式。

    4.2 主机级别

    (1)为容器创建单独的分区,例如在分布式文件系统上。

    (2)只运行必要的服务,尽量避免在容器中运行ssh服务。

    (3)禁止将宿主机上的敏感目录映射到容器中,创建数据卷时需要注意-v。

    (4)审核守护进程、相关文件和目录,防止生成病毒或木马文件。

    (5)设置适当的默认文件描述符数。

    (文件描述符:简称fd,当应用程序请求内核打开/新建文件时wordpress 虚拟主机 推荐,()会返回一个打开/新建文件对应的文件描述符(file)。文件描述符本质上是是一个非负整数,要读写文件,还需要用这个文件描述符来指定要读写的文件。文件描述符是重要的系统资源。但实际情况是内核会有系统级限制和用户级限制,让某个应用进程不会消耗所有文件资源,可以使用-n查看)

    (6)具有root权限的用户应具有644或更低的访问权限。

    (7)定期检查每台主机的容器库存,清理不必要的容器。

    4.3 网络级别

    (1)通过设置规则来禁止或允许容器之间的网络流量。

    (2)允许修改。

    (3)禁止绑定到其他IP/Port或Unix。

    (4)禁止在容器上映射特权端口。

    (5)容器上只打开需要的端口。

    (6)在容器上禁用主机网络模式。

    (7)如果主机有多个网卡,则将容器的传入流量绑定到特定的主机网卡。

    4.4 级图像

    (1)创建本地镜像仓库服务器。

    (2)图中软件为最新版本,建议根据实际情况使用对应版本,业务稳定性优先。

    (3)使用受信任的图像文件并通过安全通道下载。

    (4)重建镜像而不是修补容器和镜像,销毁异常容器并重建。

    (5)合理管理图片标签,及时移除不再使用的图片。

    (6)使用镜像扫描。

    (7)带有图片的签名。

    4.5 容器级别

    (1)最小化容器,最小化操作系统镜像集。

    (2)容器作为单个主进程运行。

    (3)标签禁止使用特权容器。

    (4)禁止在容器上运行ssh服务,尝试使用exec进入容器。

    (5)以只读方式挂载容器的根目录系统wordpress做网站,-v宿主目录:容器目录:ro.

    (6)明确定义属于容器的数据盘符。

    (7)通过设置on-来限制容器尝试重启的次数,如果容器反复重启很容易丢失数据,-=on-:3。

    (8)限制容器中可用的进程数,运行-m限制内存使用防止fork炸弹。(fork炸弹,快速增长的子进程,耗尽系统进程数)

    4.6 其他设置

    (1)定期对主机系统和容器进行安全审计。

    (2)以最少的资源和权限运行容器是容器安全的核心思想。

    (3)避免在同一主机上部署大量容器,保持数量可控。

    (4)监控容器使用情况、性能和其他指标,例如。

    (5)增加实时威胁检测和事件报警响应功能,如.

    (6)使用中央和远程的日志收集服务,比如ELK。

    5 与容器相关的常见安全配置方法5.1 - 规则设置5.1.1 容器最小化

    如果容器中仅运行必要的服务,则无法轻松启动 SSH 等服务连接到容器。通常使用以下方法进入容器。

    docker exec -it 容器id bash
    

    5.1.2 远程 API 访问控制

    远程调用API接口存在未授权访问漏洞

    ,至少应该限制外网访问。建议使用访问方式。

    监控内网ip,启动方法如下。

    1.在服务配置文件中指定监控内网ip

    docker -d -H uninx:///var/run/docker.sock -H tcp://192.168.16.16:2375
    或者
    vim /usr/lib/systemd/system/docker.service
    #开放本地监听地址和端口
    ------13行-------修改
    ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://192.168.16.16:2375
    

    2.重启

    systemctl daemon-reload    #加载
    systemctl restart docker   #重启
    netstat -natp | grep 2375
    systemctl start firewalld
    #客户端测试操作:连接失败
    docker -H tcp://192.168.16.16 images
    

    3.对主机做IP访问控制,是客户端地址

    firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.16.18" port protocol="tcp" port="2375" accept"
    firewall-cmd --reload
    或
    iptables -t filter -A INPUT -s 192.168.16.18 -p tcp --dport 2375 -j ACCEPT
    

    4.客户端操作中的远程授权访问

    docker -H tcp://192.168.16.16 images
    docker -H tcp://192.168.16.16 images pull soscscs/myapp:v1
    

    5.2 限制流量

    使用防火墙过滤器限制容器的源IP地址范围与外界通信。

    firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.16.0/24" reject"
    iptables -t filter -A INPUT -s 192.168.16.0/24 -j ACCEPT
    docker -H tcp://192.168.16.16 images
    

    生产环境中的大量问题是由容器端口对外释放引起的漏洞引起的。除了操作系统账号权限控制的问题,在进程管理上也存在隐患。

    目前常用的版本都支持管理主机,一旦启动进程用-p:的端口映射,

    会直接添加对应的Chain和-jwordpress建站,默认的DROP规则是在INPUT链中做的,所以没有限制,

    这会带来严重的安全风险。

    因此建议:

    1.不要在有外网ip的机器上使用该服务

    2.使用k8s等编排系统管理容器

    3.在宿主机上,在启动命令中加个--=false,然后把常用的文件写入文件,再用--重定向刷新规则。

    5.3 图像安全

    镜像安全扫描,在镜像仓库客户端使用证书认证查看下载的镜像。

    通过与CVE数据库同步扫描镜像,一旦发现漏洞,会通知用户处理,或者直接阻止镜像继续构建。

    如果公司使用自己的镜像源,可以跳过这一步;否则,至少还需要验证md5等特征值,并确认一致后再基于...进行进一步构建。

    一般来说,确保只从受信任的仓库获取图片,不推荐使用 ---=[] 参数,推荐使用私有仓库。

    客户端与客户端之间的通信安全

    为了防止链接劫持、会话劫持等造成的中间人攻击,c/s两端应通过TLS加密进行通信

    通过在服务器上创建TLS密钥证书并发送给客户端,客户端通过私钥访问容器,从而保证了通信的安全性。

    使用证书访问的工作流程:

    文章来自互联网,侵权请联系删除,文章阐述观点来自文章出处,并不代表本站观点。 www.8001717.cn



X