Kurumsal Network Kurulumu

Switch ACL Yapılandırması: Yönetim Erişimini Daraltmak

Switch ACL yapılandırması: yönetim erişimini yalnız belirli adreslere açmak. Lab'da ölçtüm: liste açık oturumu kesmedi, reddi günlüğe yazmadı, disconnect kesti.

İlker Pehlivan

Switch ACL yapılandırması, switch’in yönetim arayüzüne yalnız belirli adreslerden bağlanılmasına izin veren listenin kurulmasıdır. Liste SSH gibi yönetim servislerini süzer; parolayı bilen biri bile listede olmayan bir adresten switch’e bağlanamaz.

Bu rehberde lab switch’imde yönetim ağına izin veren bir liste kuruyorum ve dört şeyi ölçüyorum: izinsiz bağlantının nasıl göründüğünü, listenin açık oturumlara ne yaptığını, o oturumların nasıl kapatıldığını ve switch’in reddi günlüğe yazıp yazmadığını.

Bir süpermarket şubesi merkezden telefonla yönetilir. Şubenin santrali yalnız listesindeki numaralardan gelen aramaları bağlar; listede olmayan numara şubeye ulaşamaz. Bu yazıda santralin listesi switch’in yönetim erişim listesidir, arayan numaralar da switch’e bağlanmaya çalışan adreslerdir.

Switch ACL benzetmesi: süpermarket şubesinin arka ofisindeki telefon santralinde bir hat bağlanmış ve lambası yanıyor, listede olmayan hatların lambaları sönük
Şube santrali yalnız listedeki numarayı bağlar. Switch'in yönetim erişim listesi de SSH'ı yalnız listedeki adreslere açar.

Bu yazı, switch yapılandırma rehberimizdeki kontrol listesinin 8. adımıdır ve Kurumsal Network Kurulumu hizmetimizin switch tarafına aittir. Aynı işi müşterilerimizin ağında nasıl yürüttüğümüzü switch kurulumu ve VLAN yapılandırma hizmeti sayfamızda anlattık.

Bir erişim listesinin nasıl okunduğunu, listede olmayanın neden reddedildiğini ve kural sırasının sonucu nasıl tersine çevirdiğini ACL nedir yazımızda anlattık. Bu yazı o kuralların switch üzerindeki uygulamasıdır.

Switch ACL Nedir? Yönetim Erişimi ve Trafik Süzme Farkı

Switch’te “ACL” iki ayrı işi anlatır. Biri yönetim erişim listesidir: switch’in kendisine, yani SSH’ına, web arayüzüne ya da SNMP’sine kimin bağlanabileceğini belirler. Öteki trafik ACL’idir: switch’in üzerinden geçen, kullanıcıdan kullanıcıya ya da VLAN’dan VLAN’a giden paketleri süzer.

Rehberin 8. adımı ve bu yazı birincisini anlatır. Ayrım pratikte de görünür: lab switch’imde yönetim listesi bağlıyken izinsiz adresin SSH bağlantısı düştü, ama aynı adresten ping geçmeye devam etti. Yönetim listesi kullanıcı trafiğine dokunmaz. Ağlar arası trafiği kuralla yönetmek firewall’un işidir; bu tasarımı firewall kurulumu sayfamızda anlattık.

Liste SSH açıldıktan sonra kurulur. SSH’ı açıp Telnet ile düz HTTP’yi kapatmayı switch SSH yapılandırması yazımızda anlattık; bu adım o kapıyı adrese göre daraltır.

Switch ACL’ine Hangi Adresler Yazılır?

Liste bağlandığı anda, yazılmamış her adres switch’in yönetim kapısında durur. Bu yüzden listeyi yazmadan önce switch’e kimlerin bağlandığını çıkarmak gerekir:

  • Yönetici bilgisayarları ilk sıradadır; ya kendi adresleriyle ya da durdukları yönetim ağı olarak yazılır.
  • Gece yedek betiğinin çalıştığı sunucu. Switch’in yapılandırmasını SSH ile alan betik de bir bağlantıdır. 23 Eylül’deki ölçümde yalnız kendime izin verdiğim listede yedek betiği switch’e ulaşamadı; betiği switch yapılandırma yedeği yazımızda anlattık.
  • İzleme sunucusu da switch’e SNMP ile soruyorsa listeye girer.

Adresleri tek tek yazmak yerine yönetim ağını bir maskeyle tek kurala sığdırabilirsiniz. Lab’da 192.168.10.0 adresini 255.255.255.248 maskesiyle (/29) yazdım. Bu maske son sekiz adresi bir blok sayar, yani kural .0 ile .7 arasını kapsar. Ölçüm için lab’daki bir Linux sunucusuna üç adres verdim: .1 benim yönetim yolum, .3 bloğun içinde, .9 bloğun dışında.

Switch ACL’ini Devreye Almak: Önce Yaz, Sonra Bağla

Switch’te liste iki adımda devreye girer. Önce yazılır, sonra yönetim erişimine bağlanır. Bağlanmamış liste hiçbir şeyi süzmez; bu ayrım, listeyi bağlamadan önce okumanızı mümkün kılar.

Listeyi yazan satırlar şunlar:

Switch Konsolu
configure
management access-list YONETIM-ACL
permit ip-source 192.168.10.0 mask 255.255.255.248 service ssh priority 10
exit
exit

Kural üç şey söyler: kaynak blok (ip-source ve mask), hangi servise izin verildiği (service ssh) ve kuralın sırası (priority). Liste henüz bağlı değilken switch onu şöyle gösterdi:

Switch Konsol Çıktısı
gmsw01#show management access-list YONETIM-ACL
YONETIM-ACL
-----------
permit ip-source 192.168.10.0 mask 255.255.255.248 service ssh priority 10
! (Note: all other access implicitly denied)
gmsw01#show management access-class
Management access-class is disabled.

Son satırdaki not listenin örtük reddidir: yazılmayan her şey reddedilir. Bu çıktıda üç şeye bakın:

  1. Kendi adresiniz kuralın içinde mi? Benimki .1, bloğun içindeydi.
  2. Servis doğru mu? service ssh yalnız SSH’a izin verir; web arayüzünü ya da SNMP’yi kullanan biri bu listede dışarıda kalır.
  3. disabled satırı listenin henüz hiçbir şeyi süzmediğini gösterir.

Liste doğru görünüyorsa bağlanır:

Switch Konsolu
configure
management access-class YONETIM-ACL
exit
Switch Konsol Çıktısı
gmsw01#show management access-class
Management access-class is enabled, using access list YONETIM-ACL.

Bu satırdan sonra ayarı kaydetmeden önce yeni bir oturumla bağlanabildiğinizi sınayın. Bağlanamıyorsanız ayar hâlâ yalnız çalışan yapılandırmadadır ve switch yeniden başlarsa listesiz açılır. Çalışan ve kalıcı yapılandırmanın farkını yönetilebilir switch ayarları yazımızda anlattık. Lab’da konsol kablosu takılı değildi; yanlış giderse switch’in fişi çekilecekti.

Switch ACL Doğrulaması: İzinli ve İzinsiz Adresten Bağlanmak

Liste bağlandı. Şimdi aynı sunucunun üç adresinden bağlanmayı denedim. Parola vermeyen bir SSH denemesi kullandım: switch’e ulaşan bağlantı parola sorar ve Permission denied ile biter, ulaşamayan bağlantı zaman aşımına düşer. Lab betiğimin satırı sırasıyla saati, kaynak adresi, SSH’ın son satırını, geçen süreyi ve ping sonucunu yazıyor:

Çıktı
01:49:21 kaynak=192.168.10.3 ssh=[deneme@192.168.10.2: Permission denied (publickey,password,keyboard-interactive).] sure=0.3s ping=2 received
01:49:32 kaynak=192.168.10.9 ssh=[ssh: connect to host 192.168.10.2 port 22: Connection timed out] sure=10.0s ping=2 received

Satırlar üç şey gösteriyor:

  1. .3 switch’e ulaştı. Bloğun içindeydi; switch parola istedi ve 0,3 saniyede cevap verdi. Liste bağlanmadan önce üç adres de aynı cevabı alıyordu.
  2. .9 hiç cevap alamadı (/29’luk blok .0 ile .7 arasını kapsar, .9 dışında kalır). Switch bağlantıyı reddetmedi, sessizce düşürdü; istemci benim verdiğim 10 saniyelik bekleme süresinin sonunda vazgeçti.
  3. Ping iki adresten de geçti. Liste yalnız yönetim servislerini süzüyor. Ping’in cevap vermesinin neyi kanıtlamadığını ICMP yazımızda anlattık.

İkinci satır teşhiste yanıltır. Zaman aşımı bir ağ sorunu gibi görünür: adres yanlış, kablo kopuk ya da yol yok sanılır. Oysa switch ayaktadır ve ping cevap verir; bağlantıyı düşüren liste olabilir. Zaman aşımıyla reddin farkını port nedir yazımızda anlattık.

Benzetme burada kopuyor. Santralin listesinde olmayan numara meşgul sesi duyar ve aradığı yerin kapalı olduğunu anlar. Switch ise hiçbir ses vermez; arayan, hattın ölü mü yoksa kapalı mı olduğunu bilemez.

Kılavuzu da ölçümle sınayın. Lab switch’imin komut kılavuzu, SSH dahil bazı portlara giden paketlerin yönetim listesinden geçmediğini yazıyor. Ölçüm tersini gösterdi: liste .9’un SSH’ını düşürdü. Bu sonucu bugün iki kez aldım, 23 Eylül’deki ölçümde de aynısı çıkmıştı. Kılavuz cümlesinin neyi kastettiğini çözemedim.

Switch ACL Açık Oturumu Kesmez

Doğrulamanın kör noktası şudur: yeni bağlantılar listeye takılıyor, ama liste bağlandığı sırada açık olan oturumlara ne oluyor? Bunu ölçmek için listeyi bağlamadan önce .9 adresinden bir oturum açtım. Oturum üç saniyede bir switch’e saatini sordu. Sonra listeyi başka bir oturumdan bağladım.

Switch saatiyle akış şöyleydi:

  1. 01:48:15: .9 oturumu girdi ve saati sormaya başladı.
  2. 01:48:36 civarı: liste yönetim erişimine bağlandı.
  3. 01:48:45 civarı: .9’dan açılan yeni bağlantı zaman aşımına düştü.
  4. 01:49:24: .9’un açık oturumu hâlâ cevap alıyordu. 22 sorunun 22’si cevaplandı, 16’sı liste bağlandıktan sonra. Oturumu ben kapattım.

Liste yalnız yeni bağlantılara bakıyor. Aynı dakikada aynı adresin yeni bağlantısı düşerken eski oturumu çalışmaya devam etti.

Bu davranışın iki yüzü var. Birincisi, erişimini kestiğiniz kişi listeyle dışarıda kalmaz; açık bir oturumu varsa içeride kalır. İkincisi, kendi oturumunuz da aynı mekanizmayla korunur. Listeye kendinizi yanlışlıkla yazmadıysanız açık oturumunuz son kurtarma hattınızdır; onu kapatmadan listeyi düzeltebilirsiniz. Bu ikinci sonucu ayrıca ölçmedim, ölçtüğüm davranıştan çıkıyor.

Şube benzetmesinde de öyle. Santralin listesine sonradan yazılan yasak, sürmekte olan görüşmeyi kesmez; o hattı müdür kendisi kapatır.

Açık Oturumu Kapatmak: show sessions ve disconnect

Açık oturumu kapatmanın yolu önce onu bulmaktır. Listeyi yeniden bağladıktan sonra .9’dan yeni bir oturum açıktı ve show sessions onu kimlik numarasıyla gösterdi:

Switch Konsol Çıktısı
gmsw01#show sessions
Session User Name              Connection from   Idle     Session  Session
ID                                               Time     Time     Type
------- ---------------------- ----------------- -------- -------- ------------
0       ilker                  192.168.10.9      00:00:00 00:00:24 SSH
1       ilker                  192.168.10.1      00:00:00 00:00:12 SSH

Connection from sütunu oturumun hangi adresten geldiğini, soldaki ID sütunu da kapatmak için kullanılacak numarayı gösterir. .9’un oturumu 0 numaraydı:

Switch Konsolu
disconnect 0

.9’un ekranına şu düştü ve bağlantı kapandı:

Çıktı
*** CONNECTION CLOSED BY ADMIN ***
Connection to 192.168.10.2 closed by remote host.

Ardından show sessions’ta yalnız benim oturumum kaldı. Kendi oturumunuzun numarasını da aynı tabloda görürsünüz; yanlış numarayı yazarsanız kendi bağlantınızı kesersiniz. Kılavuza göre disconnect all bütün uzak oturumları kapatır ve seri konsol oturumu bu komutla kapatılamaz.

Doğru sıra şu: listeyi bağlayın, show sessions ile izinsiz kalan adreslerin oturumlarını bulun ve onları disconnect ile kapatın.

Switch ACL’ini Değiştirmek: Etkin Liste Düzenlenmez

Liste bağlıyken üzerinde değişiklik yapılamıyor. Bağlı listeye girmeyi denedim ve switch şunu söyledi:

Switch Konsol Çıktısı
gmsw01(config)#management access-list YONETIM-ACL
List "YONETIM-ACL" is active. Deactivate using 'no management access-class'.

Değişikliğin sırası bu yüzden şöyledir:

  1. no management access-class ile listeyi çözün. Bu andan itibaren yönetim erişimi kısıtsızdır.
  2. Listeyi düzenleyin. Kılavuza göre yeni kural listenin sonuna eklenir; sırayı priority numarası belirler.
  3. management access-class ile listeyi yeniden bağlayın ve yeni bir oturumla sınayın.

Birinci ile üçüncü adım arasındaki aralıkta liste koruma sağlamaz. Bu işi bir bakım penceresinde yapın.

23 Eylül’deki ölçümde tek bir kuralı silmenin yolunu bulamadım ve listeyi silip yeniden yazdım. Kurallara 10, 20, 30 gibi aralıklı numaralar vermek, araya kural eklemeyi listeyi baştan yazmadan mümkün kılar. Aynı iki kuralın sırası değişince sonucun nasıl tersine döndüğünü ACL nedir yazısının kural sırası bölümünde ölçtüm.

Kılavuzda bir seçenek daha var: management access-class console-only switch’i yalnız konsoldan yönetilebilir yapar. Bunu ölçmedim, çünkü lab’da konsol takılı değildi ve bu seçenek uzaktan erişimimi tamamen keserdi.

Switch ACL Reddettiği Bağlantıyı Günlüğe Yazar mı?

Lab switch’im yazmadı. .9’dan iki kez bağlanmayı denedim ve günlükte bu denemelere ait tek satır oluşmadı. Switch yalnız başarılı girişleri, girenin adresiyle birlikte yazdı:

Switch Konsol Çıktısı
gmsw01#show logging
...
<190> Sep 27 01:48:30 gmsw01-1 CLI_WEB[emWeb]: cmd_logger_api.c(260) 1278 %% [CLI:ilker:192.168.10.1] User has succesfully logged in
<189> Sep 27 01:48:30 gmsw01-1 TRAPMGR[emWeb]: traputil.c(777) 1277 %% Multiple Users: CPU
<190> Sep 27 01:48:15 gmsw01-1 CLI_WEB[emWeb]: cmd_logger_api.c(260) 1260 %% [CLI:ilker:192.168.10.9] User has succesfully logged in
...

Köşeli parantezin içi girişi yapan kullanıcıyı ve adresini taşır: [CLI:ilker:192.168.10.9]. Multiple Users satırı, ikinci bir oturum açıldığında düştü.

Benzetme ikinci kez kopuyor. Bir santral cevapsız aramaları listeler; switch reddettiği bağlantıların izini tutmadı. Bu yüzden liste bir saldırıyı durdurur ama size haber vermez. Kimin girdiğini görmek için bu giriş satırlarını merkezi bir log sunucusunda toplamak gerekir; kurulumunu Linux syslog sunucusu kurulumu yazımızda anlattık.

Switch ACL’de Sık Yapılan Hatalar

Liste beklediğiniz gibi çalışmıyorsa ya da erişimi kaybettiyseniz önce şunlara bakın:

  • Listeyi bağlayıp açık oturumları unutmak. Liste yalnız yeni bağlantıları keser; izinsiz kalan açık oturumları show sessions ile bulup disconnect ile kapatın.
  • Kendi adresini listeye yazmadan bağlamak. Yeni bağlantınız düşer. Açık oturumunuz duruyorsa oradan düzeltin, kapattıysanız geriye konsol ya da yeniden başlatmak kalır.
  • Otomatik işleri unutmak. Gece yedeği ve izleme de switch’e bağlanır; listede değillerse sessizce durur.
  • Yalnız SSH’a izin verip web arayüzünü ya da SNMP’yi kullanmak. service ssh yalnız SSH’ı açar; öteki servisler örtük redde düşer.
  • Zaman aşımını ağ arızası sanmak. Switch izinsiz bağlantıyı reddetmez, düşürür; ping cevap verirken SSH’ın zaman aşımına düşmesi listeyi işaret eder.
  • Reddi günlükte aramak. Lab switch’im reddedilen denemeyi yazmadı; iz yalnız istemci tarafında kalır.
  • Bağlı listeyi düzenlemeye çalışmak. Önce çözülür, sonra düzenlenir; aradaki süre korumasızdır.
  • Kaydetmemek. Liste yalnız çalışan yapılandırmada kalırsa switch ilk yeniden başlatmada listesiz açılır.

Sonuç: Liste Yeni Bağlantıyı Keser, Açık Oturumu Değil

Switch ACL yapılandırması, yönetim kapısını adrese göre daraltır ve iki adımda çalışır: liste yazılır, sonra bağlanır. Lab switch’imde liste bağlandıktan sonra izinsiz adresin yeni SSH bağlantısı 10 saniyede zaman aşımına düştü, ping ise geçti.

Aynı adresin liste bağlanmadan önce açılmış oturumu cevap almaya devam etti ve ancak disconnect ile kapandı. Switch reddettiği denemeleri günlüğe yazmadı, yalnız başarılı girişleri kaynak adresiyle kaydetti.

Şubenin santrali yalnız listesindeki numaraları bağlar. Sürmekte olan görüşmeyi ise liste değil müdür kapatır.

Rehberin sıradaki adımı, switch’in olup biteni bir log sunucusuna göndermesidir; kurulumunu switch syslog ayarı yazımızda anlattık. Sıralamanın tamamı switch yapılandırma rehberimizde duruyor. Erişim listelerinin her katmandaki ortak kurallarını ACL nedir yazımızda anlattık.

Switch ACL Yapılandırması Hakkında Sık Sorulan Sorular

Tutmaz. Yönetim erişim listesi yalnız switch'in kendisine gelen yönetim bağlantılarını süzer; kullanıcıların birbirine ya da internete giden trafiğine dokunmaz. Lab switch'imde liste bağlıyken izinsiz adresin SSH bağlantısı düştü, ama aynı adresten ping geçmeye devam etti. Ağlar arası trafiği kuralla yönetmek firewall'un ya da ayrı bir trafik ACL'inin işidir.
Açık oturumunuzu kapatmadıysanız ondan düzeltirsiniz. Lab switch'imde liste bağlandıktan sonra izinsiz kalan bir adresin açık oturumu cevap almaya devam etti; liste yalnız yeni bağlantıları kesti. Oturum kapandıysa uzaktan dönüş yolu kalmaz, geriye konsol ya da switch'i yeniden başlatmak kalır. Listeyi kaydetmediyseniz yeniden başlatılan switch listesiz açılır.
Lab switch'im kaydetmedi. İzinsiz adresten iki kez bağlanmayı denedim ve günlükte hiçbir satır oluşmadı. Switch yalnız başarılı girişleri, girenin adresiyle birlikte yazdı. Reddedilen bir deneme bu yüzden ancak istemci tarafında, zaman aşımı olarak görünür.
Adres yerine ağ yazılır ve bir maskeyle sınırlanır. Lab switch'imde 192.168.10.0 adresini 255.255.255.248 maskesiyle yazdım; bu kural .0 ile .7 arasındaki sekiz adresi kapsar. Ağın içindeki .3 adresi SSH'a ulaştı, dışındaki .9 adresi zaman aşımına düştü. Maskeyi yönetim bilgisayarlarının gerçekten durduğu aralık kadar dar tutun.
İlker Pehlivan
Yazan

BT Danışmanı | Ağ, Sistem ve Güvenlik Yönetimi

İlker Pehlivan, karmaşık BT altyapılarını ölçeklenebilir ve güvenli sistemlere dönüştürür. Buradaki rehberleri kendi laboratuvarında kurup ölçerek yazar.

LinkedIn

Benzer Makaleler

Kurumsal Network Kurulumu altındaki diğer 114 makale