CyberFlow Logo CyberFlow BLOG
Kritik Servisler

Memcached, Redis ve Docker: Siber Güvenlik Açıdan Önemli Noktalar

✍️ Ahmet BİRKAN 📂 Kritik Servisler

Memcached, Redis ve Docker gibi kritik servislerin siber güvenlik açıkları ve korunma yöntemlerini keşfedin.

Memcached, Redis ve Docker: Siber Güvenlik Açıdan Önemli Noktalar

Bu blog yazısında, Memcached, Redis ve Docker gibi önemli servislerin siber güvenlik zafiyetleri, olası saldırı senaryoları ve korunma önlemleri ele alınmaktadır. Kritik bilgilerin korunması için gereken önlemleri öğrenin.

Giriş ve Konumlandırma

Siber güvenlik, günümüzün veri odaklı dünyasında kritik bir öneme sahiptir. İşletmeler ve bireyler, verilerini koruma altına almak için çeşitli teknolojilere yönelirken, bu teknolojilerin güvenlik açıkları ve potansiyel tehditleri hakkında bilgi sahibi olmaları şarttır. Memcached, Redis ve Docker, yüksek performans ve verimlilik sunan popüler araçlardır; ancak yanlış yapılandırıldıklarında veya güvenlik önlemleri alınmadıklarında ciddi tehlikeler doğurabilirler.

Memcached ve Güvenlik Sorunları

Memcached, verileri RAM üzerinde saklayarak hızlı erişim sağlayan bir önbellekleme sistemidir. Fakat, temel olarak kimlik doğrulama mekanizması içermemesi, onu zafiyetlere açık hale getirir. Özellikle, genel ağa açıldığında potansiyel veri sızıntılarına yol açabilir. 11211 numaralı port, Memcached için varsayılan olarak kullanılır ve bu portun düzgün yapılandırılmaması, siber saldırganların sistemde depolanan hassas yetki bilgilerine ve oturum verilere erişim sağlamalarına yol açabilir.

Özellikle "cachedump" komutu kullanılarak bellekteki anahtarlar görüntülenebilir. Bu komut, saldırganlara sistemin iç işleyişine dair önemli bilgiler sunarak, daha derinlemesine saldırılar gerçekleştirmelerine olanak tanır. Hedef alınan Memcached sunucuları, doğru güvenlik önlemleri alınmadığında, saldırganlar için zengin bir keşif alanı sunar.

Redis ve Yetkisiz Erişim

Benzer şekilde, Redis de bir anahtar-değer veri deposu olarak yaygın olarak kullanılır. Ancak, Redis’in de varsayılan olarak kimlik doğrulaması kapalıdır. Bu durum, yetkisiz erişim imkanı sunarak, saldırganların Remote Code Execution (RCE) yollarına sızmasına kapı aralar. Redis’in standart 6379 numaralı portu, doğru yapılandırılmadığında bir saldırganın sistemde komut çalıştırmasına olanak verebilir.

Redis sunucusuna bağlandığınızda, "INFO" komutunu kullanarak işletim sistemi bilgileri, CPU kullanımı ve veri boyutları hakkında kritik aşamalar elde edebilirsiniz. Modern sürümler, dış erişimi en aza indirmek için bazı koruma mekanizmaları sunsa da bu önlemler her zaman yeterli olmayabilir. Ayrıca, "protected-mode" ayarının kapalı olması da, saldırı vektörlerini genişletebilir.

Docker ve Uygulama Güvenliği

Docker, konteyner teknolojisi ile sanal ortamlar oluşturarak uygulamaları izole etme işlevi sunar. Ancak, Docker API’sinin yanlış bir yapılandırmayla internete açılması, sistem üzerinde tamamlayıcı yetkilere sahip olma riskini beraberinde getirir. Docker API (Remote API), şifresiz olarak kullanıldığında, saldırganlar host makinede root yetkisi kazanabilirler. Bu da, sistemdeki tüm konteyner ve imajların kontrolünü ele geçirme fırsatı doğurur.

Docker’ın sağladığı izolasyon, yanlış yetkilendirme senaryolarında devre dışı kalabilir. Konteyner teknolojileri, yönetim ile ilgili zorlukları kolaylaştırsa da, güvenli olmadığı takdirde kullanıcı ve veri güvenliği için ciddi tehditler oluşturabilir.

Sonuç

Memcached, Redis ve Docker, performans ve verimlilik açısından önemli araçlar olarak ön plana çıkmaktadır. Ancak, bu sistemlerin güvenlik zafiyetleri ve yanlış yapılandırma durumları dikkate alınmadığında, ciddi siber güvenlik tehditleri doğurabilir. Bu yazı, Memcached ve Redis'in temel yapı taşlarını, güvenlik açıklarını ve Docker'ın sunduğu riskleri inceleyerek, okuyucuları bu teknolojilerin nasıl güvenli bir şekilde yapılandırılabileceği konusunda bilgilendirmeyi amaçlamaktadır. Siber güvenlik, sadece bir gereklilik değil, aynı zamanda bu araçların sağladığı avantajlardan en iyi şekilde yararlanma yolunda atılması gereken önemli adımlardan biridir.

Teknik Analiz ve Uygulama

Memcached: Bellekten Veri Sızdırma Keşfi

Siber güvenlik bağlamında, Memcached yüksek hızlı bir önbellek sistemi olarak dikkat çekmektedir. Çok sayıda uygulama için verilerin RAM üzerinde tutulmasına olanak tanıyan Memcached, varsayılan olarak kimlik doğrulaması yapmamaktadır. Bu özellik, sunucudaki port 11211'in açık olması durumunda bir pentesterin, oturum bilgileri (session), veritabanı sorguları ve hassas anahtarları doğrudan çekebilmesine imkan tanır.

Memcached'in hem TCP hem de UDP üzerinden çalışması, onu çeşitli saldırı türlerine maruz bırakabilmektedir. Özellikle iç ağda çalışması planlanan bir servis olan Memcached, yanlış konfigürasyon nedeniyle internete açıldığında ciddi güvenlik açıkları oluşturabilir.

Bellekte hangi anahtarların bulunduğunu görmek, bir saldırı derinliğini artırır. Aşağıdaki komut ile bellek içeriğini listeleyebiliriz:

nmap -p 11211 --script memcached-info --script-args dump=yes target

Bu komut, hedefteki Memcached sunucusunun statik verilerine erişerek, kullanılabilir anahtarları ortaya çıkarır.

Memcached Saldırı Senaryoları

Memcached'de genel olarak görülen saldırı senaryoları arasında bellek içeriğini listeleme (cachedump) ve UDP amplifikasyon saldırıları bulunmaktadır. UDP amplifikasyon, küçük paketlerle devasa trafik oluşturarak hedef sistemi çökertebilen bir DoS saldırısı türüdür.

Memcached Standart Portu

Memcached'in standart portu 11211'dir. Bu port, hem TCP hem de UDP üzerinde dinleyebilir. Portun güvenliği, bu servis için kritik öneme sahiptir.

Redis: Yetkisiz Erişim ve RCE Yolları

Redis, anahtar-değer deposu olarak kullanılan güçlü bir siber güvenlik aracı olmasının yanı sıra, yanlış yapılandırıldığında saldırganların sunucuda tam yetkiyle komut çalıştırmasına (Remote Code Execution, RCE) yol açabilir. Özellikle protected-mode ayarının kapalı olması, dışarıdan önemli bir tehdit oluşturmaktadır.

Redis sunucusuna bağlandığınızda, aşağıdaki komut ile kritik keşif bilgilerini elde edebilirsiniz:

nmap -p 6379 --script redis-info 10.0.0.5

Bu, işletim sistemi sürümü, CPU kullanımı ve veritabanı boyutları gibi önemli verileri gün yüzüne çıkarır.

Redis Güvenlik Mekanizmaları

Modern Redis sürümleri, dışarıdan erişimi engellemek için bazı otomatik korumalar ile gelir. Ancak, bu korumaların etkinliği, yapılandırma sürecinin doğruluğuna bağlıdır. Kimlik doğrulaması etkinleştirilmediği takdirde, kullanıcılar herhangi bir sınırlama olmaksızın veritabanına erişim sağlayabilirler.

Tehlikeli komutlardan bazıları şunlardır:

  • CONFIG SET: Sunucu ayarlarını değiştirerek SSH anahtarı veya webshell yüklemenizi sağlar.
  • FLUSHALL: Veritabanındaki tüm kayıtları saniyeler içinde silerek hizmet kesintisine yol açabilir.

Docker: API Üzerinden Host Ele Geçirme

Docker, konteyner teknolojisi sayesinde uygulamaların izolasyon içinde çalışmasına olanak tanırken, aynı zamanda bir dizi güvenlik riski de taşır. Docker API (Remote API) üzerinden sağlanan uzaktan erişim, eğer güvenlik önlemleri alınmadıysa, bir saldırganın host makinede Root yetkisi kazanmasına yol açabilir.

Docker API'sine erişim sağlandığında, sistemde çalışan tüm konteynerları, imajları ve ağ yapılandırmalarını listelemek mümkündür. Aşağıdaki komut, hedef sistemdeki Docker API sürümünü sorgulamak için kullanılabilir:

nmap -p 2375 --script docker-version 192.168.1.100

Docker güvenliği için TLS sertifikalı bağlantılara izin veren port kullanılması önerilir. Şifreli (TLS destekli) Docker Remote API'nin standart portu 2376'dır. Bu, erişimi daha güvenli hale getirir ve yetkisiz erişimleri önler.

Docker ve Konteyner Riskleri

Konteyner teknolojileri, bir dereceye kadar izolasyon sağlasa da, yanlış yetkilendirme durumlarında bu duvarların aşılması kolaylaşır. Özellikle writable socket izinleri ve unsigned images (doğrulanmamış imajlar) üzerindeki zafiyetler, sistemi ele geçirmek için kullanılabilir.

Sonuç olarak, Memcached, Redis ve Docker gibi sistemleri kullanırken, yapılandırma ve güvenlik önlemlerinde dikkatli olmak zorunludur. Doğru yapılandırma ile bu araçların getirileri maksimum düzeye çıkarılabilirken, yanlış yapılandırmalar ciddi güvenlik açıklarına yol açabilir.

Risk, Yorumlama ve Savunma

Risklerin Değerlendirilmesi

Memcached İle İlgili Riskler

Memcached, varsayılan olarak kimlik doğrulama barındırmayan ve bellek üzerinde veri tutarak yüksek performans sağlamak için kullanılan bir önbellekleme sistemidir. Ancak, bu yapılandırma, yanlışlıkla internete açılan bir Memcached servisi için ciddi güvenlik açıkları oluşturabilir. Örneğin, Memcached servisi üzerindeki 11211 numaralı portun açık olması, bir saldırganın sunucuda tutulan oturum bilgilerini ve hassas verileri kolayca elde etmesine olanak tanır.

Yetersiz yapılandırma ve güvenlik mekanizmalarının eksikliği, Memcached servisinin UDP üzerinden de çalışması nedeniyle amplifikasyon saldırılarına maruz kalmasına yol açar. Bu tür saldırılarda, küçük paketler kullanılarak büyük trafik hacimlerinin oluşturulması hedef alınır. Sonuç olarak, hizmet kesintisine yol açacak şekilde sunucu kaynakları tüketilebilir.

Redis Üzerine Risk Analizi

Redis, anahtar-değer veritabanı olarak güçlü bir sistemdir; ancak, kimlik doğrulaması kapalı olduğunda, tam yetki ile komut çalıştırma (Remote Code Execution - RCE) potansiyeli taşır. Redis servisi portunun (varsayılan 6379) açık olması ve yapılandırmadaki 'protected-mode' ayarının kapalı olması, saldırganların tam erişim kazanması için zemin hazırlar. Örneğin, 'INFO' komutu kullanılarak sistem bilgilerine ulaşılabilir ve potansiyel bir saldırı gerçekleştirilebilir.

Aşağıda Redis üzerinden sistem bilgilerini almak için bir örnek komut verilmiştir:

redis-cli -h <hedef-ip> -p 6379 INFO

Bu komut, hedef sistemin işletim sistemi sürümünü, CPU kullanımı ve mevcut veritabanı boyutlarını içeren kritik bilgileri dökümleyebilir.

Docker Riskleri

Docker, konteyner teknolojisi ile uygulama izolasyonu sağlar; ancak, yanlış yapılandırmalar ve yetkilendirme eksiklikleri ciddi riskler doğurabilir. Docker API'nin (Remote API) şifresiz olarak internete açılması, saldırganların host makinelerde root yetkisi kazanmasına yol açabilir. 'Docker Escape' saldırıları, Docker API'sine erişim sağlandığında başlar. Tüm konteynerlar, imajlar ve ağ yapılandırmaları bu şekilde tespit edilir.

Özellikle, /var/run/docker.sock dosyasının paylaşılması, yazılabilir bir soket üzerinden host sunucunun kontrol edilmesine neden olabilir. Docker API'sine güvenli bağlantılar için TLS sertifikası kullanılması önerilir. Aşağıda, güvenli bir Docker API bağlantısı için örnek yapılandırma verilmiştir:

version: '3'
services:
  myservice:
    image: myimage
    ports:
      - "2376:2376" # TLS destekli bağlantı
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

Önlemler ve Hardening Önerileri

  1. Memcached Güvenlik Önlemleri: Memcached servisini yalnızca iç ağda çalışacak şekilde yapılandırın. Varsayılan olarak gelen 11211 portunu kapatın veya ACL (Erişim Kontrol Listesi) ile sınırlayın. Ayrıca, sadece gerekli olan bellek anahtarlarının dökümünü alın ve denetim günlükleri oluşturun.

  2. Redis Hardening: Redis için 'protected-mode' ayarını her zaman açık tutun ve kimlik doğrulaması gerektiren bir şifre belirleyin. Tehlikeli komutların (örneğin CONFIG) ismini değiştirerek erişimi zorlaştırın ve düzenli olarak güvenlik güncellemelerini uygulayın.

  3. Docker Güvenliği: Kullanıcıların Docker API'sine erişimlerini sıkı bir şekilde kontrol edin. Şifreli (TLS destekli) bağlantılar kullanarak yalnızca güvenli bağlantılara izin verin. Kapsayıcıların privilegewright kullanmasını zorunlu kılmayın ve doğrulanmamış imajları almayın.

Sonuç

Memcached, Redis ve Docker gibi sistemler, uygun yapılandırma ve güvenlik önlemleri uygulanmadığında ciddi riskler barındırabilir. Bu sistemlerin yaygın kullanımı, güvenlik açığı oluşturma potansiyelini artırmaktadır. Önerilen önlemlerin uygulanması, olası siber saldırılara karşı koruma sağlamak için kritik öneme sahiptir. Uygulama seviyesinde gerçekleştirilecek bu güvenlik iyileştirmeleri, hem veri güvenliğini sağlamak hem de hizmet sürekliliğini korumak adına gereklidir.