CyberFlow Logo CyberFlow BLOG
Ssh Pentest

Agent Forwarding Riskleri: Siber Güvenlikte Dikkat Edilmesi Gerekenler

✍️ Ahmet BİRKAN 📂 Ssh Pentest

Agent Forwarding özelliğinin riskleri ve korunma yöntemleri hakkında kapsamlı bir rehber.

Agent Forwarding Riskleri: Siber Güvenlikte Dikkat Edilmesi Gerekenler

Siber güvenlik alanında sıkça karşılaşılan Agent Forwarding riskleri, saldırı senaryoları ve korunma yöntemleri üzerine detaylı bilgiler sunan bu yazıda, güvenli bir yapılandırma için en iyi uygulamaları öğrenin.

Giriş ve Konumlandırma

Agent Forwarding, Secure Shell (SSH) protokolü içerisindeki önemli bir özelliktir. Bu özellik, kullanıcıların yerel makinedeki SSH anahtarlarını (private keys) sunucuya kopyalamadan uzak sistemlere bağlanmalarına olanak tanır. Ancak, bu süreçte oluşturulan bir 'soket' üzerinden kritik güvenlik riskleri doğar. Eğer bir saldırgan sunucuda root yetkisine sahip olursa, bu soketi kullanarak kullanıcının kimliğiyle başka sistemlere sızabilir. Bu durum, siber güvenlik alanında önemli bir zafiyet oluşturur ve özellikle sızma testleri, ağ güvenliği ve sunucu yönetimi açısından dikkatle ele alınması gereken bir konu haline gelir.

Agent Forwarding ve Potansiyel Tehditler

Siber güvenlik bağlamında, Agent Forwarding’in bilinçli bir şekilde kullanılması oldukça önemlidir. Saldırganların bu önlemden istifade ederek gelişmiş saldırılar gerçekleştirebileceği gerçeği, sistem yöneticilerini ve siber güvenlik uzmanlarını harekete geçirmelidir. Özellikle bir sızma testi (pentest) senaryosunda, bir saldırının başarılı olabilmesi için birkaç bileşenin bir araya gelmesi şarttır. Saldırganın başarılı bir şekilde kullanıcının kimliğini ele geçirebilmesi için öncelikle sisteme bir şekilde erişim sağlaması ve ardından Agent Forwarding özelliğini kullanarak sistemdeki diğer kaynaklara sızması gerekir.

Saldırı Senaryosu

Agent Forwarding kullanılırken, güvenli olmayan sunuculara bağlanılması "silahı saldırgana doğrultmak" anlamına gelebilir. Yani, bu özelliğin etkinleştirilmesi, siber güvenlik açısında ciddi bir risk taşır. Örneğin, eğer bir yönetici uzak bir sunucuya bağlanarak Agent Forwarding özelliğini devreye almışsa, bu durum bir saldırganın sistemdeki güvenlik açıklarını istismar etmesine olanak tanır. Bu bağlamda, sistem yöneticilerinin /tmp dizininde aktif SSH soketlerini araştırmaları kritik öneme sahiptir. Bu soketler, o an sunucuya bağlı olan yöneticilerin aktif kimliklerini temsil eder.

Risk Yönetimi

Siber güvenlikte risk yönetimi, sistemlerin güvenliğini sağlamak amacıyla bir dizi önlem almayı gerektirir. Agent Forwarding’in risklerini azaltmak için aşağıdaki stratejilerin uygulanması önerilmektedir:

  1. Güvenli Bağlantı Yöntemleri: Modern SSH sürümleri, Agent Forwarding riskine alternatif olarak daha güvenli yöntemler sunmaktadır. Örneğin, ProxyJump ve ProxyCommand gibi yöntemler, anahtarların yerel makinede tutulmasını sağlayarak bağlantı güvenliğini artırır.

  2. Sistem Konfigürasyonu: Kurumsal sunucularda, agent forwarding özelliğinin tamamen devre dışı bırakılması (şu komutla sağlanabilir: AllowAgentForwarding no), yöneticileri daha güvenli alternatif yöntemlere yönlendirir. Bu durum, potansiyel saldırı yüzeyini önemli ölçüde azaltır.

  3. İzleme ve Loglama: Saldırganların erişimlerini tespit edebilmek için sistem üzerinde izleme yöntemleri uygulanmalıdır. Örneğin, /tmp/ssh-* altındaki soket dosyalarına yapılan yetkisiz erişimlerin loglanması (Auditd kullanarak) ve SSH bağlantı taleplerinin kayıt altına alınması (SSH Log Level VERBOSE ile) potansiyel tehditlerin önlenmesine yardımcı olur.

  4. En Az Yetki Prensibi: Kullanıcılara sadece görevlerini yerine getirmeleri için gereken minimum yetkinin verilmesi, sistemin güvenliğinin artırılmasına yardımcı olur. Bu uygulama, olası bir saldırganın etki alanını daraltır.

Sonuç olarak, Agent Forwarding birçok avantaj sağlasa da, beraberinde getirdiği riskler göz ardı edilmemelidir. Siber güvenlik uzmanlarının bu riski anabilmesi ve gerekli önlemleri alması, sistemlerin güvenliğini artırmak adına kritik bir adımdır. Gelecek bölümlerde bu riskleri daha ayrıntılı olarak ele alacak ve çözüm önerileri sunacağız.

Teknik Analiz ve Uygulama

Agent Forwarding Mantığı

SSH Agent Forwarding, kullanıcıların yerel makinedeki SSH anahtarlarını sunucuya kopyalamadan, sunucu üzerinden başka makinelere bağlanmasını sağlayan bir özelliktir. Ancak bu özellik, bir saldırganın sunucu üzerinde root erişimi olduğunu varsayarsak, ciddi bir güvenlik açığı oluşturabilir. Sunucu üzerinde oluşturulan bir soket ile saldırgan, kullanıcı kimlik bilgilerini kullanarak başka sistemlere erişebilir. Bu nedenle, Agent Forwarding etkinleştirildiğinde sunucu ve ağ yapısının dikkatlice değerlendirilmesi gerekmektedir.

Saldırı Bileşenleri

Agent Forwarding güvenliği ihlal edilirse, bu durum aşağıdaki adımlarla gerçekleşir:

  1. Compromise (Kompromitasyon): Saldırganın SSH sunucusunda root yetkisi kazanması.
  2. Hijack (Kaçırma): Yöneticinin SSH_AUTH_SOCK değişkenini kendi oturumuna kopyalaması.
  3. Pivot (Dönüş): Yöneticinin anahtarlarına dokunmadan ağdaki diğer sunuculara giriş yapması.

Bu adımların gerçekleştirilmesi için sistemdeki belirli bileşenlerin bir araya gelmesi önemlidir. Örneğin, erişim sağlayan kullanıcının ssh-agent süreci aktif olmalıdır.

Tetikleyici Bayrak

Agent Forwarding'i etkinleştirmek için -A bayrağı kullanılmaktadır. Bu bayrakla güvenli olmayan sunuculara bağlanmak, siber güvenlik açısında ciddi riskler doğurabilir. Aşağıdaki komut, uzak bir sunucuya Agent Forwarding ile bağlanmayı sağlar:

ssh -A admin@10.0.0.1

Bu komut, uzak sunucuya bağlanırken yerel anahtarların sunucuya yönlendirilmesine olanak tanır.

Soket Avı: Kim İçeride?

Saldırgan, sunucuda aktif olarak çalışan yönetici oturumlarına erişmeyi hedefler. Bu nedenle, ilk adım genellikle /tmp dizininde aktif olan SSH soketlerini aramaktır:

ls -la /tmp/ssh-*

Yukarıdaki komut, sistemdeki aktif SSH ajanı soketlerini listeleyecektir.

Risk Senaryosu

Agent Forwarding'in neden olduğu zincirleme saldırı etkisini anlamak kritik bir öneme sahiptir. Örneğin, bir sistem yöneticisi sunucuya root olarak bağlandığında, yukarıda belirtilen komutları kullanarak aktif soketleri bulduğunda buna dikkat etmelidir. Eğer sokete erişirse, export komutunu kullanarak bu soketi kendi oturumuna aktarabilir:

export SSH_AUTH_SOCK=/tmp/ssh-xyz/agent.123

Artık yöneticinin sahip olduğu anahtarlarla işlem yapabilir. Bu durum, yetkisiz erişim sağlamayı mümkün kılar.

Kritik Çevresel Değişken

Agent Forwarding için kullanılan soket, sistem üzerinde bir çevre değişkeni olan SSH_AUTH_SOCK altında tutulur. Saldırganın bu değişkeni bilgisi dışında kopyalaması, yetkisiz erişimin önünü açmaktadır.

Kimlik Hırsızlığı: Soketi Kullanma

Saldırgan, çalınan bu soketi kullanarak yöneticinin kimliğini taklit edebilir. Bu tür kimlik hırsızlığı saldırılarına "Agent Hijacking" denir. Bu durumun önüne geçebilmek için sistem yöneticilerinin, Agent Forwarding özelliğini etkin bir şekilde denetlemesi ve güvenlik politikalarını gözden geçirmesi gerekmektedir.

Agent Forwarding vs ProxyJump

Güvenli alternatifler olarak, modern SSH sürümleri ProxyJump (veya -J bayrağı) gibi yöntemler sunmaktadır. Bu yöntem, trafiği bir ara sunucu üzerinden geçirerek anahtarın yerelde tutulmasını sağlar. Aşağıdaki komut ile ProxyJump yöntemi kullanılabilir:

ssh -J proxyUser@proxyHost targetUser@targetHost

Bu yöntem, Agent Forwarding'in getirdiği risklerin azaltılmasını sağlayarak, sistem güvenliğini artırmaktadır.

Hardening: Sunucu Tarafı Engelleme

Kurumsal bir sunucuda bu riski kökten çözmek için yapılandırma dosyasında AllowAgentForwarding özelliğinin tamamen kapatılması önerilmektedir. Bu ayar, yöneticileri daha güvenli olan ProxyJump yöntemine zorlar. Örneğin, aşağıdaki satırlar, SSH yapılandırma dosyasına eklenmelidir:

AllowAgentForwarding no

Bu ayar, sunucu üzerindeki kullanıcıların Agent Forwarding özelliğini kullanmalarını engelleyerek güvenliği artırır.

Güvenlik Duvarı ve İzleme

Sadece özelliği kapatmak yeterli değildir. Şüpheli ajans hareketlerini izlemek ve raporlamak, siber güvenlik pratiği açısından kritik bir öneme sahiptir. Sistem yöneticileri, olası yetkisiz erişimleri tespit etmek için Auditd ve SSH Log Level VERBOSE gibi yöntemleri kullanmalıdır. Böylece, /tmp/ssh-* altındaki soket dosyalarına yapılan yetkisiz erişimleri loglayabilirler.

En Az Yetki Prensibi

Son olarak, güvenlik temellerinin uygulanması açısından en az yetki prensibine riayet edilmesi gerekmektedir. Kullanıcılara yalnızca görevlerini yerine getirebilmeleri için gereken yetkilerin verilmesi, genel güvenlik durumunu iyileştirecektir. Bu yaklaşım, siber güvenlikte gerçekçi bir savunma stratejisidir.

Risk, Yorumlama ve Savunma

Siber güvenlikte risk analizi yapmak, sistemlerin zayıf noktalarını ortaya çıkararak güvenlik önlemlerinin geliştirilmesine yardımcı olur. Agent Forwarding, kullanım kolaylığı sunarken aynı zamanda kritik güvenlik problemleri de yaratabilir. Bu bölümde, Agent Forwarding'in olası risklerini, zayıf yapılandırmalarını ve alınması gereken güvenlik önlemlerini ele alacağız.

Elde Edilen Bulguların Güvenlik Anlamı

Agent Forwarding, kullanıcıların SSH anahtarlarını doğrudan sunucuya kopyalamadan başka makinelerle bağlantı kurmalarına olanak tanır. Ancak, bu işlem çoğu zaman ihmal edilen bir risk taşır. Sunucu üzerinde bir "soket" oluşturulduğunda, bu soket üzerinden başka sistemlere sıçrama imkanı doğar. Eğer bir saldırgan, sunucuda root yetkisine sahipse, daha önceki bağlantıların kimlik bilgileriyle diğer sistemlere erişim sağlayabilir. Bu durumda, bir kullanıcıdan çalınan kimlik bilgileri, tüm ağ ortamında geniş bir sızma imkanı sunar.

Yanlış Yapılandırma veya Zafiyet

Yanlış yapılandırmalara ilişkin en önemli örneklerden biri, sshd_config dosyasında Agent Forwarding'in doğru bir şekilde kapatılmaması durumudur. Aşağıdaki komut ile bu ayarın kapatılması önerilir:

AllowAgentForwarding no

Eğer bu ayar aktif değilse, kullanıcıların bağlantı sırasında Agent Forwarding özelliği kullanılabilir hale gelir. Bu durum, saldırganların soketleri kullanarak yetkisiz erişimler gerçekleştirmesine olanak tanır. Örneğin, bir sızma testinde /tmp dizininde aktif olan SSH soketlerini bulmak, yöneticinin kimliğini belirlemek için esastır. Bu soketler, yöneticilere ait olan aktif kimlikleri temsil eder ve saldırganlar tarafından kolaylıkla hedef alınabilir.

Sızan Veri ve Servis Tespiti

Agent Forwarding'i kullanan bir saldırgan, sistemdeki verileri ele geçirmekle kalmaz, aynı zamanda diğer sistemleri de keşfedebilir. Saldırgan, yanlış yapılandırılmış bir ortamda, ilk aşamada SSH_AUTH_SOCK değişkenini çalarak kurbanın SSH anahtarlarına erişebilir. Bu aşamada, saldırı adımları şunlardır:

  1. Compromise: Saldırganın SSH sunucusunda root yetkisi kazanması.
  2. Hijack: Yöneticinin SSH_AUTH_SOCK değişkenini kendi oturumuna kopyalaması.
  3. Pivot: Yöneticinin anahtarlarına dokunmadan ağdaki diğer sunuculara giriş yapması.

Profesyonel Önlemler ve Hardening Önerileri

Agent Forwarding risklerini minimize etmek için aşağıdaki önlemler alınabilir:

  1. Yapılandırma Dosyası İyileştirmesi: sshd_config dosyasında Agent Forwarding özelliğinin kapatılması en önemli adımdır.

  2. Güvenli Alternatif Yöntemler: Modern SSH sürümleri, Agent Forwarding yerine ProxyJump gibi daha güvenli yöntemleri sunmaktadır. ProxyJump, gerekli kimlik bilgilerini yerelde tutarak saldırı yüzeyini azaltır.

  3. İzleme ve Loglama: Agent Forwarding kullanımıyla ilgili tüm aktivitelerin izlenmesi ve loglanması önemlidir. Auditd gibi araçlar, /tmp/ssh-* altındaki soket dosyalarına yönelik yetkisiz erişimleri loglayabilir. Ayrıca, SSH Log Level'i 'VERBOSE' olarak ayarlayarak bağlantı anındaki Agent Forwarding taleplerinin kaydını tutmak da faydalıdır.

  4. En Az Yetki Prensibi: Kullanıcılara sadece işini yapması için gereken minimum yetkilerin verilmesi gerekmektedir. Bu, potansiyel bir saldırganın sistem üzerinde gerçekleştirebileceği eylemleri sınırlamak açısından kritik bir önlemdir.

Sonuç Özeti

Agent Forwarding, kullanım kolaylığı sağlasa da önemli siber güvenlik riskleri barındırmaktadır. Yanlış yapılandırmalar ve zayıf güvenlik önlemleri, saldırganlara sistem üzerinde geniş letki alanları sunabilir. Güvenli alternatif yöntemlerin kullanılması, izleme ve loglama uygulamalarının geliştirilmesi ile birlikte en az yetki prensibinin benimsenmesi, bu risklerin azaltılması adına kritik öneme sahiptir. Siber güvenlik alanında güçlü bir savunma oluşturmak için, bu önlemlerin titizlikle uygulanması gerekmektedir.