yandex metrika
Docker Gerçekten Güvenli mi? (Bir Sistem Yöneticisinin Tecrübesi) - Tecrübe Güncesi
Bilgi TeknolojileriGüvenlik

Docker Gerçekten Güvenli mi? (Bir Sistem Yöneticisinin Tecrübesi)

“Docker güvenli mi?” sorusunu bana ilk soran bir müşterimdi. Sunucuya Docker kurmuştum, her şey çalışıyordu ama müşteri “container’dan sunucuya sızmak mümkün mü?” diye sordu. O an cevap veremedim bilmiyordum. Ama bu soru beni araştırmaya itti ve öğrendiklerim hem müşterimi hem kendimi rahatlattı. Kısa cevap: evet, Docker güvenli. Ama “nasıl” kısmı önemli.

Docker’ın Güvenlik Modeli Nedir?

Docker çalışma prensibi olarak process isolation kullanıyor. Yani her container ayrı bir alanda çalışıyor, birbirine karışmıyor. Bunu Linux’un namespace ve cgroups özellikleriyle yapıyor. Basit bir benzetme: aynı apartmanda oturan ama kapıları kilitli, hiçbir şekilde birbirine geçmeyen daireler gibi.

Ama burada önemli bir nüans var: container bir sanal makine (VM) değil. VM’de ayrı bir işletim sistemi çalışır, tam izolasyon vardır. Container ise host’un kernel’ini paylaşır. Yani container ile host arasında tam bir duvar yok ince bir perde var.

Docker container izolasyon yapısı

Container’dan Host’a Sızmak Mümkün mü?

Teorik olarak evet. Pratikte ise çok zor. Ama imkansız değil. Buna “container escape” deniyor ve güvenlik araştırmacıları bunu kanıtlamak için sürekli deniyorlar.

2019’da bir araştırmacı, container’dan host kernel’ine sızmayı başarmıştı. Bu bulgu Docker ekibini harekete geçirdi ve ciddi yamalar yayınlandı. O günden beri container escape oldukça zorlaştı ama sıfırlanmadı hiçbir sistem %100 güvenli değildir.

En Yaygın Docker Güvenlik Hataları

İşin ilginç tarafı, Docker’ın kendisinden çok kullanıcıların yaptığı hatalar güvenlik açığı yaratıyor. Ben de başta bunları yapıyordum:

  • Root olarak container çalıştırmak: Bunu hepimiz yapıyoruz ama yapmamalıyız. Container içinde root iseniz ve bir açık bulunursa, saldırgan host üzerinde de root yetkisine yaklaşabilir. Her zaman dedicated kullanıcı oluşturun.
  • Güvenilmeyen image kullanmak: Docker Hub’da milyonlarca image var ve hangisinin güvenli olduğunu bilemezsiniz. Bir ara popüler bir image’ın arkada madencilik yazılımı çalıştırdığı tespit edildi. Sadece resmi veya doğrulanmış image’ları kullanın.
  • Host dizinlerini container’a bağlamak: Volume mount yaparken tüm root dizinini bağlarsanız, container host’unuzun her yerine erişebilir. Sadece gerekli dizinleri bağlayın.
  • Güncellemeleri atlamak: Docker’ın kendisi de güncellenmeli. Eski sürümlerde bilinen açıklar olabilir.
  • Portları gereksiz açmak: Container portlarını 0.0.0.0’a bağlamak tüm internete açık demek. Sadece gerekli portları, gerekli IP’lere açın.
Docker güvenlik tarama sonuçları

Docker’ı Daha Güvenli Hale Getirmek İçin Ne Yapmalı?

Benim uygulamaya başladığım önlemler bunlar:

1. Rootless Modu Kullanın

Docker’ı root yetkisi olmadan çalıştırabilirsiniz. Buna “rootless mode” diyorlar. Host üzerinde root gerektirmediği için container escape riski ciddi azalıyor. Ubuntu’da kurulumu basit ve ben tüm sunucularıma geçtim.

2. Image’ları Tarayın

Trivy veya Snyk gibi araçlarla image’ları taramayı alışkanlık haline getirin. Ben CI/CD pipeline’ıma Trivy ekledim her deploy’dan önce image’ı tarıyor, güvenlik açığı varsa deploy’u engelliyor. Başta sinir bozucu ama sonra alışıyorsunuz.

3. Read-Only Filesystem

Container’ın dosya sistemini salt okunur yapabilirsiniz. Sadece yazması gereken dizinleri ayrıca mount edin. Bu, saldırgan container’a sızsa bile dosya değiştirememesi anlamına geliyor.

4. Resource Limitleri Koyun

Container’lara CPU ve RAM limiti koyun. Böylece bir container çıldırırsa tüm sunucuyu beraberinde götüremez. Ben her container’a max 2GB RAM ve 1 CPU limiti koydum sunucu stabilitesi inanılmaz arttı.

5. Docker Bench Security Çalıştırın

Docker’ın resmi güvenlik denetim aracı var: Docker Bench for Security. Tek komutla çalışıyor ve size “şu ayarınız yanlış, şunu düzeltin” diye rapor veriyor. Ben ayda bir çalıştırıyorum ve her seferinde bir şeyler öğreniyorum.

Docker mı VM mi Hangisi Daha Güvenli?

Bu soru da sık geliyor. VM daha güçlü izolasyon sağlıyor çünkü gerçek bir kernel ayrımı var. Docker’da ise kernel paylaşılıyor. Ama VM’lerin de kendi güvenlik sorunları var hypervisor escape denen kavram var, o da teorik olarak mümkün.

Bence doğru soru “hangisi daha güvenli?” değil, “ihtiyacım ne?” olmalı. Çoğu web projesi için Docker’ın güvenlik modeli fazlasıyla yeterli. Gizli devlet belgeleri çalıştırmıyorsanız Docker güvenlidir yeter ki doğru yapılandırın.

Sonuç

Docker güvenli mi? Evet, doğru kullanıldığında. Yanlış kullanıldığında her teknoloji gibi tehlikeli olabilir. Ben Docker’ı yüzlerce projede kullandım, bir kez bile güvenlik sorunu yaşamadım ama bunun sebebi şansımın yaver gitmesi değil, temel önlemleri almam.

Unutmayın: en büyük güvenlik açığı teknoloji değil, kullanıcıdır. Docker’ı doğru yapılandırın, image’ları kontrol edin, root kullanmaktan kaçının. Gerisi kendiliğinden geliyor.

Türkay

Teknoloji, bilgisayar güvenliği, WordPress ve yapay zeka konularında içerik üreten Tecrübe Güncesi'nin editörü. Linux sistem yönetimi, ağ güvenliği ve web geliştirme alanlarında yılların getirdiği tecrübeye sahip. 2015'ten bu yana Türkçe teknoloji içerikleri üreterek okuyuculara yol göstermeyi hedefliyor.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir


Başa dön tuşu