Тема
Режим
Язык
Тема
Режим
Язык
Консультация
FREE Бесплатный аудит сайта за 15 мин Заказать →
NEW Остановили 2 млн атак credential stuffing Кейс →
Разборы атак и инструменты Telegram →
70% трафика могут быть ботами Проверить →
SOS Сайт под атакой? Поможем за 30 мин SOS →

Kubernetes: защита от DDoS и настройка безопасности

Как защитить Kubernetes от DDoS: Ingress rate limiting, HPA, Network Policies, Pod Security. Практические примеры YAML конфигов.

Kubernetes даёт автоскейлинг — это и плюс, и минус. HPA масштабирует поды при нагрузке, но атакующий может спровоцировать scale-up и устроить вам счёт от облака на $$$.

В этом гайде: защита K8s кластера на всех уровнях — от edge до pod security.

Без защиты
DDoS → HPA создаёт 100 подов → счёт от облака $10,000+. Ограничьте maxReplicas и настройте rate limiting на Ingress.
01

Уровни защиты

От edge до pod

Защита K8s строится послойно:

  1. Edge — CDN/WAF (Cloudflare)
  2. Ingress Controller — rate limiting
  3. Service Mesh — Istio policies
  4. Network Policies — изоляция подов
  5. Pod Security — ресурсы, security context
02

Ingress Rate Limiting

nginx-ingress annotations
ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: api-ingress
  annotations:
    nginx.ingress.kubernetes.io/limit-rps: "10"
    nginx.ingress.kubernetes.io/limit-connections: "5"
    nginx.ingress.kubernetes.io/limit-burst-multiplier: "5"
    nginx.ingress.kubernetes.io/limit-whitelist: "10.0.0.0/8"
spec:
  ingressClassName: nginx
  rules:
  - host: api.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: api-service
            port:
              number: 80
03

HPA Protection

Защита от cost bomb
hpa.yaml
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: api-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: api
  minReplicas: 2
  maxReplicas: 10  # КРИТИЧНО: не 100!
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 70
  behavior:
    scaleUp:
      stabilizationWindowSeconds: 60
      policies:
      - type: Pods
        value: 2  # Макс +2 пода за раз
        periodSeconds: 60
💡
Совет
Используйте ResourceQuota для ограничения ресурсов на namespace: pods: 50, requests.cpu: 20, requests.memory: 40Gi
04

Network Policies

Deny all by default
deny-all.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: deny-all
  namespace: production
spec:
  podSelector: {}
  policyTypes:
  - Ingress
  - Egress
allow-api.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-api-ingress
spec:
  podSelector:
    matchLabels:
      app: api
  policyTypes:
  - Ingress
  ingress:
  - from:
    - namespaceSelector:
        matchLabels:
          name: ingress-nginx
    ports:
    - protocol: TCP
      port: 8080
05

Pod Security

Security Context
deployment.yaml
spec:
  template:
    spec:
      securityContext:
        runAsNonRoot: true
        runAsUser: 1000
        seccompProfile:
          type: RuntimeDefault
      containers:
      - name: api
        securityContext:
          allowPrivilegeEscalation: false
          readOnlyRootFilesystem: true
          capabilities:
            drop: [ALL]
        resources:
          limits:
            memory: "512Mi"
            cpu: "500m"
        livenessProbe:
          httpGet:
            path: /health
            port: 8080
        readinessProbe:
          httpGet:
            path: /ready
            port: 8080
06

Мониторинг

Prometheus алерты
alerts.yaml
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
  name: ddos-alerts
spec:
  groups:
  - name: ddos
    rules:
    - alert: HighRateLimitHits
      expr: sum(rate(nginx_ingress_controller_requests{status="429"}[5m])) > 100
      for: 2m
      labels:
        severity: warning
    - alert: RapidPodScaling
      expr: delta(kube_deployment_status_replicas[5m]) > 5
      for: 1m
      labels:
        severity: critical
Чек-лист
✓ Ingress rate limiting ✓ HPA с maxReplicas ✓ Resource Quotas ✓ Default deny NetworkPolicy ✓ Pod Security Context ✓ Prometheus алерты на 429 и rapid scaling

Получите план защиты под ваш сайт

Оставьте контакт и адрес сайта — пришлём план защиты и список приоритетных шагов.

  • Приоритетные шаги на 7 дней
  • Быстрая обратная связь
  • План в удобном формате
Без спама. Можно указать Telegram (@username) или email.
Написать в Telegram