Docker安全管理与HTTPS协议

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

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

  1. 容器之间的局域网攻击

主机上的容器之间可以构成局域网,因此针对局域网的ARP欺骗、端口扫描、广播风暴等攻击方式便可以用上。

所以,在一个主机上部署多个容器需要合理的配置网络安全,比如设置 iptables 规则。

  1. DDoS 攻击耗尽资源

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

  1. 有漏洞的系统调用

Docker 与虚拟机的一个重要的区别就是 Docker 与宿主机共用一个操作系统内核。

一旦宿主内核存在可以越权或者提权漏洞,尽管Docker使用普通用户执行,在容器被入侵时,攻击者还可以利用内核漏洞跳到宿主机做更多的事情。

  1. 共享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; #设置优先使用服务端的加密套件

....

相关推荐
岁月宁静2 小时前
一个 AI 项目从本地到上线,要经过哪些步骤?全流程讲清楚
python·docker·agent
L0208244 小时前
Kubernetes Ingress|CNI 网络模型|Calico 网络策略|Pod 调度器完整实战教程
运维·网络·云原生·容器·kubernetes
安教安全员通关宝5 小时前
2026年吉林安全员C3证考试题库+答案+解析
安全
躺柒5 小时前
读数据安全架构设计与实践17安全架构案例(下)
数据库·安全·零信任·安全架构·防火墙·无边界
HackTwoHub5 小时前
双通道红队 C2,MCP 接入 AI,全自动渗透实战利器,具备自动提权、进程伪装、无文件上线能力,载荷 AES 加密
安全·web安全·网络安全·系统安全·密码学·可信计算技术·安全架构
学页官方5 小时前
【安全实操】教培系统上线前的安全检查清单(20条)
安全
吴声子夜歌6 小时前
Kubernetes权威指南——Kubernetes安装配置指南(网络配置)
网络·容器·kubernetes
闲云野鹤在人间6 小时前
Kubernetes Pod Scheduler 详解
云原生·容器·kubernetes
每天题库6 小时前
西藏安全员 A 证备考真题题库 强化重点知识刷题提升通过率
学习·安全·考试·题库·考证