acl

ACL’ler, router seviyesinde güvenliği sağlarlar, paket filtreleme (packet filtering) yaparlar. Paketleri IP ve port numarası bazında bloklayabilirler.

“10 uzayı 20 uzayına gidemesin. 10 uzayı 20 uzayındaki web sunucusuna bağlanamasın… gibi.”

ACL yazılarak ağ, güvenlik altına alınabilir ve bazı kısıtlamalar yapılabilir. Belirli bir ip uzayının başka bir yere ulaşmasını, bir ip’nin başka bir ip’ye erişmesini bu şekilde engelleyebiliriz.

ACL’ler standard ve extended olarak ikiye ayrılırlar. Bu yazımda size Standard ACL’lerden bahsedeceğim. Ama Extended ACL’lerden de kısaca söz edeyim.

EXTENDED ACCESS CONTROL LISTS

Bu ACL’ler giden paketleri kaynak ip adresi, hedef ip adresi, protokol ve protokol tipi (IP,TCP,UDP,ICMP…) gibi kriterlere göre analiz ederek onları ya geçirir ya da reddeder. Standard ACL’lere göre daha ayrıntılı bir şekilde paket analizi yapar. Extended ACL kaynağa en yakın router’a yazılır. EAL’ler 100 ile 199 arasında numaralandırılırlar.

STANDARD ACCESS CONTROL LISTS

SAL’lerin konfigürasyonunu anlatmadan önce, ACL’lerin bir router’daki işleyişinden bahsetmek gereklidir. Bir router’a ya inbound ya da outbound tarafına ACL yazabilirsiniz. Ve bir router’ın bir interface’nin in ya da out tarafına sadece bir adet ACL yazılabilir.

Peki inbound ve outbound nedir?

ACL yazarken router’a göre düşünmemiz gerekmektedir. Router’a paketler inbound’dan girer, outbound’dan çıkar.

Şimdi, bir ACL router’ın interface’inin ya in ya da out tarafına yazılır. ACL’ler deny ya da permit satırlarından oluşurlar. Permit satırları, ilgili cihazın geçişine izin verir. Deny satırları ilgili ip’li cihazı reddeder.

Yukarıdaki satırlar bir ACL örneğidir. Buradaki her bir satıra ACE (Access Control Entry) denir. İlk satırımız 192.168.1.2 ip’li cihazın başka bir ağa çıkışına izin verir. 2. satırımız ise 192.168.1.3 ip’li cihazın başka bir ağa çıkmasına izin vermez. 1 numara ise, bu ACL’nin standard ACL olduğunu gösterir. Peki işimiz bitti mi? Hayır bitmedi. Bu yazılmış ACL’yi istediğimiz bir interface’ uygulamamız gerekiyor.

Bunun için ACL’nin uygulanacağı interface’e giriş yapıyoruz. Burada gigabitEthernet0/0/0 interface’ine ACL uygulayacağız. (Bu satırın uzun hali interface gigabitEthernet0/0/0 dır. Ama komutları kısa bir şekilde yazabilirsiniz.)

Interface’in içindeyken “ip access-group 1 in” komutunu uyguluyoruz. Bunun anlamı, “1 numaralı ACL’yi içinde bulunan interface’in in yönüne uygula.” demektir. In yönüne uygulamamız, bu router’a her paket girdiğinde, daha girişinde ACL’nin kontrol edileceği ve gelen paketle eşleşen satırın olup olmadığının kontrol edileceği anlamına gelir. Bu router gig0/0/0 arayüzüne giren her paket için ACL’ye bakacak. Eşleşen satırlar için gerekli işlemler yapılacak.

Show Access-lists” komutu ile yazılmış tüm ACL’lere bakabiliriz. Yazdığımız ACL’nin numarası 1, alt satırları kendisi 10 ve 20 olarak numaralandırdı. İstersek ACL’mize bir isim verebiliriz.

Bu da ACL’nin farklı bir yazımı. Burada ACL’ye istediğimiz ismi verebiliriz. Standard komutundan sonra “?” koyduğunuzda, devamında hangi komutları yazabileceğiniz altta listelenir. Bu özelliği her komutta yapabilirsiniz, unuttuğunuz yerde size yardımcı olacaktır.

Ya 1 ile 99 arasında bir sayı yazacağız, ya da bir ad vereceğiz.

ACL’mizin adını YASAKLI_IP koyduk. Eğer isim koymak istersek, o ACL’nin standard mı extended mı olduğunu belirtmemiz gereklidir. Çünkü isim koymadığımız zaman numaralandırmamız gerekir, router koyduğumuz numaradan standard mı extended mı olduğunu anlar.

Bir sonraki aşamada bizi bu ACL’nin bir alt moduna sokar. Burada permit ve deny satırlarımızı yazıp moddan çıkıyoruz. Görüntülediğimizde;

ACL bu şekilde listelenir.

ACL tanımlama komutunun önüne “no” koyarsak ACL’yi siler. ACL’leri görüntülediğinizde YASAKLI_IP ACL’sinin çıkmayacağını göreceksiniz.

Diyelim ki bir kullanıcınız var, o kullanıcı hakkında router’a bir not düşmek istiyorsunuz. O zaman “remark” komutunu kullanmalısınız.

192.168.1.5 ip’sini YASAKLI_KULLANICI adıyla tanımladık.

————————————————————————————

Böyle bir ACL’ye sahip olduğumuzu düşünelim. Ben “192.168.1.4” ip’li cihazdan diğer ağdaki bir cihaza ping atmak istiyorum. 1.4 ip’si ACL’de bulunmuyor. Sizce ping atabilir mi?

Böyle bir topolojimiz var.

1.4’den 2.3’e ping atamadım. Sebebi, 1.4 ip’li cihazın ACL’de bulunmaması. Eğer bir router ACL’ye sahipse ve gelen paketin ip’si ACL’de bulunmuyorsa, router onu direkt çöpe atar.

Bir ağda 15 host olsun, bir hostu yasaklamak istiyoruz. ACL yazarken bir host için deny, kalan 14 host için tek tek permit satırı mı yazacağız? Tabiki hayır.

ACL’ye tüm kısıtlamaları yazdıktan sonra, en sonuna “permit any” satırını ekliyoruz.

Permit any satırı, “geriye kalan tüm cihazların geçmesine izin ver”, deny any satırı ise, “geriye kalan tüm cihazları engelle” demektir.

Eğer bunlardan birini yazmazsanız, ip’si ACL’de bulunmayan bir host direkt çöpe atılır. Bu çok önemlidir, buna dikkat etmelisiniz.

Örnekteki ACL’nin sonuna “permit any” satırını ekledikten sonra 1.4 ip’li cihaz ping atmayı başarıyor.

NOT: Atılan 4 ping paketinin ilkinin ulaşmaması, orada yapılan arp sorgusundan kaynaklanır. Router için arp sorgusu yapılır.(Ip adresinden MAC adresi öğrenilir.) O sırada ilk ping paketi zaman aşımına uğrar, ulaşamaz. Bir kez daha ping attığımızda 4 paket de başarıyla ulaşacaktır.

Bir Standard ACL, hedefe en yakın yere yazılır. Çünkü SAL’de hedef ip yazılmaz, o yüzden hedef ağ neresiyse oranın en yakınına yazmak doğru olacaktır.

Diyelim ki bu topolojide PC1’in 192.168.31.0 ağına gitmesini istemiyoruz. Standard ACL yazarsak, hedef ip’yi yazamayacağız, bu yüzden ACL’yi R3’ün g0/1 interface’inin out yönüne yazmamız en doğrusu olacaktır. Eğer ACL’yi R3’ün giriş interface’ine yazarsak bu sefer hem 192.168.31.0 ağına hem de 30.0 ağına gidemeyecek.

Yeni bir ACL satırı yazmak ve onu belirli iki satırın arasına koymayı isterseniz, satırların başına numara koymanız gerekmektedir. Mesela ACE’yi en başa koymak isterseniz, en küçük numarayı vermeniz gerekmektedir.


1 numaralı ACL’ye yeni bir satır ekledik ve numarasını 5 yaptık. Böylece yeni satır en başa koyulur.

Eğer numara vermeseydik en sona girilecekti. Ama diğer numaralardan en küçüğünü verdiğimiz için en başa geldi.

ACL VE SUBNET MASK

Bir ACL’ye satır yazarken subnet maskesi de yazılabilir. Ama subnet maskesi direkt yazılmaz, wildcard mask kullanılır.

Peki nedir bu Wildcard Mask?

Subnet maskesinin tersi olarak yazılan 32 bitlik değerdir. Bu, kısıtlamayı bir adım ileri götürmek için kullanılabilir.

/24’lü bir ağda bulunan bir cihazın subnet maskesi 255.255.255.0’dır. Bu, ilk 24 bitin network’e ait olduğu, son 8 bitin host’lara ait olduğu anlamına gelir. ACL yazarken subnet maskesini bu şekilde yazamayız, basit bir çıkartma işlemi ile wildcard maskesine dönüştürürüz. 255.255.255.0 subnet maskesine sahip olan bir cihazın wildcard maskesi;

255.255.255.255. – 255.255.255.0 = 0.0.0.255 olur. Bu, satırda yazılan ip’nin ilk 24 oktetinin kontrol edilip, son oktetine dikkat edilmemesi anlamına gelir.

access-list 1 permit 192.168.1.0 0.0.0.255 -> Gelen paketin ip’si 192.168.1 ile başlıyorsa paketi geçir.

access-list 1 deny 192.168.2.2 0.0.0.0 -> Tüm bitleri kontrol eder. “access-list 1 deny 192.168.2.2” ile aynı işlevi görür.

access-list 5 deny 0.0.0.0 255.255.255.255 -> Hiçbir biti kontrol etmez. “Any” satırıyla aynı işlevi görür.

İsterseniz “host” komutuyla da yazabilirsiniz.

Aşağıdaki 3 satırın hepsi de aynı işi yapar.

access-list 1 permit 192.168.2.2 0.0.0.0

access-list 1 permit host 192.168.2.2

access-list 1 permit 192.168.2.2

İstediğiniz şekilde yazabilirsiniz.

ACL’Yİ KONTROL ETMEK

Router’da yazılı ACL olup olmadığını kontrol etmek için belirli komutlar vardır.

1- show access-lists -> Bu komut ile var olan ACL’ler listelenir. Her ACE’nin sonunda, kaç adet paketin belirtilen ip’lerle eşleştiği gösterilir.

Burada 192.168.1.3 ip’li cihazdan router’a 8 paket, 192.168.1.2’den ise 4 paket gelmiş. Bu eşleşmeleri silmek istiyorsanız, enable modunda “clear access-list counters (ACL numarası ya da ACL adı)” komutunu kullanabilirsiniz.

2- show running-config -> Bu komut ile, yazılmış tüm konfigürasyonlar listelenir. İçinde ACL konfigürasyonlarını bulabilirsiniz.

3- show ip interface gig0/0/0 -> Bu komut belirttiğimiz interface’de ACL olup olmadığını gösterir.

Burada görüyoruz ki, gig0/0/0 interface’inin in yönüne 1 numaralı ACL uygulanmış, out yönünde uygulanmış bir ACL bulunmuyor.

show ip interface gig0/0/0 | include access yazdığınız zaman, listelenecek tüm bilgilerin içinden yalnızca access ile ilgili olanları listeler. Bir çeşit filtreleme yapar diyebiliriz.

ACL YAZMAK İÇİN İNCİLER

-ACL’yi direkt router’a yazmadan önce bir text editöründe yazıp, tüm düzenlemeleri yapıp uygulamak tavsiye edilir. İyi planlanmadan yazılan ACL, tüm network’ün erişimini kesebilir, dikkatli olmanızda fayda var.

-ACL satırlarını yazarken sıralama çok önemlidir. ACL satır satır, baştan sona okunur. Bir host’u önce engelleyip sonra permit ediyorsak, satırlar sırasıyla okunacağı için, host engellenir.

-ACL, gösterdiğim show komutları ile kontrol edilmelidir.

-Uyguladığınız bir komutu silmek istiyorsanız başına “no” koymanız yeterlidir.


2 Yorumlar

  1. Harika bir calisma olmuş. Gerçekten cok faydalı oldu. Bir mühendis adayi olarak geleceginizin cok parlak olduğu apaçık. Yolunuz daima açık olsun. Başarılarınızın devamını dilerim..

Atakan için bir cevap yazın İptal

Lütfen yorumunuzu yazınız!
Lütfen isminizi buraya giriniz