https://ethernuno.wordpress.com/2016/01/14/ccnp-switch-300-115-part-2-0-infrastructure-security/
Backbonefast
RLQ (Root Link Query) RLQ non-designated port üzerinde root switch erisimini ping gibi test etmek için kullanılır. Buna karşılık root cihazdan RLQ response paketi gelir.
Usteki Sw Root Switch'tir ve Sw3 de Route portundan surekli olarak erişim testi yapmaktadır. Eger SW3 ile SW1 arasındaki hat giderse o zaman fa0/2 portu hala forwarding konumuna geçmez max age süresini bekler kendisinden daha iyi Bpdu SW1 den geldiğinde Root sw'e giden en iyi yolu seçer ve bağlantısı yeniden gerçekleşir. Cisco cihazlarda bu bekleme süresi defaultta 20 saniye Backbone fast özelliği max_age süresinin dolmasını beklemeden hemen alternatif yol belirleme şeklinde olur. Bu özellik bağlantısı giden cihazın down kalma süresini azaltır.
Switch(config)# spanning-tree backbonefast
komutu ile aktif edilir.
UPLINKFAST
switchlerden birisi uplinklerinden herhangi birinin down olduğunu sezdiği anda spanning tree algoritmasına göre beklenmesi gereken zaman dolmadan hemen diğer uplinkinden paketleri göndermeye başlar. Yani bloklanmış uplink portunun hemen iletime geçmesi sağlanır. Bloklanmış portun hattı dinleyip tekrardan spanning tree bilgileri öğrenmesinini beklemeden paketler buradan gönderirlir. Yani root ile olan bağlantısı koptuğu anda derhal diğer uplinkinden root’a ulaşır. Bu şekilde spanning-tree algoraitmasının o bağlantının down olduğunu anlaması için geçecek olan zamandan kazanç olur. Unutulmamalıdır ki uplinkfast özelliği adından da anlaşılacağı üzere sadece uplink bağlantıları için geçerlidir. Uplinkfast konfigürasyonu aşağıdaki gibidir
Switch(config)# spanning-tree uplinkfast
Bu iki özellikte devreye alındıgında standart STP ile oluşacak gecikmece süreleri ciddi anlamda geri çekilmektedir. Hatta yaptığımız bir testte 2 saniye gibi bir sürede yedek linke geçildiği gözlemlenmiştir. Gerçi bunlarla uğraşmadan bu özellikleri defaultta barındırına RSTP’de kullanılabilir.
----------------------
ROOT PORT: Cihazın hangi porttan ROOT BRIDGE e daha kısa yol ile ulaşabildiğini belirten porttur. COST değeri en düşük porttur.
DESIGNATED PORT: En düşük cost değerini hesaplamak için kullanılan portlardır. Port iletim durumundadır.
NONDESIGNATED PORT: En yüksek değerli cost a sahip portlardır. İletim durumunda değildir.
FORWARDING PORT: Frame leri iletebilen açık portlardır.
BLOCKED PORT: LOOP (döngüyü) engellemek için kapatılan frame iletimi yapmayan ancak fiziksel olarak açık olan portlardır.
ALTERNATE PORT : Bloklanan porttur.
EDGE PORT: Portuna bir host un bağlı olduğu ve manuel tanımlamayla oluşturulabilen portlardır. Kullanım amacı STP yi hızlandırmaktır.
Seçilen ROOT BRIDGE e göre tüm cihazlar root a giden en kısa yolu açık tutmaya çalışır. Bu portu da ROOT PORT olarak atar.
Cost değerinin belirlenmesinde önemli diğer kriter ise bandwithlerdir.
Örnek tabloyu aşağıda inceleyebilirsiniz.
Data rate STP Cost (802.1D-1998) STP Cost (802.1t-2001)
4 Mbit/s 250 5,000,000
10 Mbit/s 100 2,000,000
16 Mbit/s 62 1,250,000
100 Mbit/s 19 200,000
1 Gbit/s 4 20,000
2 Gbit/s 3 10,000
10 Gbit/s 2 2,000
ROOT Bridge Seçimi
Switch3(config)#spanning-tree vlan 1 priority 8192
RSTP
STP nin daha hızlı modelidir. 802.1w networkler olarak ifade edilir.
stp de backup port 50 saniyede düzenlenirken, rstp bu süre 6 sn dir.
STP den farklı olarak Blocking(bloklama) yerine discarding (yok etme) portu kullanılır.
Yine STP deki Listening kullanılmaz.
---
BPDU GUARD:
FA0/6 a bağlı bir pc kullanıcısı dışarıdan ortama bir switch takarsa, fa0/6 listening modda olmadığı için bu noktalarda oluşacak bir LOOP olayını farkedemeyecektir. Bu da tüm networkde LOOP a neden olacak ve network altyapısı çökecektir.
Bu senaryodaki durumu önlemek için BPDU Guard isimli bir özellik geliştirilmiştir. BPDU Guard, kısaca açıklarsak portfast enabled portlardan BPDU alınca o portu kapatma işlevini yapar. Böylece kötü amaçlı kişi switch’ini sizin network ünüze bağladığında bağlandığı port otomatik olarak kapanır.
BPDU Guard’ı port bazında aşağıdaki komutla açabilirsiniz.
Switch(config-if)#spanning-tree bpduguard enable
Ya da, global configuration mode içindeyken bu komutu yazarak aktive edebilirsiniz.
Switch(config)#spanning-tree portfast bpduguard default
ROOT GUARD
Bunun dışında örneğin yanlış konfigüre edilmiş bir switch’in network’e bağlanması sonucu Root Bridge’iniz değişebilir. Ancak Root Bridge, networkün çok temel ve önemli bir parçası olduğundan hiçbir zaman değişmemesini sağlamanız gerekir. Bunun için de Root Guard geliştirilmiştir. Root Guard, yalnızca Root Bridge’de (belki en fazla Backup Root Bridge’de) enable hale getirebilir.
Root Guard, Root Bridge üzerindeki portlardan, sadece hattın diğer ucundaki switchlerin root seçilmemesi gerektiğinden emin olunan portlarda enable duruma getirilir.
Eski switchlere bağlanan portlarından, daha düşük priority ile Root Bridge olmak isteyen bir switch görürse Root Guard, bu pakedi aldığı portu “incostintent port” olarak işaretler ve kapatır. Böylece yanlışlıkla bir switch’in Root Bridge seçilmesini engellenmiş olur.
Aşağıdaki komutla port bazında Root Guard’ı açabilirsiniz.
Switch(config-if)# spanning-tree guard root
BPDU
Stp ortamında Root Olan Bridge ( Switch ) tarafından
her iki saniyde STP ortamına salınan PDU dur.
-> Bunun sayesinde herkes portlarını belirler.
-> Bunun sayesinde herkes Root un kim oldugunu bilir.
-> Bunun sayesinde topology de degişiklik oldugunu diger kişilere söylenir.
-> Bunun sayesinde LOOP bulunup engellenir.
Vesselam BPDU
STP içinde akan KAn gibidir...
Biraz açalım :
Root Switch BPDU yu her 2 saniyede gönderir ( STP De )
Bunu alanlar ise BDPU içindeki kendine ait kısmı değiştirip
Diger arkadaşlarına yolllar.
STP ortamında PORT Rolleri belirlemiştik CCNA de hatırlarsak.
Bunlardan birisi Root PORT diger Designated Port idi.
BUnlar neden Var?
Gerçek datanın akışı için değil tabiki
Root Port dan BPDU Alırız.
DEsignated Port dan BPDU göndeririz.
Onun için Root Switchin Tüm portları DESignated dır.
BPDU Akışı böyle olur.
Yalnız bir şey daha var.
Switch lerin PC lere bakan POrtları DA DESIGNATED PORT dur !
Bu kötü işte.
Yani PC lere gereksiz BPDU göndeririz...
SHOW SPAN INTER FA0X DETAIL -> yaparsanız
SENT BPDU kısmının sürekli arttıgını görürürüz.
Yada PC de Wireshkark çalıştırın. BPDU ları görün.
Hatta bunu cidden yapın. BPDU nun yapısını incelemiş olursunuz
BU iyi bir şey değil.
Yani PC ye BPDU göndermek gereksiz ve zararlı.
Hele PC Den BPDU almak demek,
PC de kötü amaçlı bir yazılım var demektir.
Bu daha da kötüdür.
Kişinin PC sinden BPDU aldıgımızı ve o PC nin ROOT BRIDGE oldugunu düşünün
Bizim BPDU
STP ortamı dışına çıkmasın ve ortam dışından içeri girmesin
diye
BPDUFILTER ve BPDUGUARD geliştirilmiştir...
BpduFilter
============
İki GÖREVİ VARDIR :
a) BU PORTDAN BPDU GÖNDERME !
b) VE EGER Bu PORTDAN BPDU ALIRSAN Ignore et ( Yani girmesini engelle )
Bunu iki türlü enable edebiliriz.
1-) Tüm Switch üzerinde ENABLE edebiliriz.
CONF T
SPANNING-TREE PORTFAST DEFAULT
SPANNING-TREE PORTFAST BPDUFILTER DEFAULT
Burda şu oldu:
Portfast ın enable oldugu tüm portlarda BPDUFilter ENABLE oldu otomatik olarak.
Bu koşullu bir BPDUFILTER eanble etme yöntemidir.
Yani Eger PORT da Portfast enable ise BPDUFILTER enable olur.
Eger Portfast disable olursa o da disable olur.
sh span int fa0x detail ---> ile görebiliriz
BDPU : SENT 2 , RECEIVED 0
SENT - bu sayı artık artmaz. çünkü göndermez.
RECEIVED - bu sayı artabilir. önemli degildir. nasıl olsa ignore edicez.
2-) Bir Interface Altında
CONF T
INT FA0/23
SPANNING-TREE BPDUFILTER ENABLE
Burda ise PORTFAST şartı aranmadan BDPDUFILTER enable olur.
Özetle :
BPDUFILTER ın iki görevi vardır.
1- Bu Portdan BPDU göndermez. Bu özellik çok iyi. Karşıda kötü niyetli PC olabilir
2- Bu Portdan BPDU alınca içeri sokma . Buda iyi görünüyor.
Mesela kötü niyetli PC mizden BPDU aldıgımızı düşünün.
Onu içeri almıcak. Ama biz PC nin bize BPDU gönderdiğini nasıl bilicez.
Öyle ya bir saldırı var. Ve haberimiz yok. Ya interface altındaki
COUNT a bakıcaz. Yada SNMP ile falan ögrencez.
BU ikinci özellikde iyi ama sanki biraz daha iyi olsaymış
Burda devreye BPDUGUARD girer.
BPDUGUARD
============
Bunun bir görevi var sadece :
- BU PORTDAN BPDU ALIRSAN PORTU KAPAT !!!
Bu kadar. Sanki BPDUFILTER in ikinci Özelliğinin biraz daha
gelişmişi gibi ..
Yine iki türlü ENABLE olur.
1 -) Tüm Switch üzerinde
CONF T
SPANNING-TREE PORTFAST DEFAULT
SPANNING-TREE PORTFAST BPDUGUARD DEFAULT
AYnı mantık.
PORTFast ın enable olduğu her portta sende enable ol demektir.
KOşulu budur.
Peki POrtfast disable olursa ne olur ?
BPDUFILTER gibi BPDUGUARD da Disable mı olur ?
Yok bu sefer yemez.
Bir portdan BPDU alırsanız hem POrtfast gider hemde PORTU kapatır
BPDUGUARD !
2 -) Interface üzerinde
CONF T
INT FA0/1
SPANNING-TREE BPDUGUARD ENABLE
Burda yine aynı mantık.
Şart olarak POrtfast olmasına gerek yoktur.
Not : PORTFAST nedir ve nasıl çalışır bilindiğini düşündüm.
Int fa0/19
Switchport port-security
[switchport port-security max 1]
[switchport port-security violation shutdown
[switchport port-security max 1] bunun anlamı şudur :
Port security aktif oldu ve bu port altından sadece 1 MAC ögrenilebilir( Default 1 dir). Tabi istersek biz bu BIR sayısını degiştiririz
Peki bu durumu biraz özelleştirelim. STATIC.
Port altında hangi mac adres/lerinin olabileceğine biz karar verelim.
Switchport port-security mac-address aaaa.bbbb.cccc
Ancak bir sürü PC nin oldugu ortamda bu biraz sıkıntılı olacak. Tek Tek girmek ölüm.
Bi komut gireyim, PC ler çalışınca bunların MAC ını nasıl olsa ögrencek, bunları alıp kendisi STATIC hale getirsin. STICKY.
Switchport port-security mac-address sticky
Peki bu durumlar ihlal olursa NE OLSUN ?
[switchport port-security violation shutdown ]
Ayrıca şunlarıda kullanabiliriz -- anlamlarıyla birlikte yazalım.
PROTECT = Düşük seviye korumadır. Kural Dışı Mac lara izin vermez o kadar.
RESTRICT = Orta seviye korumadır. Kural dışılara izin vermez ve ayrıca bunu admin e bildirir.
SHUTDOWN = Üst seviye korumadır. Port u kapatır. Sebebini de ERR-DISABLE diye görebiliriz.
Eger bu portu tekrar çalışır hale getirmek istersek, port altında “ sh – no sh” yapmamız yeterlidir.
Bu arada MAC TAblosundaki MAC adreslerinin 300 saniye ömürlerinin oldugunu biliyoruz.
Ama port-security ile ögrenilmiş [static, sticky yada dinamik] Mac adresleri için bu durum geçerli degildir.
Edge Port : switch üzerinde access port’lara bağlanan pc ve sunucular STP hesaplamalarında daha hızlı geçiş sağlamak ve pclere gereksiz BPDU paketi gönderimini engellemek için edge port olarak yapılandırılır. Edge port’lardan BPDU paketleri aldığınızda spanning tree yeniden hesaplama yapmak ister(recalculates), bu nedenle network’ünüzde karışıklığa sebep olur ve port üzerinden BPDU paketi gelirse network’ümüzde loop oluşur ve atak alır. BPDU protection fonksiyonu, edge portlar üzerinden BPDU mesajı alınırsa port kapatılarak network’ümüz sağlıklı çalışmaya devam edecektir.
1.port
– max MAC 2
– 1 static MAC (PC1)
– 1 dynamic MAC (PC2)
– 1 violation (PC3)
– violation type shutdown
Switch(config)#inter fastEthernet 0/1
Switch(config-if)#switchport mode access
Switch(config-if)#switchport port-security
Switch(config-if)#switchport port-security maximum 2
Switch(config-if)#switchport port-security mac-address 00E0.B085.4951
Switch(config-if)#switchport port-security mac-address 0003.e445.1485
Switch(config-if)#switchport port-security violation shutdown
2.port
– max MAC 2
– 2 dynamic MAC (PC6,PC7)
– 1 violation (PC8)
– violation type restrict
Switch(config)# interface fastEthernet 0/2
Switch(config-if)# switchport mode access
Switch(config-if)# switchport port-security
Switch(config-if)# switchport port-security maximum 2
Switch(config-if)# switchport port-security mac-address sticky
Switch(config-if)# switchport port-security violation restrict
3.port
– max MAC 1
– 1 static MAC (PC4)
– 2 violation (PC4,PC5)
– violation type shutdown
Switch(config)# inter fastEthernet 0/3
Switch(config-if)# switchport mode access
Switch(config-if)# switchport port-security maximum 1
Switch(config-if)# switchport port-security mac-address 1111.1111.1111
Switch(config-if)# switchport port-security violation shutdown
4.port
– max MAC 1
– 1 dynamic MAC (PC10)
– 1 violation (PC9)
– violation type protect
Switch(config)# inter fastEthernet 0/4
Switch(config-if)# switchport mode access
Switch(config-if)# switchport port-security
Switch(config-if)# switchport port-security maximum 1
Switch(config-if)# switchport port-security mac-address sticky
Switch(config-if)# switchport port-security violation protect
After this Port Security configuration, connect the PC’s one by one.
After this process, you will see that the Port Security configuration on
switch, will avoid the unwanted devices and limit the max number of MAC
addresses as configured.
You can also check the below Port Security verification commands screenshots.
Switch# show port-security
Secure Port MaxSecureAddr CurrentAddr SecurityViolation Security Action
(Count) (Count) (Count)
--------------------------------------------------------------------
Fa0/1 2 2 1 Shutdown
Fa0/2 2 2 1 Restrict
Fa0/3 1 1 1 Shutdown
Fa0/4 1 1 1 Protect
----------------------------------------------------------------------
----------------------
ROOT PORT: Cihazın hangi porttan ROOT BRIDGE e daha kısa yol ile ulaşabildiğini belirten porttur. COST değeri en düşük porttur.
DESIGNATED PORT: En düşük cost değerini hesaplamak için kullanılan portlardır. Port iletim durumundadır.
NONDESIGNATED PORT: En yüksek değerli cost a sahip portlardır. İletim durumunda değildir.
FORWARDING PORT: Frame leri iletebilen açık portlardır.
BLOCKED PORT: LOOP (döngüyü) engellemek için kapatılan frame iletimi yapmayan ancak fiziksel olarak açık olan portlardır.
ALTERNATE PORT : Bloklanan porttur.
EDGE PORT: Portuna bir host un bağlı olduğu ve manuel tanımlamayla oluşturulabilen portlardır. Kullanım amacı STP yi hızlandırmaktır.
Seçilen ROOT BRIDGE e göre tüm cihazlar root a giden en kısa yolu açık tutmaya çalışır. Bu portu da ROOT PORT olarak atar.
Cost değerinin belirlenmesinde önemli diğer kriter ise bandwithlerdir.
Örnek tabloyu aşağıda inceleyebilirsiniz.
Data rate | STP Cost (802.1D-1998) | STP Cost (802.1t-2001) |
---|---|---|
4 Mbit/s | 250 | 5,000,000 |
10 Mbit/s | 100 | 2,000,000 |
16 Mbit/s | 62 | 1,250,000 |
100 Mbit/s | 19 | 200,000 |
1 Gbit/s | 4 | 20,000 |
2 Gbit/s | 3 | 10,000 |
10 Gbit/s | 2 | 2,000 |
ROOT Bridge Seçimi |
Switch3(config)#spanning-tree vlan 1 priority 8192 |
RSTP
STP nin daha hızlı modelidir. 802.1w networkler olarak ifade edilir.
stp de backup port 50 saniyede düzenlenirken, rstp bu süre 6 sn dir.
STP den farklı olarak Blocking(bloklama) yerine discarding (yok etme) portu kullanılır.
Yine STP deki Listening kullanılmaz.
---
BPDU GUARD:
FA0/6 a bağlı bir pc kullanıcısı dışarıdan ortama bir switch takarsa, fa0/6 listening modda olmadığı için bu noktalarda oluşacak bir LOOP olayını farkedemeyecektir. Bu da tüm networkde LOOP a neden olacak ve network altyapısı çökecektir.
Bu senaryodaki durumu önlemek için BPDU Guard isimli bir özellik geliştirilmiştir. BPDU Guard, kısaca açıklarsak portfast enabled portlardan BPDU alınca o portu kapatma işlevini yapar. Böylece kötü amaçlı kişi switch’ini sizin network ünüze bağladığında bağlandığı port otomatik olarak kapanır.
BPDU Guard’ı port bazında aşağıdaki komutla açabilirsiniz.
Switch(config-if)#spanning-tree bpduguard enable
Ya da, global configuration mode içindeyken bu komutu yazarak aktive edebilirsiniz.
Switch(config)#spanning-tree portfast bpduguard default
Bu senaryodaki durumu önlemek için BPDU Guard isimli bir özellik geliştirilmiştir. BPDU Guard, kısaca açıklarsak portfast enabled portlardan BPDU alınca o portu kapatma işlevini yapar. Böylece kötü amaçlı kişi switch’ini sizin network ünüze bağladığında bağlandığı port otomatik olarak kapanır.
BPDU Guard’ı port bazında aşağıdaki komutla açabilirsiniz.
Switch(config-if)#spanning-tree bpduguard enable
Ya da, global configuration mode içindeyken bu komutu yazarak aktive edebilirsiniz.
Switch(config)#spanning-tree portfast bpduguard default
ROOT GUARD
Bunun dışında örneğin yanlış konfigüre edilmiş bir switch’in network’e bağlanması sonucu Root Bridge’iniz değişebilir. Ancak Root Bridge, networkün çok temel ve önemli bir parçası olduğundan hiçbir zaman değişmemesini sağlamanız gerekir. Bunun için de Root Guard geliştirilmiştir. Root Guard, yalnızca Root Bridge’de (belki en fazla Backup Root Bridge’de) enable hale getirebilir.
Root Guard, Root Bridge üzerindeki portlardan, sadece hattın diğer ucundaki switchlerin root seçilmemesi gerektiğinden emin olunan portlarda enable duruma getirilir.
Eski switchlere bağlanan portlarından, daha düşük priority ile Root Bridge olmak isteyen bir switch görürse Root Guard, bu pakedi aldığı portu “incostintent port” olarak işaretler ve kapatır. Böylece yanlışlıkla bir switch’in Root Bridge seçilmesini engellenmiş olur.
Aşağıdaki komutla port bazında Root Guard’ı açabilirsiniz.
Switch(config-if)# spanning-tree guard root
Root Guard, Root Bridge üzerindeki portlardan, sadece hattın diğer ucundaki switchlerin root seçilmemesi gerektiğinden emin olunan portlarda enable duruma getirilir.
Eski switchlere bağlanan portlarından, daha düşük priority ile Root Bridge olmak isteyen bir switch görürse Root Guard, bu pakedi aldığı portu “incostintent port” olarak işaretler ve kapatır. Böylece yanlışlıkla bir switch’in Root Bridge seçilmesini engellenmiş olur.
Aşağıdaki komutla port bazında Root Guard’ı açabilirsiniz.
Switch(config-if)# spanning-tree guard root
BPDU
Stp ortamında Root Olan Bridge ( Switch ) tarafından
her iki saniyde STP ortamına salınan PDU dur.
her iki saniyde STP ortamına salınan PDU dur.
-> Bunun sayesinde herkes portlarını belirler.
-> Bunun sayesinde herkes Root un kim oldugunu bilir.
-> Bunun sayesinde topology de degişiklik oldugunu diger kişilere söylenir.
-> Bunun sayesinde LOOP bulunup engellenir.
Vesselam BPDU
STP içinde akan KAn gibidir...
Biraz açalım :
Root Switch BPDU yu her 2 saniyede gönderir ( STP De )
Bunu alanlar ise BDPU içindeki kendine ait kısmı değiştirip
Diger arkadaşlarına yolllar.
STP ortamında PORT Rolleri belirlemiştik CCNA de hatırlarsak.
Bunlardan birisi Root PORT diger Designated Port idi.
BUnlar neden Var?
Gerçek datanın akışı için değil tabiki
Root Port dan BPDU Alırız.
DEsignated Port dan BPDU göndeririz.
DEsignated Port dan BPDU göndeririz.
Onun için Root Switchin Tüm portları DESignated dır.
BPDU Akışı böyle olur.
Yalnız bir şey daha var.
Switch lerin PC lere bakan POrtları DA DESIGNATED PORT dur !
Bu kötü işte.
Yani PC lere gereksiz BPDU göndeririz...
SHOW SPAN INTER FA0X DETAIL -> yaparsanız
SENT BPDU kısmının sürekli arttıgını görürürüz.
Yada PC de Wireshkark çalıştırın. BPDU ları görün.
Hatta bunu cidden yapın. BPDU nun yapısını incelemiş olursunuz
BU iyi bir şey değil.
Yani PC ye BPDU göndermek gereksiz ve zararlı.
Hele PC Den BPDU almak demek,
PC de kötü amaçlı bir yazılım var demektir.
Bu daha da kötüdür.
PC de kötü amaçlı bir yazılım var demektir.
Bu daha da kötüdür.
Kişinin PC sinden BPDU aldıgımızı ve o PC nin ROOT BRIDGE oldugunu düşünün
Bizim BPDU
STP ortamı dışına çıkmasın ve ortam dışından içeri girmesin
diye
BPDUFILTER ve BPDUGUARD geliştirilmiştir...
BpduFilter
============
İki GÖREVİ VARDIR :
a) BU PORTDAN BPDU GÖNDERME !
b) VE EGER Bu PORTDAN BPDU ALIRSAN Ignore et ( Yani girmesini engelle )
Bunu iki türlü enable edebiliriz.
1-) Tüm Switch üzerinde ENABLE edebiliriz.
CONF T
SPANNING-TREE PORTFAST DEFAULT
SPANNING-TREE PORTFAST BPDUFILTER DEFAULT
Burda şu oldu:
Portfast ın enable oldugu tüm portlarda BPDUFilter ENABLE oldu otomatik olarak.
Bu koşullu bir BPDUFILTER eanble etme yöntemidir.
Yani Eger PORT da Portfast enable ise BPDUFILTER enable olur.
Eger Portfast disable olursa o da disable olur.
sh span int fa0x detail ---> ile görebiliriz
BDPU : SENT 2 , RECEIVED 0
SENT - bu sayı artık artmaz. çünkü göndermez.
RECEIVED - bu sayı artabilir. önemli degildir. nasıl olsa ignore edicez.
2-) Bir Interface Altında
CONF T
INT FA0/23
SPANNING-TREE BPDUFILTER ENABLE
Burda ise PORTFAST şartı aranmadan BDPDUFILTER enable olur.
Özetle :
BPDUFILTER ın iki görevi vardır.
1- Bu Portdan BPDU göndermez. Bu özellik çok iyi. Karşıda kötü niyetli PC olabilir
2- Bu Portdan BPDU alınca içeri sokma . Buda iyi görünüyor.
Mesela kötü niyetli PC mizden BPDU aldıgımızı düşünün.
Onu içeri almıcak. Ama biz PC nin bize BPDU gönderdiğini nasıl bilicez.
Öyle ya bir saldırı var. Ve haberimiz yok. Ya interface altındaki
COUNT a bakıcaz. Yada SNMP ile falan ögrencez.
BU ikinci özellikde iyi ama sanki biraz daha iyi olsaymış
Burda devreye BPDUGUARD girer.
BPDUGUARD
============
Bunun bir görevi var sadece :
- BU PORTDAN BPDU ALIRSAN PORTU KAPAT !!!
Bu kadar. Sanki BPDUFILTER in ikinci Özelliğinin biraz daha
gelişmişi gibi ..
Yine iki türlü ENABLE olur.
1 -) Tüm Switch üzerinde
CONF T
SPANNING-TREE PORTFAST DEFAULT
SPANNING-TREE PORTFAST BPDUGUARD DEFAULT
AYnı mantık.
PORTFast ın enable olduğu her portta sende enable ol demektir.
KOşulu budur.
Peki POrtfast disable olursa ne olur ?
BPDUFILTER gibi BPDUGUARD da Disable mı olur ?
Yok bu sefer yemez.
Yok bu sefer yemez.
Bir portdan BPDU alırsanız hem POrtfast gider hemde PORTU kapatır
BPDUGUARD !
2 -) Interface üzerinde
CONF T
INT FA0/1
SPANNING-TREE BPDUGUARD ENABLE
Burda yine aynı mantık.
Şart olarak POrtfast olmasına gerek yoktur.
Not : PORTFAST nedir ve nasıl çalışır bilindiğini düşündüm.
Int fa0/19
Switchport port-security
[switchport port-security max 1]
[switchport port-security violation shutdown
[switchport port-security max 1] bunun anlamı şudur :
Port security aktif oldu ve bu port altından sadece 1 MAC ögrenilebilir( Default 1 dir). Tabi istersek biz bu BIR sayısını degiştiririz
Peki bu durumu biraz özelleştirelim. STATIC.
Port altında hangi mac adres/lerinin olabileceğine biz karar verelim.
Switchport port-security mac-address aaaa.bbbb.cccc
Ancak bir sürü PC nin oldugu ortamda bu biraz sıkıntılı olacak. Tek Tek girmek ölüm.
Bi komut gireyim, PC ler çalışınca bunların MAC ını nasıl olsa ögrencek, bunları alıp kendisi STATIC hale getirsin. STICKY.
Switchport port-security mac-address sticky
Peki bu durumlar ihlal olursa NE OLSUN ?
[switchport port-security violation shutdown ]
Ayrıca şunlarıda kullanabiliriz -- anlamlarıyla birlikte yazalım.
PROTECT = Düşük seviye korumadır. Kural Dışı Mac lara izin vermez o kadar.
RESTRICT = Orta seviye korumadır. Kural dışılara izin vermez ve ayrıca bunu admin e bildirir.
SHUTDOWN = Üst seviye korumadır. Port u kapatır. Sebebini de ERR-DISABLE diye görebiliriz.
Eger bu portu tekrar çalışır hale getirmek istersek, port altında “ sh – no sh” yapmamız yeterlidir.
Bu arada MAC TAblosundaki MAC adreslerinin 300 saniye ömürlerinin oldugunu biliyoruz.
Ama port-security ile ögrenilmiş [static, sticky yada dinamik] Mac adresleri için bu durum geçerli degildir.
Edge Port : switch üzerinde access port’lara bağlanan pc ve sunucular STP hesaplamalarında daha hızlı geçiş sağlamak ve pclere gereksiz BPDU paketi gönderimini engellemek için edge port olarak yapılandırılır. Edge port’lardan BPDU paketleri aldığınızda spanning tree yeniden hesaplama yapmak ister(recalculates), bu nedenle network’ünüzde karışıklığa sebep olur ve port üzerinden BPDU paketi gelirse network’ümüzde loop oluşur ve atak alır. BPDU protection fonksiyonu, edge portlar üzerinden BPDU mesajı alınırsa port kapatılarak network’ümüz sağlıklı çalışmaya devam edecektir.
1.port
– max MAC 2
– 1 static MAC (PC1)
– 1 dynamic MAC (PC2)
– 1 violation (PC3)
– violation type shutdown
Switch(config)#inter fastEthernet 0/1 Switch(config-if)#switchport mode access Switch(config-if)#switchport port-security Switch(config-if)#switchport port-security maximum 2 Switch(config-if)#switchport port-security mac-address 00E0.B085.4951 Switch(config-if)#switchport port-security mac-address 0003.e445.1485 Switch(config-if)#switchport port-security violation shutdown
– max MAC 2
– 2 dynamic MAC (PC6,PC7)
– 1 violation (PC8)
– violation type restrict
Switch(config)# interface fastEthernet 0/2 Switch(config-if)# switchport mode access Switch(config-if)# switchport port-security Switch(config-if)# switchport port-security maximum 2 Switch(config-if)# switchport port-security mac-address sticky Switch(config-if)# switchport port-security violation restrict
– max MAC 1
– 1 static MAC (PC4)
– 2 violation (PC4,PC5)
– violation type shutdown
Switch(config)# inter fastEthernet 0/3 Switch(config-if)# switchport mode access Switch(config-if)# switchport port-security maximum 1 Switch(config-if)# switchport port-security mac-address 1111.1111.1111 Switch(config-if)# switchport port-security violation shutdown
– max MAC 1
– 1 dynamic MAC (PC10)
– 1 violation (PC9)
– violation type protect
Switch(config)# inter fastEthernet 0/4 Switch(config-if)# switchport mode access Switch(config-if)# switchport port-security Switch(config-if)# switchport port-security maximum 1 Switch(config-if)# switchport port-security mac-address sticky Switch(config-if)# switchport port-security violation protect
You can also check the below Port Security verification commands screenshots.
Switch# show port-security Secure Port MaxSecureAddr CurrentAddr SecurityViolation Security Action (Count) (Count) (Count) -------------------------------------------------------------------- Fa0/1 2 2 1 Shutdown Fa0/2 2 2 1 Restrict Fa0/3 1 1 1 Shutdown Fa0/4 1 1 1 Protect ----------------------------------------------------------------------
UDLD (Unidirectional Link Detection)
UDLD normal modu sadece Fiber media'da kullanılıyorken aggressive modu bakır + fiber'de kullanılabilmekte..
UDLD (Unidirectional Link Detection) tek taraflı link tespiti anlamına gelmektedir. UDLD protokolü ile fiber ve twisted pair kabloların tek taraflı çalışmaları tespit edilebilmektedir. Unidirectional link fiber ve utp kabloların içindeki veri yollamak ve almak için transmit ve receive tellerinden herhangi birinin kopması durumudur. Bu durumda transmit edilen tellerden birisinden veri akışı varken diğerinden veri akışı olmayacaktır. Bu da cihazları up down yapar. Cihazların karşılıklı interfacelerinin up down olması tehlikeli bir durumdur. İki taraf birden down olunca sorun olduğu hemen anlaşılır. Spanning tree ile yedek hatta geçilebilir. Fakat up down durumunda cihazlardan biri karşı tarafı ayakta gördüğü için yedek hatta geçmeyi de düşünmez. Bu durum network’te loop oluşturabilir. Kısacası, fiber veya twisted pair linkler arasında portlardan herhangi biri veri akışını çift taraflı yapamayınca, portun biri up iken diğeri down olunca veya fiber tellerinden herhangi biri tam olarak bağlı olmayınca, unidirectional link hatası meydana gelir.
Bu sorunun çözümü UDLD protokolüdür. Diğer birçok protokolde olduğu gibi Cisco tarafından geliştirilmiştir. UDLD birinci katmanda oluşan sorunların giderilmesi için tasarlanmış bir ikinci katman protokolüdür. Çalışma prensibi porttan belli sıklıkta paket (hello paketi) gönderip gönderilen bu paketlere cevap alma mantığına dayanır. Belli bir süre (hold time) gönderilen pakete cevap gelmiyorsa cihaz o portunu UDLD sorunu dolayısıyla shut eder. Protokolün çalışabilmesi için cihazların karşılıklı portlarının UDLD özelliğini desteklemesi gerekir. UDLD paketlerinde kullanılan hedef mac adresi 0100.0CCC.CCCC’dir.
Cihazların portları defaultta UDLD özellikleri kapalı olarak gelir. UDLD’nin normal ve aggressive olmak üzere iki farklı çalışma modu vardır. UDLD açıldığında default olarak normal modda açılır. Aralarında temel olarak iki fark vardır. Birincisi twisted pair unidirectional link hataları sadece aggressive modda anlaşılabilir. Normal modda sadece fiber için hata tespiti mümkündür. İkinci fark ise, normal modda UDLD paketleri holdtime sonunda gelmezse port direk shut edilirken, aggressive modda ise cihazlar arasında UDLD komşuğunu tekrar kurabilmek için direk olarak shut edip beklemek yerine 8 defa oturumu devam ettirme girişimi olur. Bu konuda akla gelebilecek bir soru etherchannel portları olabilir. Etherchannel portlarında unidirectional link hatası olması durumunda sadece ilgili port shut edilir. Geri kalan etherchannel portları çalışmasına devam eder.
Cisco switch üzerinde genel UDLD komutları;
Switch(config)# udld aggressive Aggressive moda’a geçer.
Switch(config)# udld enable Harici elle girilmiş portlar hariç tüm portlarda UDLD özelliğini açar.
Switch(config)# udld message time <1-90> Cisco’nun dökümanında 7 saniye 90 saniye arasında bir zaman değeri girin dese de cihaz üzerinde 1’den 90’a kadar bir değer girin yazıyor.
Switch(config-if)# udld port Belli bir portta UDLD’yi açar.
Switch(config)# udld enable Cihazdaki tüm fiber portlarda UDLD’yi açar.
Switch# sh udld UDLD portların durumunu gösterir.
Switch# sh udld {interface no} Belirtilen interface için bilgi verir.
Switch# reset udld UDLD dolayısıyla kapatılmış portları resetler. Hello paketleri tekrardan gönderilmeye başlar.
LOOPGUARD
Recommend : sadece Root port ve Alternate porta enable edilmesi ve sadece access switchler üzeride aktif edilmesi.
Loopguard ve portfast aynı anda portta kullanılmamalıdır.
Loopguard hata kontrollu yoktur bpdu gelmezse keser bağlantıyı udld de ise hello paketleri ile test eder.
STP nin BPDU diye bir mesaj kullandığını biliyoruz.
Bunun bir sürü yararı var.
Olayın tamamı bu pakettir zaten.
Root Bridge her iki saniyede bir BDDU gonderir ( STP de )
Ve bunu alanlar ilgili bölümleri degiştirip arkadaşların gönderirler.
BPDU - Designated Portlardan gönderilir.
Root Portlardan alınır.
STP ortamında Root Port, Designated Port ve Altn port vardır.
Bunlar Portlerin Rolleridir.
ALTN port - BLOCKING durumdadır.
Ve sadece BPDU alır.
Zaten topology nize bakarsanız karşısında DEsignated POrt vardır.
Designated Port - Bpdu GÖnderir idi.
Karşıdaki kişi de bunu alacaktır.
ALTN port sadece BPDU alır ve onu kara deliğe gönderir.
STP nin Loop engelleme mantıgı budur zaten.
Peki Layer 1 de bir sıkıntı oldu.
Ve ALTN nin karşsındaki Designated Port BPDU
gönderemiyor.
Ve sebebi ise Layer 1.
Bu durum da ALTN port umuz MaxAGe kadar bekleyip
Portu kullanıma açar.
Ve LOOP başlar.
Onun için LOOPGUARD geliştirmişler.
BU komutun uygulandığı PORT
BPDU almayı bırakırsa
Forwarding State e geçmektense,
INCONSISTENCE duruma geçer.
Bunun anlamı ise benim mevcut State de kalıp ( Blocking Mode olsun )
BPDU almam gerekirken şuan alamıyorum demesidir.
TAki tekrar BPDU alana kadar öylece kalır...
KOnfigurasyon Nasıldır ?
---------------------------------
Tüm PORT lara uygulanabilir.
CONF T
SPANNING-TREE LOOPGUARD default
Yada sadece bir porta.
CONF T
INT FA01
SPANNING-TREE GUARD LOOP
Gerçi bu komut sadece BPDU alan portlar için
önem taşır.
Designated Port a uygulasak ne olur ki
Kod:
sh spanning-tree interface fa0/2
Loop guard is enabled on the port
ile görebiliriz.
Deneme yapalım.
Sw1 -------- Sw2 olsun. ( BU kocaman bir topologynin küçük bir kısmıdır gerçekde 4 switch var )
Sw1 in portu Designaated Port olsun.
Sw2 nin portu ALTN olsun.
Hadi Layer 1 sorun oluşturalım
Sw1 e gidip Designated Port alında BPDUFILTER uygulayalım !
BPDU gönderimi durmuştur.
İçinden sayalım MAx Age kadar...
Ve
Kod:
*Mar 1 10:32:35.329: %SPANTREE-2-LOOPGUARD_BLOCK:
Loop guard blocking port FastEthernet0/2 on VLAN0001
Aynı şekilde tekrar BPDU almaya başlarda
otomatikman bu inconsistent state kalkar
yine BLOCKing mode a geçer.
DAI
Dynamic ARP Inspection (DAI) is a security feature that protects ARP (Address Resolution Protocol) which is vulnerable to an attack ike ARP poisoning.
DAI checks all ARP packets on untrusted interfaces, it will compare the information in the ARP packet with the DHCP snooping
database and/or an ARP access-list. If the information in the ARP
packet doesn’t matter, it will be dropped. In this lesson I’ll show you
how to configure DAI. Here’s the topology we will use:
Above we have four devices, the router on the left side called “host”
will be a DHCP client, the router on the right side is our DHCP server
and on top we have a router that will be used as an attacker. The switch
in the middle will be configured for dynamic ARP inspection.
Configuration
We’ll start with the switch, first we need to make sure that all interfaces are in the same VLAN:
SW1(config)#interface range fa0/1 - 3
SW1(config-if-range)#switchport mode access
SW1(config-if-range)#switchport access vlan 123
SW1(config-if-range)#spanning-tree portfast
Now we can configure DHCP snooping:
SW1(config)#ip dhcp snooping
SW1(config)#ip dhcp snooping vlan 123
SW1(config)#no ip dhcp snooping information option
The commands above will enable DHCP snooping globally, for VLAN 123
and disables the insertion of option 82 in DHCP packets. Don’t forget to
make the interface that connects to the DHCP server trusted:
SW1(config)#interface FastEthernet 0/3
SW1(config-if)#ip dhcp snooping trust
The switch will now keep track of DHCP messages. Let’s configure a DHCP server on the router on the right side:
DHCP(config)#ip dhcp pool MY_POOL
DHCP(dhcp-config)#network 192.168.1.0 255.255.255.0
That’s all we need, let’s see if the host is able to get an IP address:
HOST(config)#interface FastEthernet 0/0
HOST(config-if)#ip address dhcp
A few seconds later we see this message:
%DHCP-6-ADDRESS_ASSIGN: Interface FastEthernet0/0 assigned DHCP address 192.168.1.1, mask 255.255.255.0, hostname HOST
Let’s check if our switch has stored something in the DHCP snooping database:
SW1#show ip dhcp snooping binding
MacAddress IpAddress Lease(sec) Type VLAN Interface
------------------ --------------- ---------- ------------- ---- --------------------
00:1D:A1:8B:36:D0 192.168.1.1 86330 dhcp-snooping 123 FastEthernet0/1
Total number of bindings: 1
There it is, an entry with the MAC address and IP address of our
host. Now we can continue with the configuration of DAI. There’s only
one command required to activate it:
SW1(config)#ip arp inspection vlan 123
The switch will now check all ARP packets on untrusted interfaces,
all interfaces are untrusted by default. Let’s see if this will work or
not…I’ll configure the IP address of our host on our attacker:
ATTACK(config)#interface FastEthernet 0/0
ATTACK(config-if)#ip address 192.168.1.1 255.255.255.0
Now let’s see what happens when we try to send a ping from the attacker to our DHCP router:
ATTACK#ping 192.168.1.254
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.254, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
The ping is failing…what does our switch think of this?
SW1#
%SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Req) on Fa0/2, vlan 123.([0017.5aed.7af0/192.168.1.1/0000.0000.0000/192.168.1.254/01:20:08 UTC Tue Mar 2 1993])
%SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Req) on Fa0/2, vlan 123.([0017.5aed.7af0/192.168.1.1/0000.0000.0000/192.168.1.254/01:20:10 UTC Tue Mar 2 1993])
%SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Req) on Fa0/2, vlan 123.([0017.5aed.7af0/192.168.1.1/0000.0000.0000/192.168.1.254/01:20:10 UTC Tue Mar 2 1993])
%SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Req) on Fa0/2, vlan 123.([0017.5aed.7af0/192.168.1.1/0000.0000.0000/192.168.1.254/01:20:10 UTC Tue Mar 2 1993])
Above you can see that all ARP requests from our attacker are
dropped. The switch checks the information found in the ARP request and
compares it with the information in the DHCP snooping database. Since it
doesn’t match, these packets are discarded. You can find the number of
dropped ARP packets with the following command:
SW1#show ip arp inspection
Source Mac Validation : Disabled
Destination Mac Validation : Disabled
IP Address Validation : Disabled
Vlan Configuration Operation ACL Match Static ACL
---- ------------- --------- --------- ----------
123 Enabled Active
Vlan ACL Logging DHCP Logging Probe Logging
---- ----------- ------------ -------------
123 Deny Deny Off
Vlan Forwarded Dropped DHCP Drops ACL Drops
---- --------- ------- ---------- ---------
123 0 5 5 0
Vlan DHCP Permits ACL Permits Probe Permits Source MAC Failures
---- ------------ ----------- ------------- -------------------
123 0 0 0 0
Vlan Dest MAC Failures IP Validation Failures Invalid Protocol Data
---- ----------------- ---------------------- ---------------------
Vlan Dest MAC Failures IP Validation Failures Invalid Protocol Data
---- ----------------- ---------------------- ---------------------
123 0 0 0
Above you see the number of drops increase. So far so good, our
attacker has been stopped. We still have one problem though, let me
first shut the interface on our attacker before we continue:
ATTACK(config)#interface FastEthernet 0/0
ATTACK(config-if)#shutdown
Let me show you what happens when we try to send a ping from the host to our DHCP router:
HOST#ping 192.168.1.254
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.254, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
This ping is failing but why? We are not spoofing anything…here’s what the switch tells us:
SW1#
%SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Res) on Fa0/3, vlan 123.([0016.c7be.0ec8/192.168.1.254/001d.a18b.36d0/192.168.1.1/01:24:48 UTC Tue Mar 2 1993])
%SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Res) on Fa0/3, vlan 123.([0016.c7be.0ec8/192.168.1.254/001d.a18b.36d0/192.168.1.1/01:24:50 UTC Tue Mar 2 1993])
%SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Res) on Fa0/3, vlan 123.([0016.c7be.0ec8/192.168.1.254/001d.a18b.36d0/192.168.1.1/01:24:52 UTC Tue Mar 2 1993])
%SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Res) on Fa0/3, vlan 123.([0016.c7be.0ec8/192.168.1.254/001d.a18b.36d0/192.168.1.1/01:24:54 UTC Tue Mar 2 1993])
%SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Res) on Fa0/3, vlan 123.([0016.c7be.0ec8/192.168.1.254/001d.a18b.36d0/192.168.1.1/01:24:56 UTC Tue Mar 2 1993])
Our switch is dropping ARP replies from the DHCP router to our host.
Since the DHCP router has no idea how to reach the host, the ping is
failing:
HOST#show ip arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 192.168.1.1 - 001d.a18b.36d0 ARPA FastEthernet0/0
Internet 192.168.1.254 0 Incomplete ARPA
DHCP#show ip arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 192.168.1.1 0 001d.a18b.36d0 ARPA FastEthernet0/0
Internet 192.168.1.254 - 0016.c7be.0ec8 ARPA FastEthernet0/0
Why is the switch dropping the ARP reply? The problem is that the
DHCP router is using a static IP addresses. DAI checks the DHCP snooping
database for all packets that arrive on untrusted interfaces, when it
doesn’t find a match…the ARP packet is dropped. To fix this, we need to
create a static entry for our DHCP router:
SW1(config)#arp access-list DHCP_ROUTER
SW1(config-arp-nacl)#permit ip host 192.168.1.254 mac host 0016.c7be.0ec8
First we create an ARP access-list with a permit statement for the IP
address and MAC address of the DHCP router. Now we need to apply this
to DAI:
SW1(config)#ip arp inspection filter DHCP_ROUTER vlan 123 ?
static Apply the ACL statically
We use the ip arp inspection filter command for this but you have to be careful…if you use the “static” parameter then we tell the switch not to check
the DHCP snooping database. It will only check our ARP access-list and
when it doesn’t find an entry, the ARP packet will be dropped. Make sure
you add the filter without the static parameter:
SW1(config)#ip arp inspection filter DHCP_ROUTER vlan 123
There we go. The switch will now check the ARP access-list first and
when it doesn’t find a match, it will check the DHCP snooping database.
Let’s try that ping again:
HOST#ping 192.168.1.254
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.254, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 1/1/1 ms
Excellent our ping is now working because of the static entry for the
DHCP router. Another way to deal with this issue is to configure the
interface as trusted. DAI will allow all ARP packets on trusted
interfaces:
SW1(config)#interface FastEthernet 0/3
SW1(config-if)#ip arp inspection trust
Anything else we can do with DAI? There are some additional security checks you can enable if you want:
SW1(config)#ip arp inspection validate ?
dst-mac Validate destination MAC address
ip Validate IP addresses
src-mac Validate source MAC address
Here’s what these options mean:
- dst-mac: checks the destination MAC address in the Ethernet header
against the target MAC address in the ARP packet. This check is
performed for ARP replies. ARP replies with different MAC addresses will
be dropped.
- ip: checks for invalid and unexpected IP addresses. For example 0.0.0.0, 255.255.255.255 and multicast addresses.
- src-mac: checks the source MAC address in the Ethernet header
against the sender’s MAC address in the ARP packet. This check is
performed for both ARP requests and replies. ARP packets with different
MAC addresses will be dropped.
You can only enable one of these options at the same time. Here’s an example how to enable the dst-mac check:
SW1(config)#ip arp inspection validate dst-mac
Last but not least, we can also configure ARP rate-limiting. By
default there is a limit of 15 pps for ARP traffic on untrusted
interfaces. Here’s how you can change it:
SW1(config)#interface FastEthernet 0/1
SW1(config-if)#ip arp inspection limit rate 10
This interface now only allows 10 ARP packets per second.
Conclusion
That’s all we have for DAI (Dynamic ARP Inspection). It’s a nice
security feature but make sure that you have ARP access-lists in place
for all devices with static IP addresses before you enable this. You
don’t want to block most of your traffic after enabling this.
hostname SW1
!
ip dhcp snooping vlan 123
no ip dhcp snooping information option
ip dhcp snooping
ip arp inspection vlan 123
ip arp inspection validate src-mac
!
interface FastEthernet0/1
switchport access vlan 123
switchport mode access
ip arp inspection limit rate 10
spanning-tree portfast
!
interface FastEthernet0/2
switchport access vlan 123
switchport mode access
spanning-tree portfast
!
interface FastEthernet0/3
switchport access vlan 123
switchport mode access
ip arp inspection trust
spanning-tree portfast
ip dhcp snooping trust
!
arp access-list DHCP_ROUTER
permit ip host 192.168.1.254 mac host 0016.c7be.0ec8
!end
UDLD (Unidirectional Link Detection) tek taraflı link tespiti anlamına gelmektedir. UDLD protokolü ile fiber ve twisted pair kabloların tek taraflı çalışmaları tespit edilebilmektedir. Unidirectional link fiber ve utp kabloların içindeki veri yollamak ve almak için transmit ve receive tellerinden herhangi birinin kopması durumudur. Bu durumda transmit edilen tellerden birisinden veri akışı varken diğerinden veri akışı olmayacaktır. Bu da cihazları up down yapar. Cihazların karşılıklı interfacelerinin up down olması tehlikeli bir durumdur. İki taraf birden down olunca sorun olduğu hemen anlaşılır. Spanning tree ile yedek hatta geçilebilir. Fakat up down durumunda cihazlardan biri karşı tarafı ayakta gördüğü için yedek hatta geçmeyi de düşünmez. Bu durum network’te loop oluşturabilir. Kısacası, fiber veya twisted pair linkler arasında portlardan herhangi biri veri akışını çift taraflı yapamayınca, portun biri up iken diğeri down olunca veya fiber tellerinden herhangi biri tam olarak bağlı olmayınca, unidirectional link hatası meydana gelir.
Bu sorunun çözümü UDLD protokolüdür. Diğer birçok protokolde olduğu gibi Cisco tarafından geliştirilmiştir. UDLD birinci katmanda oluşan sorunların giderilmesi için tasarlanmış bir ikinci katman protokolüdür. Çalışma prensibi porttan belli sıklıkta paket (hello paketi) gönderip gönderilen bu paketlere cevap alma mantığına dayanır. Belli bir süre (hold time) gönderilen pakete cevap gelmiyorsa cihaz o portunu UDLD sorunu dolayısıyla shut eder. Protokolün çalışabilmesi için cihazların karşılıklı portlarının UDLD özelliğini desteklemesi gerekir. UDLD paketlerinde kullanılan hedef mac adresi 0100.0CCC.CCCC’dir.
Cihazların portları defaultta UDLD özellikleri kapalı olarak gelir. UDLD’nin normal ve aggressive olmak üzere iki farklı çalışma modu vardır. UDLD açıldığında default olarak normal modda açılır. Aralarında temel olarak iki fark vardır. Birincisi twisted pair unidirectional link hataları sadece aggressive modda anlaşılabilir. Normal modda sadece fiber için hata tespiti mümkündür. İkinci fark ise, normal modda UDLD paketleri holdtime sonunda gelmezse port direk shut edilirken, aggressive modda ise cihazlar arasında UDLD komşuğunu tekrar kurabilmek için direk olarak shut edip beklemek yerine 8 defa oturumu devam ettirme girişimi olur. Bu konuda akla gelebilecek bir soru etherchannel portları olabilir. Etherchannel portlarında unidirectional link hatası olması durumunda sadece ilgili port shut edilir. Geri kalan etherchannel portları çalışmasına devam eder.
Cisco switch üzerinde genel UDLD komutları;
Switch(config)# udld aggressive Aggressive moda’a geçer.
Switch(config)# udld enable Harici elle girilmiş portlar hariç tüm portlarda UDLD özelliğini açar.
Switch(config)# udld message time <1-90> Cisco’nun dökümanında 7 saniye 90 saniye arasında bir zaman değeri girin dese de cihaz üzerinde 1’den 90’a kadar bir değer girin yazıyor.
Switch(config-if)# udld port Belli bir portta UDLD’yi açar.
Switch(config)# udld enable Cihazdaki tüm fiber portlarda UDLD’yi açar.
Switch# sh udld UDLD portların durumunu gösterir.
Switch# sh udld {interface no} Belirtilen interface için bilgi verir.
Switch# reset udld UDLD dolayısıyla kapatılmış portları resetler. Hello paketleri tekrardan gönderilmeye başlar.
Recommend : sadece Root port ve Alternate porta enable edilmesi ve sadece access switchler üzeride aktif edilmesi.LOOPGUARD
Loopguard ve portfast aynı anda portta kullanılmamalıdır.
Loopguard hata kontrollu yoktur bpdu gelmezse keser bağlantıyı udld de ise hello paketleri ile test eder.
STP nin BPDU diye bir mesaj kullandığını biliyoruz.
Bunun bir sürü yararı var.
Olayın tamamı bu pakettir zaten.
Root Bridge her iki saniyede bir BDDU gonderir ( STP de )
Ve bunu alanlar ilgili bölümleri degiştirip arkadaşların gönderirler.
BPDU - Designated Portlardan gönderilir.
Root Portlardan alınır.
STP ortamında Root Port, Designated Port ve Altn port vardır.
Bunlar Portlerin Rolleridir.
ALTN port - BLOCKING durumdadır.
Ve sadece BPDU alır.
Zaten topology nize bakarsanız karşısında DEsignated POrt vardır.
Designated Port - Bpdu GÖnderir idi.
Karşıdaki kişi de bunu alacaktır.
ALTN port sadece BPDU alır ve onu kara deliğe gönderir.
STP nin Loop engelleme mantıgı budur zaten.
Peki Layer 1 de bir sıkıntı oldu.
Ve ALTN nin karşsındaki Designated Port BPDU
gönderemiyor.
Ve sebebi ise Layer 1.
Bu durum da ALTN port umuz MaxAGe kadar bekleyip
Portu kullanıma açar.
Ve LOOP başlar.
Onun için LOOPGUARD geliştirmişler.
BU komutun uygulandığı PORT
BPDU almayı bırakırsa
Forwarding State e geçmektense,
INCONSISTENCE duruma geçer.
Bunun anlamı ise benim mevcut State de kalıp ( Blocking Mode olsun )
BPDU almam gerekirken şuan alamıyorum demesidir.
TAki tekrar BPDU alana kadar öylece kalır...
KOnfigurasyon Nasıldır ?
---------------------------------
Tüm PORT lara uygulanabilir.
CONF T
SPANNING-TREE LOOPGUARD default
Yada sadece bir porta.
CONF T
INT FA01
SPANNING-TREE GUARD LOOP
Gerçi bu komut sadece BPDU alan portlar için
önem taşır.
Designated Port a uygulasak ne olur ki
Kod:
sh spanning-tree interface fa0/2 Loop guard is enabled on the port
Deneme yapalım.
Sw1 -------- Sw2 olsun. ( BU kocaman bir topologynin küçük bir kısmıdır gerçekde 4 switch var )
Sw1 in portu Designaated Port olsun.
Sw2 nin portu ALTN olsun.
Hadi Layer 1 sorun oluşturalım
Sw1 e gidip Designated Port alında BPDUFILTER uygulayalım !
BPDU gönderimi durmuştur.
İçinden sayalım MAx Age kadar...
Ve
Kod:
*Mar 1 10:32:35.329: %SPANTREE-2-LOOPGUARD_BLOCK: Loop guard blocking port FastEthernet0/2 on VLAN0001
Aynı şekilde tekrar BPDU almaya başlarda
otomatikman bu inconsistent state kalkar
yine BLOCKing mode a geçer.
DAI
Dynamic ARP Inspection (DAI) is a security feature that protects ARP (Address Resolution Protocol) which is vulnerable to an attack ike ARP poisoning.
DAI checks all ARP packets on untrusted interfaces, it will compare the information in the ARP packet with the DHCP snooping database and/or an ARP access-list. If the information in the ARP packet doesn’t matter, it will be dropped. In this lesson I’ll show you how to configure DAI. Here’s the topology we will use:
Above we have four devices, the router on the left side called “host” will be a DHCP client, the router on the right side is our DHCP server and on top we have a router that will be used as an attacker. The switch in the middle will be configured for dynamic ARP inspection.
Configuration
SW1(config)#interface range fa0/1 - 3
SW1(config-if-range)#switchport mode access
SW1(config-if-range)#switchport access vlan 123
SW1(config-if-range)#spanning-tree portfast
Now we can configure DHCP snooping:SW1(config)#ip dhcp snooping
SW1(config)#ip dhcp snooping vlan 123
SW1(config)#no ip dhcp snooping information option
The commands above will enable DHCP snooping globally, for VLAN 123
and disables the insertion of option 82 in DHCP packets. Don’t forget to
make the interface that connects to the DHCP server trusted:SW1(config)#interface FastEthernet 0/3
SW1(config-if)#ip dhcp snooping trust
The switch will now keep track of DHCP messages. Let’s configure a DHCP server on the router on the right side:DHCP(config)#ip dhcp pool MY_POOL
DHCP(dhcp-config)#network 192.168.1.0 255.255.255.0
That’s all we need, let’s see if the host is able to get an IP address:HOST(config)#interface FastEthernet 0/0
HOST(config-if)#ip address dhcp
A few seconds later we see this message:%DHCP-6-ADDRESS_ASSIGN: Interface FastEthernet0/0 assigned DHCP address 192.168.1.1, mask 255.255.255.0, hostname HOST
Let’s check if our switch has stored something in the DHCP snooping database:SW1#show ip dhcp snooping binding
MacAddress IpAddress Lease(sec) Type VLAN Interface
------------------ --------------- ---------- ------------- ---- --------------------
00:1D:A1:8B:36:D0 192.168.1.1 86330 dhcp-snooping 123 FastEthernet0/1
Total number of bindings: 1
There it is, an entry with the MAC address and IP address of our
host. Now we can continue with the configuration of DAI. There’s only
one command required to activate it:SW1(config)#ip arp inspection vlan 123
The switch will now check all ARP packets on untrusted interfaces,
all interfaces are untrusted by default. Let’s see if this will work or
not…I’ll configure the IP address of our host on our attacker:ATTACK(config)#interface FastEthernet 0/0
ATTACK(config-if)#ip address 192.168.1.1 255.255.255.0
Now let’s see what happens when we try to send a ping from the attacker to our DHCP router:ATTACK#ping 192.168.1.254
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.254, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
The ping is failing…what does our switch think of this?SW1#
%SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Req) on Fa0/2, vlan 123.([0017.5aed.7af0/192.168.1.1/0000.0000.0000/192.168.1.254/01:20:08 UTC Tue Mar 2 1993])
%SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Req) on Fa0/2, vlan 123.([0017.5aed.7af0/192.168.1.1/0000.0000.0000/192.168.1.254/01:20:10 UTC Tue Mar 2 1993])
%SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Req) on Fa0/2, vlan 123.([0017.5aed.7af0/192.168.1.1/0000.0000.0000/192.168.1.254/01:20:10 UTC Tue Mar 2 1993])
%SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Req) on Fa0/2, vlan 123.([0017.5aed.7af0/192.168.1.1/0000.0000.0000/192.168.1.254/01:20:10 UTC Tue Mar 2 1993])
Above you can see that all ARP requests from our attacker are
dropped. The switch checks the information found in the ARP request and
compares it with the information in the DHCP snooping database. Since it
doesn’t match, these packets are discarded. You can find the number of
dropped ARP packets with the following command:SW1#show ip arp inspection
Source Mac Validation : Disabled
Destination Mac Validation : Disabled
IP Address Validation : Disabled
Vlan Configuration Operation ACL Match Static ACL
---- ------------- --------- --------- ----------
123 Enabled Active
Vlan ACL Logging DHCP Logging Probe Logging
---- ----------- ------------ -------------
123 Deny Deny Off
Vlan Forwarded Dropped DHCP Drops ACL Drops
---- --------- ------- ---------- ---------
123 0 5 5 0
Vlan DHCP Permits ACL Permits Probe Permits Source MAC Failures
---- ------------ ----------- ------------- -------------------
123 0 0 0 0
Vlan Dest MAC Failures IP Validation Failures Invalid Protocol Data
---- ----------------- ---------------------- ---------------------
Vlan Dest MAC Failures IP Validation Failures Invalid Protocol Data
---- ----------------- ---------------------- ---------------------
123 0 0 0
Above you see the number of drops increase. So far so good, our
attacker has been stopped. We still have one problem though, let me
first shut the interface on our attacker before we continue:ATTACK(config)#interface FastEthernet 0/0
ATTACK(config-if)#shutdown
Let me show you what happens when we try to send a ping from the host to our DHCP router:HOST#ping 192.168.1.254
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.254, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
This ping is failing but why? We are not spoofing anything…here’s what the switch tells us:SW1#
%SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Res) on Fa0/3, vlan 123.([0016.c7be.0ec8/192.168.1.254/001d.a18b.36d0/192.168.1.1/01:24:48 UTC Tue Mar 2 1993])
%SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Res) on Fa0/3, vlan 123.([0016.c7be.0ec8/192.168.1.254/001d.a18b.36d0/192.168.1.1/01:24:50 UTC Tue Mar 2 1993])
%SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Res) on Fa0/3, vlan 123.([0016.c7be.0ec8/192.168.1.254/001d.a18b.36d0/192.168.1.1/01:24:52 UTC Tue Mar 2 1993])
%SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Res) on Fa0/3, vlan 123.([0016.c7be.0ec8/192.168.1.254/001d.a18b.36d0/192.168.1.1/01:24:54 UTC Tue Mar 2 1993])
%SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Res) on Fa0/3, vlan 123.([0016.c7be.0ec8/192.168.1.254/001d.a18b.36d0/192.168.1.1/01:24:56 UTC Tue Mar 2 1993])
Our switch is dropping ARP replies from the DHCP router to our host.
Since the DHCP router has no idea how to reach the host, the ping is
failing:HOST#show ip arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 192.168.1.1 - 001d.a18b.36d0 ARPA FastEthernet0/0
Internet 192.168.1.254 0 Incomplete ARPA
DHCP#show ip arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 192.168.1.1 0 001d.a18b.36d0 ARPA FastEthernet0/0
Internet 192.168.1.254 - 0016.c7be.0ec8 ARPA FastEthernet0/0
Why is the switch dropping the ARP reply? The problem is that the
DHCP router is using a static IP addresses. DAI checks the DHCP snooping
database for all packets that arrive on untrusted interfaces, when it
doesn’t find a match…the ARP packet is dropped. To fix this, we need to
create a static entry for our DHCP router:SW1(config)#arp access-list DHCP_ROUTER
SW1(config-arp-nacl)#permit ip host 192.168.1.254 mac host 0016.c7be.0ec8
First we create an ARP access-list with a permit statement for the IP
address and MAC address of the DHCP router. Now we need to apply this
to DAI:SW1(config)#ip arp inspection filter DHCP_ROUTER vlan 123 ?
static Apply the ACL statically
We use the ip arp inspection filter command for this but you have to be careful…if you use the “static” parameter then we tell the switch not to check
the DHCP snooping database. It will only check our ARP access-list and
when it doesn’t find an entry, the ARP packet will be dropped. Make sure
you add the filter without the static parameter:SW1(config)#ip arp inspection filter DHCP_ROUTER vlan 123
There we go. The switch will now check the ARP access-list first and
when it doesn’t find a match, it will check the DHCP snooping database.
Let’s try that ping again:HOST#ping 192.168.1.254
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.254, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 1/1/1 ms
Excellent our ping is now working because of the static entry for the
DHCP router. Another way to deal with this issue is to configure the
interface as trusted. DAI will allow all ARP packets on trusted
interfaces:SW1(config)#interface FastEthernet 0/3
SW1(config-if)#ip arp inspection trust
Anything else we can do with DAI? There are some additional security checks you can enable if you want:SW1(config)#ip arp inspection validate ?
dst-mac Validate destination MAC address
ip Validate IP addresses
src-mac Validate source MAC address
Here’s what these options mean:- dst-mac: checks the destination MAC address in the Ethernet header against the target MAC address in the ARP packet. This check is performed for ARP replies. ARP replies with different MAC addresses will be dropped.
- ip: checks for invalid and unexpected IP addresses. For example 0.0.0.0, 255.255.255.255 and multicast addresses.
- src-mac: checks the source MAC address in the Ethernet header against the sender’s MAC address in the ARP packet. This check is performed for both ARP requests and replies. ARP packets with different MAC addresses will be dropped.
SW1(config)#ip arp inspection validate dst-mac
Last but not least, we can also configure ARP rate-limiting. By
default there is a limit of 15 pps for ARP traffic on untrusted
interfaces. Here’s how you can change it:SW1(config)#interface FastEthernet 0/1
SW1(config-if)#ip arp inspection limit rate 10
This interface now only allows 10 ARP packets per second.Conclusion
That’s all we have for DAI (Dynamic ARP Inspection). It’s a nice security feature but make sure that you have ARP access-lists in place for all devices with static IP addresses before you enable this. You don’t want to block most of your traffic after enabling this.hostname SW1
!
ip dhcp snooping vlan 123
no ip dhcp snooping information option
ip dhcp snooping
ip arp inspection vlan 123
ip arp inspection validate src-mac
!
interface FastEthernet0/1
switchport access vlan 123
switchport mode access
ip arp inspection limit rate 10
spanning-tree portfast
!
interface FastEthernet0/2
switchport access vlan 123
switchport mode access
spanning-tree portfast
!
interface FastEthernet0/3
switchport access vlan 123
switchport mode access
ip arp inspection trust
spanning-tree portfast
ip dhcp snooping trust
!
arp access-list DHCP_ROUTER
permit ip host 192.168.1.254 mac host 0016.c7be.0ec8
!end
Hiç yorum yok:
Yorum Gönder