Bu Yazıda ACL Nedir, ACL Nasıl Çalışır? (ACL Çalışma Mantığı), Implicit Deny, ACL Türleri (Standard Named / Numbered ACL, Extended Named / Numbered ACL), Standard ACL, Standard ACL Yapılandırması ve Yapılandırılmış ACL'yi Düzenleme Hakkında Bilgi Edineceğiz.
ACL, Toplam İki Bölümden oluşmaktadır. Bu Yazı, ACL Konusunun İlk Bölümüdür.
İkinci Bölümde Extended ACL ve Extended ACL Yapılandırması Hakkında Bilgi Edineceğiz.
ACL Nedir?
- ACL (Access Control List) Birden Çok Kullanıma Sahiptir.
- Access Control Terimi, Ağ Erişiminin Kontrol Edildiğini İfade Eder. Örneğin Host A'nın Server A'ya Erişmesine İzin Verilmeli, Ancak Host B'nin Server A'ya Erişmesine İzin Verilmemelidir. Hangi Cihazların Ağın Hangi Bölümlerine Erişimi olduğunu Kontrol Etmek. ACL'nin Asıl İşlevi bu olsa da Tek İşlevi Bu Değildir. İlerleyen Konularda ACL'nin Diğer İşlevlerine de Değineceğiz.
- ACL, Router'a Belirli bir Trafiğe İzin Vermesini (Permit) veya Engellemesini (Deny) Söyleyen Bir Paket Filtresi İşlevi Görür.
- ACL, Source / Destination IP Adres, Source / Destination Port gibi Bilgilere Dayalı olarak Trafiği Filtreleyebilir.
Topoloji
Not: Yukarıdaki Resimde Kırmızı ile İşaretlenmiş Bölüm Hostların Switch'e Bağlı olduğu ve Switch'in de Router'a Bağlı olduğu Anlamına Gelir. Switch'i Bu Topolojide Göstermemize Gerek Yok.
ACL Nasıl Çalışır? - ACL Mantığı
ACL Genellikle Ağ İçinde Belirli bir Gereksinimi Karşılamak için Kullanılır, Bu Nedenle ACL'yi Rastgele Yapılandırmamalıyız.
Örnek bir Ağ Politikası
Gereksinimler:
- 192.168.1.0/24'deki Hostlar 10.0.1.0/24 Ağına Erişebilir.
- 192.168.2.0/24'deki Hostlar 10.0.1.0/24 Ağına Erişemez.
ACL, Sıralı ACE (Access Control Entry) Dizisinden oluşur.
Not: Bu Yazıda ACE Terimi yerine 'Giriş' Terimi Kullanılacaktır (ACE = Giriş).
ACE Sırası Çok Önemlidir.
ACL Yapılandırmak, ACL'nin Hemen Etkili olmasını Sağlamaz. ACL oluşturulduktan Sonra Bir Porta Uygulanmalıdır. ACL, Inbound ve Outbound olarak Uygulanır.
ACL 1'i R1'de Yapılandırdığımızı Düşünelim. ACL 1 oluşturuldu, Ancak Henüz Uygulanmadı. ACL 1'i Farklı Portlarda Farklı Yönlerde Uygulamanın Bazı Sonuçlarını İnceleyelim. ACL'yi Hangi Portta ve Yönde Uyguladığımıza Bağlı olarak, Gereksinimleri Karşılamada Başarılı veya Başarısız olacağız.
ACL 1'i R1 G0/2 Portunda Outbound olarak Uygularsak Ne olur? Bu, ACL 1'in Yalnızca G0/2 Portundan Çıkan Trafikte Etkili olacağı Anlamına Gelir. Bu Gereksinimleri Karşılıyor mu? Hayır. Çünkü R1, ACL'yi Yalnızca G0/2 Portunda Çıkan Trafiği Filtrelemek için Kullanacaktır.
PC3 SRV1'e Ping Atmaya Çalışırsa Ping R1'e Ulaştığında ACL Kontrol Edilmeyecektir, Çünkü Trafik G0/2 Portuna Giriyor, Çıkmıyor. Böylece R1, Trafiği R2'ye İletecek ve R2 de onu SRV1'e İletecektir.
SRV1 PC3'e Yanıt Gönderdiğinde R1, Trafiğin G0/2 Portundan İletilip İletilmemesine Karar Vermek için ACL'i Kontrol Edecektir.
ACL 1'i G0/2 Port Inbound olarak Uygularsak Ne olur? Bu Yalnızca G0/2 Portuna Giren Trafikte Etkili olacağı Anlamına Gelir.
PC3 SRV1'e Ping Atmaya Çalışırsa R1 ACL'i Kontrol Edecektir. ACE 1 Geçerli Değil, ACE 2'ye Geçer ve ACE 2 ile Eşleşir, Bu Nedenle R1 Trafiğe İzin Vermez (Deny).
Router ACL'deki Girişlerden Biriyle Eşleşme Bulduğunda ve Bir İşlem Yaptığında, ACL'deki Diğer Girişleri Kontrol Etmez. Eşleşen Girişin Altındaki Tüm Girişler Yok Sayılır. Bu Nedenle ACE 3 Yok Sayılır.
ACL 1'i G0/2 Port Inbound olarak Yapılandırdığımızda Gereksinimleri Karşıladık mı? Hem Evet Hem Hayır. 192.168.1.0/24 SRV1'e Ulaşabilir ve 192.168.2.0/24 Ulaşamaz, İstediğimiz Durum Buydu. Fakat ACL 1'i R1 G0/2 Port Inbound olarak Uyguladığımızda Çok Kısıtlayıcı oluyoruz. ACL 1 Nedeniyle 192.168.2.0/24'deki Hostlar, Yerel LAN Dışındaki Diğer Ağlarla İletişim Kuramaz. PC3 ve PC4 Birbiriyle İletişim Kurabilir, Bu Kadar. Dolayısıyla ACL'yi Uygulamanın En İyi Yolu Bu Değil. Bu ACL'yi Yerleştirmek için En İyi Konum: R2 G0/1 Port Outbound.
PC3, SRV1'e Ping Atmaya Çalışırsa, R2, Paketi G0/1 Portundan İletmeden önce ACL'yi Kontrol Edecektir. R2, ACE 2'de Eşleşme Bulur ve Paketi Engeller (Deny).
PC1, SRV1'e Ping Atmaya Çalışırsa R2, Paketi G0/1 Portundan İletmeden önce ACL'yi Kontrol Edecektir. R2, ACE 1'de Eşleşme Bulur ve Paketi İletir (Permit).
Artık Her İki Gereksinim Karşılanmıştır ve Diğer Trafikler üzerinde Hiçbir Etkisi Yoktur.
Bir Örnek Daha Yapalım.
Router'ın G0/0 Portunda Outbound Yönünde ACL 2 yapılandırılmıştır. Router'a Yukarı Resimdeki Yeşil Renkteki Paket Geliyor. Paketin Source IP Adres Alanı ACE 1 ile Eşleşir ve ACE 2 Yok Sayılır. Bu Nedenle Router Paketi Normal Şekilde İletecektir (Permit).
ACL 2'deki ACE 1 ve ACE 2 Yerlerini Değiştirelim.
Paketin Source IP Adres alanı ACE 1 ile Eşleşir ve ACE 2 Yok Sayılır. Bu Nedenle Router Paketi Engelleyecektir (Deny). ACL'deki ACE Sırasının Ne Kadar Önemli olduğunu Görebilirsiniz.
Tek bir Portta Yön Başına Maksimum Bir ACL Uygulanabilir.
Bir Portta Önceden Yapılandırılan ACL ile Aynı Yönde İkinci Bir ACL Uygularsanız Öncekinin Yerini Alacaktır.
Implicit Deny
Bir Paket, ACL'deki Girişlerin Hiçbiri ile Eşleşmezse Ne olur?
Paketin Source IP Adres Alanı, ACE 1 ve ACE 2 ile Eşleşmiyor. Bu Nedenle Router Paketi Engelleyecektir.
ACL'de Router'a Paketi Engellemesini Söyleyen Bir Giriş olmamasına Rağmen ACL'in Sonunda Görünmez Bir Giriş Var Gibidir, Buna Implicit Deny Diyoruz.
Bu Tüm ACL'ler için Geçerlidir. ACL Yapılandırırken Her Zaman Implicit Deny'nin Farkında olun, Aksi Taktirde Engellemek İstemediğiniz Trafiği Engelleyebilirsiniz.
ACL Türleri
Standard Numbered ACL
- Trafiği Yalnızca Paketin Source IP Adres Alanına göre Filtreler.
- Standard Numbered ACL, Numara ile Tanımlanır (ACL 1, ACL 2, ..).
- Standard Numbered ACL, 1-99 ve 1300-1999 Aralıklarındaki ACL Numaralarını Kullanabilir.
- Standard Numbered ACL Yapılandırma Komutu (config): access-list number {permit | deny} ip-address wildcard-mask
Örnekler
ACL'de /32 Mask Yapılandırmak İstediğinizde Wildcard Mask Belirtmeniz Gerekmez. Router Bunun /32 olduğunu Anlayacaktır.
/32 Mask Yapılandırmanın Diğer Yöntemi, IP Adresinden önce host Anahtar Sözcüğünü Kullanmaktır.
Bu Üç Yapılandırma da Aslında Aynıdır. Buradaki 2. ve 3. Seçeneklerin Yalnızca Tek bir Hostu Belirtmek (/32) için Kullanılabileceğini Unutmayın. Örneğin /24 Mask Kullanmak İstiyorsanız 1. Seçeneği Kullanmanız Gerekir (Wildcard Mask = 0.0.0.255).
R1'de 1.1.1.1/32'yi Engellemek için Yukarı Resimdeki Üç Komuttan Birini Kullanarak ACL 1'i Yapılandırdığımızı Düşünelim. ACL'de Girişleri (ACE) Yazdıktan Sonra olduğu gibi Bırakırsak Implicit Deny Devreye Girer ve Hiçbir Giriş ile Eşleşme Bulunamazsa Trafik Engellenir. Bu Nedenle ACL'in Sonuna Aşağıdaki Girişlerden Biri Eklenmelidir.
Yukarıdaki İki Komut Tüm Trafiğe İzin Verilmesini Söyler. Yani Özetle Durum Şöyle oldu: Router'a 1.1.1.1 Source IP Adresine Sahip Paket Gelirse Engellenir (Deny). 1.1.1.1 Source IP Adresi Dışında Herhangi Bir Source IP Adresine Sahip Paket Gelirse İzin Verilir (Permit). Yukarıdaki İki Komuttan Birini Yazmasaydık 1.1.1.1 Source IP Adresi Dışında Herhangi Bir Source IP Adresine Sahip Tüm Paketler Varsayılan olarak Engellenirdi (Implicit Deny).
Gördüğünüz gibi ACL Yapılandırma oldukça Esnek olabilir. Örneklerde Hepsinden Haberdar olabilmeniz için Çeşitli Yöntemler Kullanacağız. Mesela Yukarıdaki İki Komuttan Birini Kullanabilirsiniz, Bu Size Kalmış. Ancak Yine de Aynı İşlemin Birden Fazla Komutu olduğunu Bilmekte Fayda Var.
Bu Komutun ACL üzerinde Herhangi Bir Etkisi Yoktur, Sadece Yapılandırmada ACL'ye Bakarken ACL'nin Amacını Hatırlamanıza Yardımcı olan Bir Açıklamadır.
Router Üzerindeki Tüm ACL'leri Görüntüleme Komutu: show access-lists veya show ip access-lists
Router'ın deny 1.1.1.1 0.0.0.0'ı Otomatik olarak deny 1.1.1.1'e Dönüştürdüğüne Dikkat Edin. Router Bunu Bir /32 Mask Kullandığınızda Otomatik olarak Yapar. Ayrıca permit 0.0.0.0 255.255.255.255, Otomatik olarak permit any olarak Değiştirildi.
❗Her Bir Giriş (ACE) için Sırayı Gösteren Numara Verildiğine Dikkat Edin. Varsayılan olarak 10, 20, 30, .. Şeklinde Sıra Numarası Verilir.
Bu Girişlerin Sırası Çok Önemlidir. permit any İlk Sırada olsaydı Tüm Trafiğe İzin Verilirdi ve deny 1.1.1.1 Girişi İşe Yaramazdı.
ACL'yi Porta Uygulama Komutu (config-if): ip access-group number {in | out}
Standard ACL, Hedefe Mümkün olduğunca Yakın Uygulanmalıdır. Standard ACLn'in Kaynağa Yakın Uygulanması, Engellenmesi İstenmeyen Diğer Trafiklerin de Engellenmesine Yol Açabilir.
Örnek
Yukarıdaki Resimde Örnek Topoloji ve Gereksinimleri Görüyorsunuz. Bu Gereksinimleri Karşılamak için Hangi Router ve Hangi Portlara ACL Uygulamalısınız?
ACL'deki Girişlerin Yukarıdan Aşağıya Doğru İşlendiğini Unutmayın. Bir Giriş için Eşleşme Bulunduğunda İşlem Yapılır ve Eşleşen Girişten Sonra Kalan Girişler İşlenmez, Yok Sayılır.
ACL'nin Sonunda permit any Yapılandırdım. Her ACL'nin Sonunda Implicit Deny olduğunu Unutmayın. ACL'nin Sonuna permit any Eklemeseydim ACL Yalnızca 192.168.1.0/24 Ağındaki Bilgisayarları Engellemekle Kalmaz, Diğer Tüm Trafiği de Engellerdi. 192.168.2.0/24 Ağına Erişebilecek Tek Cihaz 192.168.1.1, PC1 olurdu ve Diğer Her Cihaz Engellenirdi. Gereksinimler Bize Diğer Trafiği Engellememizi Söylemiyor, Bu Nedenle permit any Eklemeliyiz.
Ping, R1 Tarafından Alınır. ACL'yi R1 G0/1 Portuna Uygulamadığımız için Henüz ACL Kontrol Edilmez. R1, Route Tablosunda Destination IP Adresi Arar ve G0/2 Portuna Bağlı olduğunu Görür. ACL 1, G0/2 Portunda Outbound olarak Uygulandığından Ping'i İletmeden Önce ACL 1'i Kontrol Eder. ACE 10 ile Eşleşme Bulur. Bu Nedenle Ping'e İzin Verir. ACL'deki Diğer Girişler Yok sayılır. PC3'ten PC1'e Dönüş Yolunu Engelleyen Bir ACL olmadığından PC3 Yanıt Verebilecektir.
PC2: ping 192.168.2.1 (PC3)
Ping, R1 Tarafından Alınır. ACL'i R1 G0/1 Portuna Uygulamadığımız için Henüz ACL Kontrol Edilmez. R1, Route Tablosunda Destination IP Adresi Arar ve G0/2 Portuna Bağlı olduğunu Görür. ACL 1, G0/2 Portunda Outbound olarak Uygulandığından Ping'i İletmeden Önce ACL 1'i Kontrol Eder. ACE 10'u Kontrol Eder, Eşleşmiyor. ACE 20'yi Kontrol Eder, Eşleşme Var. Bu Nedenle Ping'i Engeller.
Standard Named ACL
Trafiği Yalnızca Paketin Source IP Adres Alanına göre Filtreler. Fakat Sayı Yerine İsim ile Tanımlanırlar.
Standard Named ACL Yapılandırma Komutları:
- (config)# ip access-list standard acl-name
- (config-std-nacl)# [entry-number] {permit | deny} ip-address wilcard-mask
entry-number Belirtilmezse Varsayılan olarak 10, 20, 30, .. olarak Numaralandırılır.
Not: include ve section anahtar kelimeleri ile çıktıyı özelleştirebilirsiniz.
Yapılandırmalar
Kural: ACL'de Spesifik Girişler Üst Sıralara, Genel Girişler Alt Sıralara Yerleştirilir.
Yazılı olmayan Kural: ACL'de Aynı Spesifik Seviyede olan (Aynı Wildcard Mask) Girişler Varsa, Permit Girişler Deny Girişlerden Önce Yazılır.
Bu Örnek için olan Çözümünüz Yukarı Resimdeki Yapılandırmadan Farklı olabilir. Yaptığınız Yapılandırma Gereksinimleri Karşılıyorsa Sorun Yok, Bir Sorunun Farklı Çözümleri olabilir. Mesela Aşağı Resimdeki Yapılandırma da Gereksinimleri Karşılıyor.
Özetle ACL Yapılandırması Esnektir, ACL Yapılandırması Başka Şekilde Yapılandırılsa Bile Aynı Etkiyi Gösterebilir.
show ip access-list Komutu ile Yapılandırmamızı Doğrulayalım.
Not: Cisco IOS, ACL'yi Daha Verimli Kullanabilmek için /32 olan Girişlerin Sırasını Değiştirebilir. Fakat Giriş Sıra Numaralarının Değişmediğine Dikkat Edin. Bu İşlemin ACL Üzerinde Herhangi Bir Etkisi Yoktur. ACL'nin Daha Verimli İşlenebilmesi için Yapılır. Yukarıda Açıkladığım Yazılı olmayan Kural Burada Router Tarafından Otomatik olarak Uygulanmış :) /32 olan Girişlerin Sırasını Değiştirme İşlemi Packet Tracer Simulator Programında Yapılmaz.
Örnek bir Ping İşlemi Uygulayalım.
Ek Notlar
Numbered ACL'yi Yapılandırmanın Başka Bir Yolu
Cisco IOS'un Yeni Sürümlerinde Numbered ACL'yi, Named ACL ile Tam olarak Aynı Şekilde Yapılandırabilirsiniz.
Fakat show running-config Komut Çıktısında Doğrudan Global Config Modunda Geleneksel Yöntem Kullanılarak Yapılandırılmış gibi Görüntülenecektir.
Named ACL Yapılandırma Modunun Avantajları
no Komutu ve Ardından ACE Numarası ile Girişleri Kolayca Silebilirsiniz.
Global Config Modunda Numbered ACL Girişlerini Tek Tek Silemezsiniz, Yalnızca Tüm ACL'yi Silebilirsiniz. Bu Nedenle ACL'yi Düzenlemek İstiyorsanız Silmeniz ve Ardından Sıfırdan oluşturmanız Gerekir.
ACL'yi Düzenlemek İstiyorsanız Named ACL Yapılandırma Modunu Kullanın.
İsterseniz Global Config Modunda Numbered ACL Yapılandırabilir ve Ardından ACL'yi Düzenlemeniz Gerektiğinde Named ACL Yapılandırma Modunu Kullanabilirsiniz. Bununla İlgili Aşağıdaki Resimde Örnek Bir Yapılandırma Görülmektedir.
Yukarıdaki Resimde olduğu gibi ACE Numarasını Belirterek Diğer Girişlerin Arasına Yeni ACE Ekleyebilirsiniz.
Global Config Modunda ACL Yapılandırırken ACE Numarasını Belirtemezsiniz. Giriş, ACL'nin Sonuna Eklenir ve ACE Numarası Otomatik olarak Mevcut En Yüksek ACE Numarasından 10 Yüksek Ayarlanır. Named ACL Yapılandırma Modunda ACL Yapılandırırken ACE Numarasını Ayarlayabilirsiniz, Böylece ACL'deki Girişlerin Arasına Yeni Bir ACE Ekleyebilirsiniz.
Resequencing ACL
Bu İşlev ACL'yi Düzenlemeye Yardımcı olur.
Resequencing ACL Yapılandırma Komutu: ip access-list resequence acl-id starting-seq-num increment
ACL'deki ACE Numaralarına Dikkat Edin, 1, 2, 3, 4 ve 5 ACE Numaraları Kullanılmış. Görüntülenen Sıranın 1, 3, 2, 4, 5 olduğuna Dikkat Edin. Router'ın ACE'leri Verimli Kullanmak için /32 Host Adreslerini Düzenleyebileceğini Söylemiştik.
Peki bu ACE Numaralarının Nesi Kötü? Girişlerin Arasına Yeni Bir ACE Eklemek Mümkün Değil. Örneğin Ortada Bir Yere Deny Girişi Eklemek İsteyebilirsiniz. Ancak Girişlerin Arasında Serbest ACE Numarası olmadığı için Bu Mümkün Değildir.
Bunu Düzeltmek için ip access-list resequence 1 10 10 komutunu kullandık. ACE Numaraları Yeniden Düzenlendi.
Quizs
Cevaplar (Sırası ile):
- ACL 1. PC1 ve PC4'e izin verildi. Diğer Tüm Trafik Implicit Deny ile Engellenir.
- R2 G0/2 Outbound.
- b
- d
- c
LAB Çözümü
1.
2.
Match: Kaç adet Paketin ACE ile Eşleştiğini Belirtir.
Portta Hangi ACL'nin Hangi Yönde Uygulandığını Kontrol etmek için show ip interface interface-id Komutunu Kullanabiliriz.
Okuduğunuz için teşekkürler.
Yorum Gönder
Yorum Gönder