Docker安全管理与HTTPS协议

devtools/2024/12/22 9:24:15/

1 Docker容器安全管理注意事项

Docker本身的架构与机制就可能产生问题,例如这样一种攻击场景,黑客已经控制了宿主机上的一些容器,或者获得了通过在公有云上建立容器的方式,然后对宿主机或其他容器发起攻击。
 

1. 容器之间的局域网攻击 
主机上的容器之间可以构成局域网,因此针对局域网的ARP欺骗、端口扫描、广播风暴等攻击方式便可以用上。
所以,在一个主机上部署多个容器需要合理的配置网络安全,比如设置 iptables 规则。

2. DDoS 攻击耗尽资源 
Cgroups 安全机制就是要防止此类攻击的,不要为单一的容器分配过多的资源即可避免此类问题。

3. 有漏洞的系统调用
Docker 与虚拟机的一个重要的区别就是 Docker 与宿主机共用一个操作系统内核。
一旦宿主内核存在可以越权或者提权漏洞,尽管Docker使用普通用户执行,在容器被入侵时,攻击者还可以利用内核漏洞跳到宿主机做更多的事情。

4. 共享root用户权限
如果以 root 用户权限运行容器docker run --privileged),容器内的 root 用户也就拥有了宿主机的root权限。

docker容器使用的安全注意点:
尽量别做的事:
尽量不用 --privileged 运行容器(授权容器root用户拥有宿主机的root权限)
尽量不用 --network host 运行容器容器共享宿主机的网络命名空间)
尽量不在容器中运行 ssh 服务
尽量不把宿主机的关键敏感目录挂载到容器


尽量要做的事:
尽量使用较小体积的镜像运行容器
尽量以单一应用进程运行容器
尽量从官方仓库中拉取镜像
尽量保证容器中的应用是最新稳定版本
尽量安装使用最新稳定版本的docker程序
尽量以最低权限运行容器
尽量给docker目录(默认/var/lib/docker/)分配独立的文件系统
尽量以资源限制的方式运行容器  -m  --memory-swap   --cpu-quota   --cpuset-cpus   --device-write-bps
尽量以只读的方式挂载宿主机目录到容器数据卷中,持久化容器数据时除外     -v 宿主机目录:容器数据卷目录:ro
尽量设置容器的重启策略和次数   --restart always|on-failure:N


总结:使用最少资源和最小权限运行容器,此为 docker 容器安全的核心思想。

2 HTTPS 证书认证

如何获取证书?
1)从证书颁发机构(CA)如 Let's Encrypt、DigiCert 或云服务商购买或者申请免费证书(免费证书的有限期一般为一年以内)
2)在本地使用 openssl、mkcert、cfssl 等工具生成自签名证书


openssl创建证书的步骤:证书文件和私钥文件
1)创建CA私钥和证书
openssl genrsa -out ca.key 2048                                     #创建CA私钥文件(通常是 .crt 或 .pem 扩展名)
openssl req -new -x509 -days 3650 -key ca.key -out ca.pem           #基于CA私钥创建CA证书文件(通常是 .key 扩展名)

2)创建服务端证书自签名请求文件
openssl genrsa -out server.key 2048                                 #创建服务端私钥文件
openssl req -new -key server.key -out server.csr                    #基于服务端私钥创建服务端证书自签名请求文件

3)创建服务端证书
openssl x509 -req -days 3650 -in server.csr -CA ca.pem -CAkey ca.key  -CAcreateserial -out server.pem    #基于CA私钥、CA证书和服务端证书自签名请求文件签发服务端证书文件

配置nginx支持https
1)安装时需要添加 --with-http_ssl_module 模块(启用SSL功能)
2)修改配置文件,添加ssl配置
    server {
        listen       443 ssl;                     #设置ssl访问端口为 443
        server_name  www.xy101.com;               #设置绑定证书的域名

        ssl_certificate /etc/nginx/ssl/server.pem;          #设置服务端证书文件路径
        ssl_certificate_key /etc/nginx/ssl/server.key;      #设置服务端私钥文件路径

        #其它ssl配置参数
        ssl_session_cache   shared:SSL:1m;                                         #设置ssl缓存
        ssl_session_timeout 5m;                                                    #设置客户端连接可复用ssl缓存的有效时间
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;                                       #设置支持的ssl协议版本
        ssl_ciphers ECDH:AESGCM:HIGH:!RC4:!DH:!MD5:!aNULL:!eNULL;                  #设置支持的加密套件
        ssl_prefer_server_ciphers on;                                              #设置优先使用服务端的加密套件

        ....


http://www.ppmy.cn/devtools/85406.html

相关文章

python-爬虫实例(4):获取b站的章若楠的视频

目录 前言 道路千万条,安全第一条 爬虫不谨慎,亲人两行泪 获取b站的章若楠的视频 一、话不多说,先上代码 二、爬虫四步走 1.UA伪装 2.获取url 3.发送请求 4.获取响应数据进行解析并保存 总结 前言 道路千万条,安全第一条 爬…

数据库实验:SQL Server创建数据库及基本表

一、实验目的: 1、掌握使用SQL SERVER Management Studio工具连接数据库引擎; 2、掌握使用CREATE TABLE 创建基本表的用法; 3、掌握使用ALTER TABLE 修改基本表的用法; 4、掌握使用DROP TABLE删除基本表的用法; 二…

FLINKCDC连接oracle导致归档日志暴增

前言 前段时间再用flinkcdc连接oracle的时候,oracle的归档日志疯狂的飙升,我经常去到归档目录下查看占用的内存情况。。 情况 在使用flinkcdc连接oracle的时候,发现归档日志飙升,查看了很多文档,该配置了都配置了, …

【概率论】第一章:概率论基本概念

文章目录 一. 随机事件与空间样本二. 事件间的关系与事件的运算三. 概率、条件概率、事件独立性与五大公式1. 概率2. 条件概率3. 事件独立性4. 五大公式 四. 古典型、几何型概率、伯努利试验 确定现象:磁极同性相斥 随机现象:在单次实验结果中呈现出不确…

学习笔记12:域名。全球加速,自定义源站,自定义CDN加速

域名。全球加速,自定义源站,自定义CDN加速 域名、全球加速、自定义源站和自定义CDN加速是网络和网站管理中常见的概念,主要用于提高网站访问速度和可靠性。下面我将逐一解释这些术语: 1. 域名(Domain Name&#xff0…

Memcached开发(十三):与其他缓存系统比较

目录 1. Memcached概述 2. Redis 3. Ehcache 4. Hazelcast 5. Couchbase 6. 对比与选择 7. 结论 Memcached是一种高效的内存缓存系统,广泛应用于分布式系统中,以提升数据检索速度,减轻数据库负载。尽管Memcached在许多场景中表现出色&…

【c++】多线程

多线程可以解决什么问题,最重要的用途是什么? 多线程技术在现代软件开发中扮演着至关重要的角色,它可以解决多种问题并带来显著的好处。以下是多线程最重要的几个用途: 资源利用最大化: 多线程可以充分利用多核处理器的能力&…

Linux进程——环境变量之二

文章目录 环境变量查看环境变量获取环境变量main()的第三个参数本地变量全局环境变量内建命令与常规命令 环境变量 查看环境变量 在上一篇文章中我们只说了查看某个环境变量的值,那么如何查看所有的环境变量呢 使用指令env即可 例如 这里我们也不需要全部记住&a…