ACL( Access Control List)

  • Network trafiğinin kontrolünü sağlar.

  • İnterface üzerinde giren ve çıkan trafiği kontrol eder. 0

İnterfaceye giren ve çıkan trafiği ACL ile kontrol edebiliriz.

Inbound ==>Gelen oluyor. Gig0/0 'dan Outbound ==>Çıkan oluyor. Gig0/1 den

Tam tersi olunca değişiyor. Bu sefer İnbound Gig0/1 oluyor. Outbound Gig0/0 oluyor. Paketi aldığı interface IN oluyor gönderdiği interface OUT oluyor.

ACL Kullanım Yerleri

1) Paketlerin Router'a giriş ve çıkışında izin verme veya yasaklama

2) VTY erişimine izin verme veya yasaklama 3) Sınıflandırma, (VPN içerisinden geçecek trafiği belirleme) 4)Redistribution (Yönlendirme Protokolleri Arasında) 5)NAT

Access List Komutu ile Access List Oluşturma access-list 1 permit any

Access Group Komutu ile İnterface altına yazma ip access-group 1 out

Access List'leri bir interface altına uygulamak gerekiyor. Kaldıracaksak da interface altında kaldırmayı unutmamız gerekiyor. Access List altına birden fazla kural yazabiliriz.

Access List oluşturulduğunda interface başına bir tane inbound bir tane de outbound access-list tanımlanıyor. Yani herbir interface altına bir tane IN yönünde bir tane de OUT yönünde tanımlanıyor. Yani bir interface altına 2 tane Inbound ve 2 tane Outbound Access List tanımlanamıyor. Buna göre Access Listlerin planlanması gerekiyor.

In ve Out trafik yönüne göre belirleniyor. Bu trafiği belirledikten sonra artık Router'ların IN ve OUT'larını belirleyebiliyoruz. Access List'leri yazarken en belirgin kriterden en genele doğru yazmak gerekiyor. Yani en üste hepsini yasakla dememeliyiz sırasıyla gitmeliyiz.

Kural üzerinde herhangi bir eşleşme olmamışsa o zaman her access listin altında gizli olarak bulunan implicit deny all yani bütün paketleri yok et uygulanır.

Yani hiçbirine uymazsa bu üstte yazılan en son implicit deny all' a çarpıyor.

access-list 1 permit 192.168.1.0 0.0.0.255 sondaki oktet wildcard maskesi şu demek; 192.168.1.0 ile 192.168.1.255 arasındaki tüm ip'leri kapsıyor demek

Kullanmış olduğumuz ip adresini tamamen eşleşmesini istiyorsak yani birebir sadece o ip adresini kullanmak istiyorsak wildcard mask şu şekilde oluyor. 0.0.0.0

Yani biz 192.168.1.1 ip'si ile işlem yapmak istiyoruz.

BURASINA WİLDCARD MASK OLAN YER EKLENECEK

Standart Access List

  • Sadece Kaynak Adresine Bakılarak yazılıyor.

  • Genelde Hedefe Yakın Olan Cihaza yazılıyor access-list 5 permit 192.168.1.0 0.0.0.255

Extended Access List

  • Kaynak Adresi ile Beraber Protokol, Uygulama, Hedef IP adresi, Hedef Port Numarası vb. kriterlere bakılarak yazılır.

  • Genelde Kaynağa yakın olan cihazlara yazılır. access-list 111 permit tcp 192.168.1.0 0.0.0.255 any eq 80

Standart Access List'ler; Ip adreslerin sadece kaynak adreslerine bakarak (ip adresi ve subnet) filtreleme yapıyor. Port numarası ve protokolüne bakmıyor. Yani izin verme ve yasaklama tüm protokoller için olmuş oluyor. access-list 5 permit 192.168.1.0 0.0.0.255

Burada 192.168.1.0/24 networküne hepsine izin ver demişiz. Burada port numarası ya da protokolüne göre herhangi bir sınırlama yok tüm networke izin ver demişiz.

Access List'leri hedefe yakın olan cihazlarda yazmaya çalışıyoruz.

Extended Access List; Sadece kaynak adresi ile değil de protokol uygulama hedef ip adresi ve hedef port numarası gibi kriterlere bakılarak yazılır. access-list 111 permit tcp 192.168.1.0 0.0.0.255 any eq 80

Kaynak ip adresi sonrasında ANY (yani herhangibir yere giderken) ve neye eşit olacak HTTP Extended Access Listler kaynağa daha yakın olan cihazlara yazılır.

Numbered (Numaralı ) Access List

Standart Access List 1-99 ve 1300- 1999 # access-list 5 permit 192.168.1.0 0.0.0.255

Extended Access List 100-199 ve 2000-2699 # access-list 111 permit tcp 192.168.1.0 0.0.0.255 any eq 80

Named(İsimli) Access List

Standart Access List # ip access-list standart erişimizin_verme # permit 192.168.1.0 0.0.0.255

Extended Access List # ip access-list extended web_engelleme # deny tcp host 192.168.1.1 host 87.10.10.10 eq 80

Bu standard ve extended access listler 2 farklı yazım şekli var bunlar numaralı olarak yazılabiliyor ikincisi ise named olarak yazılabiliyor.

Named da ise Numara yerine isim kullanılıyor. Komutun başına ip yazılarak başlanıyor sonra hangisi standart mı yoksa extended mı o belirleniyor.

Daha sonra isim verilerek bu komut yazılıyor. Tabi burada standard mı olduğu extended mı olduğu burada belirtiliyor. Named en büyük avantajı satırlar tek tek silinebiliyor ve eklenebiliyor numaralı access listler daha esnek. Kural içine başka bir şeyler eklemek için access listleri önce durdurmak gerekiyor sonra eklenecek olan şeyleri ekleyip farklı bir formatta yazıp belli bir sırasına göre yazıp eklemek gerekiyor.

Orada durdurduğumuz için güvenlik açığı oluşabiliyor fakat burada named access liste arada kurallar eklenebilyor veya aradan kurallar silinebiliyor yani numaralı access listlere göre çok daha esnek diyebilriz.

Örnek Topoloji

Networkler arasında dinamik yönlendirme protokolü olarak ospf kullandım.

R1(config)#router ospf 100
R1(config-router)#router-id 1.1.1.1
R1(config-router)#network 192.168.1.0 0.0.0.255 area 0
R1(config-router)#network 192.168.2.0 0.0.0.255 area 0

R2(config)#router ospf 100
R2(config-router)#router-id 2.2.2.2
R2(config-router)#network 192.168.2.0 0.0.0.255 area 0
R2(config-router)#network 3.3.3.0 0.0.0.255 area 0
R2(config-router)#network 4.4.4.0 0.0.0.255 area 0

Örnek topolojide bizim trafiğimiz soldan sağa doğru çünkü Laptop'larımız sunuculara erişim yapacakları için IN ve OUT yönlerini buna göre ayarlamalıyız.

R1 üzerinde Gig 0/0 ==>IN R1 üzerinde Gig 0/1 ==>OUT

R2 üzerinde Gig 0/0 ==>IN R2 üzerinde Gig 0/1 ==>OUT R2 üzerinde Gig 0/2 ==>OUT

Extended Access List'lerde kaynağa (source) uygulanması daha uygun oluyor. Yani bu topolojide R1 üzerindeki Gig0/0 uygulamamız gerekiyor.

sh access-list // komutu ile Router içerisinde herhangi bir access list var mı kontrolünü yazabiliriz.

1) Laptop-1 (192.168.1.10 ) Web server üzerinden sadece Web sayfasına erişebilsin

access-list sonrasında extended olduğu için 100-199 arasında bir numara verdik izin vereceğimiz için permit anahtar sözcüğünü kullandık. Permit'ten sonra protokol. Taşıma protokolü olarak Tcp kullanıyoruz yani HTTP trafiğine izin vereceğiz. Web Server'a erişeceği için Http'de taşıma protokolü olarak Tcp kullanıyor. Daha sonrasında source ip adresi, daha sonra wildcard mask yazacağız. (Direk specific bir ip olacağı için 0.0.0.0) Specific ip olacağı için wildcard mask'da tüm hepsinin eşleşmesi gerekiyor. Daha sonra nereye erişeceğiz biz Host yani Server 'ımız (3.3.3.10), daha sonra artık hangi protokol numarası ise, hangi port numarasını kullanacaksak bu port numarasına göre işlem yapıyoruz. Biz sadece Http izin vereceğimiz için (eq 80 ) kullandık

Biz burada HTTP izin ver dedik ama Web sayfasını açması için DNS Server'a da gitmesi gerekiyor. DNS Server'da şu fark var. DNS , UDP 53.portu kullanıyor.

2) Laptop-2 sadece FTP Server'a erişebilsin

R1(config)#access-list 110 permit tcp 192.168.1.20 0.0.0.0 host 4.4.4.10 eq ftp

3) Diğer tüm trafikler yasaklansın

Access Listler en üst sıradan okunmaya başlıyor yani gelen paketler en üst sıradan gelerek başlıyor eğer ben tüm trafiği önce yasaklasaydım. O zaman hiçbir trafik geçemezdi.

access-list 110 deny (yasaklıyorum) neyi yasaklıyorum tüm ip'yi yani başka tüm geçişleri yasaklayacağım.

R1(config)#access-list 110 deny ip any any

Bunun haricindeki tüm protokolleri yasakla

R1#sh access-lists 
Extended IP access list 110
    10 permit tcp host 192.168.1.10 host 3.3.3.10 eq www
    20 permit udp host 192.168.1.10 host 3.3.3.10 eq domain
    30 permit tcp host 192.168.1.20 host 4.4.4.10 eq ftp
    40 deny ip any any

Access List hazırladıktan sonra ikinci işlem olarak bunu interface altına yazıyoruz.

Extended access listler kaynağa yakın olur

R1(config)#int gigabitEthernet 0/0
R1(config-if)#ip access-group 110 in

Laptop-1 den ping atamıyoruz ama web servera erişim sağlayabiliyoruz.

Örnek 2

1) Internette bulunan tüm cihazlar LAN'da bulunan WEB Server üzerinden sadece web sayfasına erişebilsin 2)PC2 ve PC3 internette bulunan WEB Server'a ve FTP Server'a Erişebilsin 3)Diğer Tüm Trafik yasaklansın

Access List yazarken farklı portlara farklı access listler yazabiliriz. Ama bu kuralları tek bir access list'de de birleştirebiliriz. Nerden birleştireceğiz ona karar verelim. İlk olarak dış networkten bizim iç networke (web servera) bir iletişim var. Dışarıdan içeriye doğru. Access Listi kendi routerımıza uygulamamız gerekiyor. Bu kuralı dış bacağa yani internete bağlandığımız porta uygulamamız gerekiyor. R1 üzerinde Gig 0/1'e uygulayacağız trafiğin yönü dıştan içe doğru olduğu için INBOUND yönünde uygulamamız gerekiyor. 2.Maddeye baktığımızda da bu bilgisayarlar internette web server'a ve Ftp server'a erişsin demek istiyoruz. Burada bu sefer OUTBOUND yönü gibi görünüyor. Ama biz burada dönüşüne yönelik bir access list yazabiliriz. Yani şu diyebiliriz. Bu bilgisayarlar internete çıkabilir ama dönüşte sadece örneğin web server'a erişiyorsa 80 portundan gelene izin ver dediğimizde trafiğin yönünü değiştirmiş oluyoruz. Yani çıkabilir ama dönüşte sadece biz 80'e izin veririz. Bu şekilde gig 0/1 e yazabiliriz.

Access Liste daha sonradan hatırlamak için bir Remark hatırlama ekleyebiliriz.

Dışarıdan içeriye izin vereceğiz. Neye izin vereceğiz TCP protokolüne izin vereceğiz. Kaynak olarak dışardaki tüm cihazların (Any), destination olarak 1.0 networküne izin ver dedik. Sonrasında Match olacak portu yazdık 80 portu ile Match olsun dedik. Yani sadece http servisine izin verelim.

Burada DNS ile ilgili ayar yapmıyoruz. Çünkü LAN Web Server'ı biz Internet'teki DNS Server'da tanımlamıştık. Dışarıda bu DNS kayıtımız olduğu için ekstra dns ile alakalı bir şey yapmıyoruz.

2.Kural PC2 ve PC3 ün internette bulunan WEB Server'a ve FTP Server'a Erişebilsin Burada öncelikle bu PC'ler DNS'e gitmesi gerekiyor. DNS'den web server'ın ip'sini öğrenecekler daha sonra web server'a gidecekler.

DNS için UDP trafiğine izin vereceğiz. Host olarak DNS den gelen 3.3.3.11 ip'den gelenç Buradan sadece 53 portuna izin veriyoruz. Destination adresimiz de içerdeki networkümüz (192.168.3.0). Paket dışarıya çıktı çıkarken hiçbir bir kurala takılmayacak ama dönüşte bu DNS server'dan paket gelirken sadece dns serverın 53 portundan gelen veriyi geçirecek. Bu sefer ise 4. satırda TCP'sine izin vereceğiz yine aynı şekilde dışardaki hepsine erişmesini istiyoruz. Bu PC'ler yine dışarıya çıkabiliyor dönüşte sadece Web serverdan gelene izin vereceğiz. Source adresi hepsi (dışardaki tüm web serverlar) ve 80 portundan gelenler. Destination olarak ise 192.168.3.0 networküne

Son olarak FTP server içinde aynı şeyi yapıyoruz. Bu sefer host olarak veriyoruz. 21 portuna veriyoruz. Sonrasında ise destination network 3.0 networkümüz. Başka bir şey yazmıyorum çünkü altta implicity deny var. Yani bunun haricinde hiçbir şey geçmeyecek.Zaten bunun harici hepsi yasak

R1 in Gig 0/1 interfacesi üzerinde

R1(config)#access-list 100 remark LAN WEB ERISIMI IZIN VERME 
R1(config)#access-list 100 permit tcp any 192.168.1.0 0.0.0.255 eq 80
R1(config)#access-list 100 permit udp host 3.3.3.11  eq 53 192.168.3.0 0.0.0.255
R1(config)#access-list 100 permit tcp any eq 80 192.168.3.0 0.0.0.255 
R1(config)#access-list 100 permit tcp host 4.4.4.10 eq 21  192.168.3.0 0.0.0.255

Şimdi access list'i interface altına uygulamak var.

R1(config)#int gig0/1
R1(config)#ip access-group 100 in

Named ACL

Cisco IOS default olarak numaralandırma yapmış. örnek olarak bu numaralar arasına numara eklemek istediğimizde o zaman isimli ACL kullanmış oluyoruz.

Örnek olarak 20 numaralı DNS ile ilgil ACL'yi unuttuk sonradan eklemek istediğimizde şu şekilde yapabiliriz.

R1(config)#ip access-list extended 100

Yukardaki şekilde yazarsak. Oluşturmuş olduğumuz ACL'in içerisine giriyoruz aslında artık burada kural ekleyebiliyoruz.

Yani burada isim de ekleyebiliriz, numara da ekleyebiliriz. Zaten burada 100 dediğimizde de 100 onun ismi oluyor. Yani burada yazarken satır numarasını kendimiz ekleyebiliyoruz.

R1(config)#ip access-list extended 100
R1(config)#15 permit tcp any any 

sh access list dediğmizde artık bu kuralı eklemiş olduğunu görebilirsiniz Yukardaki sıralamayla 10 15 20 30 40 Yani numara vermezsek numarasını otomatik olarak kendisi veriyor. 2. satıdakini otomatik olarak kendisi numara verdi.

Named ACL yazma

R1(config)#ip access-list extended WEB_ERISIM_IZNI
R1(config)#permit tcp any 192.168.1.0 0.0.0.255 eq www
R1(config)#15 permit udp host 3.3.3.11 eq domain 192.168.3.0 0.0.0.255
R1(config)#permit tcp any eq 80 192.168.3.0 0.0.0.255 
R1(config)#permit tcp host 4.4.4.10 eq 21  192.168.3.0 0.0.0.255

Bu 4 kuralı da girdik şimdi kontrol edelim.

İnterface altına verirken de bu şekilde veriyoruz.

ACL kısaca trafik tanımlamaya yarıyor. Özelden genele doğru yazmamız gerekiyor.

En sonda yazdığımı permit any any veya deny any any implicit deny adı veriliyor.

tek bir ip yazdığımızda maskeyi şu şekilde yazabiliriz.

access-list 10 deny 192.168.1.2 0.0.0.0 veya access-list 10 deny host 192.168.1.2

Router#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#ip access-list extended TEST
Router(config-ext-nacl)#permit tcp any any established

Established anahtar kelimesinin anlamı Three way handshake tamamlandıysa demektir.
Stateful Packet Inspection bir ifadesidir. 

Benim göndermiş olduğum trafiklerine bir cevabı niteliğindeyse geçmesine izin ver.
Yani ping attık. Eğer ping'imizin cevap vereceği için geçer. Ama rastgelen bir
trafik geçemez.


IPV6 ACL

İpv6 da 48 biti bize verir ve bunu kullanırız. 1 nolu ağımdır ve /64 olur.

Router#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#host R1
R1(config)#int gig0/0/0
R1(config-if)#ipv6 add 2001:DB8:FB:1::1/64
R1(config-if)#no shutdown
%LINK-5-CHANGED: Interface GigabitEthernet0/0/0, changed state to up

%LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/0/0, changed state to up

R1(config)#int gig0/0/1
R1(config-if)#ipv6 add 2001:DB8:FB:2::1/64
R1(config-if)#no shutdown

%LINK-5-CHANGED: Interface GigabitEthernet0/0/1, changed state to up

%LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/0/1, changed state to up

R1(config)#ipv6 unicast-routing 

//unicast-routing'i açmamız gerekiyor. ipv6-routing çalışsın bu cihazlarda

Bilgisayarlarda DHCP'ye gerek kalmadan otomatik IP almamızı sağlayan SLAAC mekanizması ile ipv6 adresi almış olduk.

R1(config)#ipv6 access-list TEST
R1(config-ipv6-acl)#permit tcp 2001:db8:fb:1::/64 any eq 80
R1(config-ipv6-acl)#deny ipv6 2001:db8:fb:1::/64 2001:db8:fb::/48 
//Son satırda geriye kalan tüm trafiği deny etmiş oldum.
//Sadece web trafiğine izin vermiş oldum.

R1(config)#int gig0/0/0
R1(config-if)#ipv6 traffic-filter TEST in
//artık access-group yerine ipv6 da burada traffic filter kullanıyoruz.

Biraz önce ping atmıştım artık atamıyorum. Ama webe erişebiliyorum

Last updated