STP (Spanning Tree Protocol - Spanning Tree Protokolü) Atakları

Eyl 07, 2013

STP (Spanning Tree Protocol - Spanning Tree Protokolü), bir ağda anahtarlayıcılar arasında meydana gelebilecek döngüleri engellemek için kullanılan bir protokoldür. STP, aktif olduğu bir ağda anahtarlayıcılar arasından bir root bridge (kök köprü) seçer ve anahtarlayıcılar arasında döngüye neden olabilecek portları bloklar. Bu sayede STP, anahtarlayıcılardan oluşan ağlarda fiziksel döngü riskini ortadan kaldırır. Ancak STP güvenliğine yeterli önemin gösterilmemesi durumunda STP atakları olabilmekte, sonsuz döngüler ortaya çıkabilmektedir.
En çok bilinen STP tehditleri; kök köprüyü ele geçirmek, STP aktif topolojilerini değiştirmek, STP zamanlayıcılarını değiştirmek, sürekli Topology Change Notification (topoloji değişim uyarı mesajları) oluşturmak şeklinde sıralanabilir.

Atak 1 : Kök Köprüyü Ele Geçirmek

Kök köprüyü ele geçirmek, en yıkıcı STP saldırılarından biridir. Kök köprü seçimi BPDU (Bridge Protocol Data Unit - Köprü Protokolü Veri Birimi), "frame"leri tarafından yapıldığı için; ağa "BPDU frame" üreten bir bilgisayar bağlanıp, bağlanan bilgisayarın ürettiği "BPDU frame"lerinin içindeki “bridge priority” (köprü önceliği) değeri “0” yapılarak ağa bağladığımız bilgisayarın kök köprünün yerini alması sağlanabilir. Böylece tüm ağ trafiği bağlanan bu sahte kök köprü bilgisayarı üzerinden geçer. Ayrıca kök köprünün yerine geçen bu bilgisayarın ağ kablosu sürekli sökülüp takılarak kök köprü seçimi sürekli olarak tekrar başlatılabilir, ağda bağlantı kesintilerine ve performans problemlerine yol açılabilir. Ağa bir anahtarlayıcı gibi davranan bilgisayar yerine normal bir anahtarlayıcı da bağlanabilir, “bridge priority” değeri 0 yapılarak bu anahtarlayıcı kök köprü olarak seçtirilebilir.

Atak 2 : STP Aktif Topolojisini Değiştirmek

Önceden tasarlanmış bir STP topolojisine, uygun BPDU'lar gönderilerek yüksek hızlı hatlar yedek hatlara dönüştürülebilir ve aktif STP topolojisi değiştirilebilir. Önceki atakta da anlatıldığı gibi davetsiz misafir, kolaylıkla yeni aktif topolojinin kök köprüsü olabilir. Aşağıdaki şekilde yedek hatlar ince, yüksek hızlı hatlar kalın çizgilerle; engelli hatlar kırmızı, aktif hatlar yeşil çizgilerle gösterilerek STP aktif topolojisinin değiştirilmesi sırasındaki olaylar adım adım belirtilmiştir.

  1.  Anahtarlayıcı 2 ile 3 arasında yedek hat bulunan ilk topoloji



  2. STP işlemlerinden sonra beklenen aktif topoloji



  3. “priority = 1” değeri ile bir BPDU yollanarak kök köprü olunur.


     
  4. Normal akış trafiği değiştirilerek aktif topoloji yeniden düzenlenmiştir.


Atak 3 : STP Zamanlayıcılarını Değiştirmek

STP zamanlayıcıları olan "Hello", "Max Age" (en uzun bekleme süresi) ve "Forward Delay" (iletim gecikmesi); kök köprü tarafından kontrol edilir ve normal yönetim işlemleri ile değiştirilebilir. Kök köprü ele geçirildikten sonra uygun BPDU’lar gönderilerek kolaylıkla zamanlayıcılar değiştirilebilir. Max Age ve Forward Delay zamanlayıcıları en yüksek değerine (255 saniye), Hello zamanlayıcısı en düşük değerine (1/256) çekilerek olumsuz etkiler gözlenebilir. Örneğin; Max Age=60, Forward Delay=90, Hello Time=2 değerleri kullanılarak ağ servisi beş dakikalık zaman diliminde çöktürülebilir.

Atak 4: Sürekli Topoloji Değişim Mesajları Oluşturmak

Dengeli bir ağ sisteminde dolaşan BPDU’lar sadece kök köprü tarafından gönderilenlerdir. Her ne zaman bir anahtarlayıcı bağlı olduğu ağlardan birinde fiziksel bir hata tespit ederse, root porta TCN (Topology Change Notification - Topoloji Değişim Bildirimi) yollar. TCN mesajları kök köprüye ulaştığında, kök köprü tarafından “Max Age” ve ”Forward Delay” değerlerinin toplamı kadarlık bir zaman dilimi için TC (Topoloji Değişimi - Topology Change) mesajı bütün portlara yönlendirilir. Bu durum ağdaki bütün anahtarlayıcıların topoloji değişiminden haberi olana kadar devam eder. TC mesajını alan anahtarlayıcılar MAC adres tablolarındaki tutarsızlıkları önlemek amacıyla “Forward Delay” değerini kullanırlar.
Önceki ataklarda anlatıldığı gibi kök köprü ele geçirilerek STP zamanlayıcıları istenilen şekilde değiştirilebilir. Burada, “Forward Delay” zamanlayıcısının çok küçük bir değere çekildiği düşünülürse; saldırgan, her “Max Age” ve “Forward Delay” değerlerinin toplamı kadarlık zaman diliminde TCN mesajları göndererek bütün anahtarlayıcılardaki MAC adres tablolarının yaşlandırılmasına neden olabilir. Bu atak, zamanında tespit edilip düzeltilmezse ağda ciddi performans kayıplarına yol açabilir.

Yukarıdaki yıkıcı STP ataklarını engellemek için kullanılabilecek iki basit koruma mekanizması bulunmaktadır:

  • Root Guard (Kök Köprü Koruması)

    Kök köprü, ağın çok önemli ve temel bir parçası olduğundan hiçbir zaman değiştirilmemesi gerekir. Bunun için kök köprü koruması özelliği geliştirilmiştir. Kök köprü koruması, kök köprü üzerindeki portlardan, sadece hattın diğer ucundaki anahtarlayıcıların kök köprü seçilmemesi gerektiğinden emin olunan portlarda etkinleştirilmelidir.




    Şekildeki örnekte, seçilen kök köprünün yalnızca yedek kök köprüye giden portunda koruma açılmamıştır. Kök köprü koruması, eski anahtarlayıcılara bağlanan portlardan, daha düşük “bridge priority” ile kök köprü olmak isteyen bir anahtarlayıcı görürse bu paketi aldığı portu tutarsız port olarak işaretler ve kapatır. Böylece yanlışlıkla bir anahtarlayıcının kök köprü seçilmesi engellenmiş olur.

    Aşağıdaki komutla port bazında kök köprü koruması açılabilir:
    Switch (config-if)# spanning-tree guard root

    Burada dikkat edilmesi gereken nokta, ağ tamamen oturduktan sonra kök köprü korumasını açmaktır. Eğer Spanning Tree işlemi tam olarak bitmediyse, kök köprü koruması bazı problemlere yol açabilir. Bu nedenle kök köprü ve yedek kök köprü seçimi tamamlandıktan sonra bu özelliğin açılması gerekir.

  • BPDU Guard (BPDU Koruması)

    Bilgisayar korsanları "portfast"ın (hızlı port) açık olduğu portlara anahtarlayıcılarını bağlayarak döngüye neden olabilir. Çünkü portfast’in açık olduğu portlarda port, hemen iletim durumuna geçtiğinden bir süre döngü oluşabilir.



    Bu durumu önlemek için "BPDU Guard" isimli bir özellik geliştirilmiştir. BPDU koruması, portfastın açık olduğu portlardan BPDU alınca o portu kapatma işlevi yapar. Böylece kötü amaçlı kişi anahtarlayıcısını ağa bağladığında, bağlandığı port otomatik olarak kapanır.

    BPDU koruması, port bazında aşağıdaki komutla açılabilir:
    Switch (config-if)# spanning-tree bpduguard enable

    Ya da global configuration mode içindeyken aşağıdaki komutla aktif edilebilir:
    Switch (config)# spanning-tree portfast bpduguard default