Ulaşım
- Adres:Batıkent Mh. 8910 Sk. 6. Etap 1H No: 18 Yeni Toki Eyyübiye / Şanlıurfa (Yeni Alım Satım Karşısı)
- Telefon:0 (545) 528 88 93
- eMail: info@alestaweb.com
Docker container güvenliği (Docker container security) konusunda endişeleriniz mi var? 2025 yılında ortaya çıkan CVE-2025-3224, CVE-2025-13743 ve CVE-2025-9164 güvenlik açıkları (security vulnerabilities) Docker kullanıcılarını alarma geçirdi. Alesta Web olarak bu kapsamlı rehberde Docker security best practices (en iyi güvenlik uygulamalarını), container escape prevention (container kaçış önleme), rootless mode kullanımı ve image security (imaj güvenliği) konularını detaylı anlattık. Production ortamında güvenli Docker deployment (güvenli Docker kurulumu) için mutlaka okumalısınız!
2025 yılında Docker'da kritik güvenlik açıkları (critical security vulnerabilities) tespit edildi. Alesta Web ekibi olarak bu açıkları detaylı inceledik.
# Docker Desktop güvenli versiyon / safe version
Docker Desktop 4.44+ (tüm CVE'ler patch'lenmiş / all CVEs patched)
# Docker Engine güvenli versiyon
Docker Engine 27.0+ (latest security patches)
# NVIDIA Container Toolkit güvenli versiyon
nvidia-container-toolkit 1.17.8+
Hemen kontrol edin (check immediately): docker --version
Alesta Web tavsiyesi: Eğer Docker Desktop 4.44'ten eski versiyon kullanıyorsanız (if using older than 4.44), ACILEN güncelleyin (update IMMEDIATELY)!
# Docker Engine güncelleme / update Docker Engine
sudo apt update && sudo apt upgrade docker-ce
# Docker Desktop güncelleme (macOS/Windows)
# GUI'den "Check for updates" tıklayın
# Host kernel güncelleme (Ubuntu)
sudo apt update && sudo apt upgrade linux-image-generic
Container escape saldırılarından korunmak için (to protect against container escape attacks) kernel'i güncel tutmak kritik (keeping kernel updated is critical).
# ✅ İYİ: Official image (verified)
FROM node:20-alpine
# ❌ KÖTÜ: Bilinmeyen kaynak (unknown source)
FROM random-user/node-custom:latest
# Root kullanıcı ile ÇALIŞTIRMAYIN / DON'T run as root
# ❌ YANLIŞ
USER root
# ✅ DOĞRU: Non-root user oluşturun
FROM node:20-alpine
RUN addgroup -g 1001 -S nodejs && adduser -S nodejs -u 1001
USER nodejs
# Container çalıştırırken / when running container
docker run --user 1001:1001 myapp
Root user ile çalışan container'lar (containers running as root) privilege escalation riski taşır (carry privilege escalation risk).
# Tüm capability'leri kaldırıp sadece gerekeni ekleyin
# Drop all, add only necessary
docker run --cap-drop=ALL --cap-add=NET_BIND_SERVICE nginx
# Örnek: Sadece port 80/443 bind etme yetkisi
# Only permission to bind ports 80/443
alestaweb.com'da Linux capability'leri detaylı rehberimiz var.
# ❌ Dockerfile'da hardcoded secret
ENV DB_PASSWORD=supersecret123
# ❌ Build argument ile secret
ARG API_KEY=my-secret-key
# ❌ Image içinde .env dosyası
COPY .env /app/.env
# Docker Secrets (Swarm mode)
echo "mysecret" | docker secret create db_password -
# Environment variable (runtime)
docker run -e DB_PASSWORD=$DB_PASSWORD myapp
# Docker BuildKit secrets (build time)
docker build --secret id=npmtoken,src=$HOME/.npmrc .
# Custom network oluşturun / create custom network
docker network create --driver bridge secure-network
# Container'ı izole network'e bağlayın
docker run --network secure-network myapp
# Gereksiz port expose etmeyin / don't expose unnecessary ports
# ❌ YANLIŞ: Tüm portları aç
docker run -p 0.0.0.0:3000:3000 myapp
# ✅ DOĞRU: Sadece localhost'ta aç
docker run -p 127.0.0.1:3000:3000 myapp
# Docker Scout ile tarama / scan with Docker Scout
docker scout cve myapp:latest
# Trivy ile detaylı tarama / detailed scan with Trivy
trivy image myapp:latest
# Snyk ile güvenlik açığı kontrolü
snyk container test myapp:latest
Container scanning tools, known vulnerabilities (bilinen güvenlik açıklarını), secrets (gizli bilgileri) ve misconfigurations (yanlış yapılandırmaları) tespit eder.
Container image'ları (container images) en yaygın saldırı vektörüdür (most common attack vector). Alesta Web ekibi olarak image security'yi 3 katmanda inceliyoruz:
# ✅ KÜÇÜK VE GÜVENLİ: Alpine Linux (5MB)
FROM alpine:3.19
# ✅ KÜÇÜK VE GÜVENLİ: Distroless (Node.js için 60MB)
FROM gcr.io/distroless/nodejs20-debian12
# ⚠️ DAHA BÜYÜK: Debian slim (150MB)
FROM debian:12-slim
# ❌ ÇOK BÜYÜK: Ubuntu full (300MB+)
FROM ubuntu:22.04
Küçük image = daha az paket = daha az güvenlik açığı (smaller image = fewer packages = fewer vulnerabilities).
# Build stage (derleme araçları dahil / includes build tools)
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
# Production stage (sadece runtime / only runtime)
FROM node:20-alpine
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
USER node
CMD ["node", "dist/index.js"]
Final image'de sadece runtime gerekli dosyalar (only runtime necessary files) olur, build tools olmaz (no build tools).
# SBOM oluşturma / generate SBOM
docker sbom myapp:latest > sbom.json
# SBOM ile güvenlik kontrolü / security check with SBOM
docker scout cve --sbom sbom.json
SBOM, image'deki tüm component'leri listeler (lists all components in image). Supply chain attacks'e karşı korur (protects against supply chain attacks).
Rootless mode, Docker daemon'u root kullanıcı olmadan çalıştırır (runs Docker daemon without root user). Container escape saldırılarında bile (even in container escape attacks) saldırgan root yetkisi kazanamaz (attacker can't gain root privileges).
# Ubuntu/Debian
sudo apt install -y uidmap dbus-user-session
# Rootless Docker kurulumu (root olarak DEĞIL!)
# Install as regular user (NOT as root!)
curl -fsSL https://get.docker.com/rootless | sh
# PATH'e ekleme / add to PATH
export PATH=$HOME/bin:$PATH
export DOCKER_HOST=unix://$XDG_RUNTIME_DIR/docker.sock
# Systemd ile başlatma / start with systemd
systemctl --user enable docker
systemctl --user start docker
Alesta Web önerisi: Production'da güvenlik önceliksiyse (if security is priority in production), rootless mode kullanın.
Docker daemon API'sini ASLA HTTP üzerinden expose etmeyin (NEVER expose Docker daemon API over HTTP)! Bu, saldırganlara tam kontrol verir (gives attackers full control).
# ASLA YAPMAYIN! / NEVER DO THIS!
dockerd -H tcp://0.0.0.0:2375
Bu ayar, internet üzerinden herkesin Docker daemon'unuza erişmesine izin verir (allows anyone on internet to access your Docker daemon)!
# TLS sertifikaları oluşturun / generate TLS certificates
# (Detaylı adımlar Docker docs'ta)
# Daemon'u TLS ile başlatın / start daemon with TLS
dockerd --tlsverify \
--tlscacert=ca.pem \
--tlscert=server-cert.pem \
--tlskey=server-key.pem \
-H=0.0.0.0:2376
# Client bağlantısı / client connection
docker --tlsverify \
--tlscacert=ca.pem \
--tlscert=cert.pem \
--tlskey=key.pem \
-H=tcp://docker-host:2376 ps
alestaweb.com'da Docker TLS kurulumu detaylı rehberimiz var.
Container'lar çalışırken de güvenlik önemli (security matters while containers run). Alesta Web ekibi olarak runtime security için şu araçları öneriyoruz:
# AppArmor profili ile çalıştırma (Ubuntu)
docker run --security-opt apparmor=docker-default nginx
# SELinux ile çalıştırma (RHEL/CentOS)
docker run --security-opt label=type:container_runtime_t nginx
# Default seccomp profili
docker run --security-opt seccomp=default.json nginx
# Seccomp tamamen kapalı (GÜVENSİZ! / INSECURE!)
# ASLA PRODUCTION'DA KULLANMAYIN
docker run --security-opt seccomp=unconfined nginx
Seccomp, tehlikeli system call'ları engeller (blocks dangerous system calls).
# Container filesystem'i read-only yapın
docker run --read-only --tmpfs /tmp nginx
# Sadece /tmp yazılabilir, geri kalan read-only
# Only /tmp writable, rest is read-only
Saldırgan container'a girerse bile (even if attacker enters container) dosya yazamaz (can't write files).
Bu makalede kullanılan bilgiler aşağıdaki güvenilir kaynaklardan alınmıştır (information used in this article is from the following reliable sources):
Alesta Web olarak tüm güvenlik testlerini izole lab ortamında gerçekleştirdik (we conducted all security tests in isolated lab environment). Production deployment'tan önce mutlaka test edin (always test before production deployment)!
Docker Security 2025 rehberinde (in the guide) en kritik güvenlik açıklarını (most critical vulnerabilities) ve çözümlerini (solutions) öğrendiniz.
Hızlı Özet / Quick Summary:
Faydalı Linkler / Useful Links:
Production'da Docker güvenliği (Docker security in production) konusunda desteğe mi ihtiyacınız var? Alesta Web ekibi size yardımcı olmaya hazır. alestaweb.com'u ziyaret edin!
© 2025 AlestaWeb - Tüm hakları saklıdır.