Kurumsal Network Kurulumu

Switch Sıkılaştırma: Yönetim, Kontrol ve Veri Düzlemi

Switch sıkılaştırma adım adım: SSHv1, enable parolası, SNMP, web arayüzü ve boş portlar; lab switch'inde önce ve sonra ölçümü, sıkılaştırmanın bozduğu yedek.

İlker Pehlivan

Switch sıkılaştırma, bir switch’te açık kalan ve kullanılmayan her kapıyı kapatarak yalnız gereken hizmetleri sunar hâle getirmektir. Bu yazıda lab switch’imi bu gözle denetledim, bulduğum açıkları kapattım ve her adımın öncesini ve sonrasını ölçtüm. Değişikliklerden birinin gece çalışan yedek betiğini sessizce bozduğunu da ölçtüm.

Bir süpermarket şubesinde kapanıştan sonra müdür son bir tur atar. Arka kapı kapalı mı, kullanılmayan reyonun ışığı sönük mü, kasalar sıfırlandı mı, alarm kurulu mu? Tur her gece aynı sırayla yapılır ve atlanan tek madde, şubenin o gece açık kalan tek yeridir. Switch sıkılaştırma da switch’in kapanış turudur.

Switch sıkılaştırma benzetmesi: süpermarket şubesinde kapanıştan sonra müdür elinde fenerle son turu atıyor, avucuyla arka kapıyı yokluyor, kullanılmayan reyonun girişine ip gerili, kapının yanında alarm paneli yanıyor
Kapanış turunda her kapı tek tek yoklanır ve kullanılmayan reyonun ışığı söner. Switch sıkılaştırma da switch'in kapanış turudur.

Bu yazı switch yapılandırma rehberimizin son 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. Sunucu, ağ cihazı ve uç noktayı birlikte ele alan hizmetimizi ise güvenlik sıkılaştırma sayfamızda anlattık.

Switch Sıkılaştırmada Üç Düzlem

Bir switch’in işi üç katmana ayrılır ve sıkılaştırma bu üç katmanı ayrı ayrı ele alır:

  1. Yönetim düzlemi (management plane): switch’i kimin, hangi yoldan yönettiği. SSH, web arayüzü, SNMP, konsol ve hesaplar buradadır. Switch’in kendisini ele geçirmek isteyen biri önce bu katmana bakar.
  2. Kontrol düzlemi (control plane): switch’in kendi kararlarını vermek için konuştuğu protokoller. Döngüyü önleyen STP ve saat için NTP buradadır.
  3. Veri düzlemi (data plane): kullanıcı trafiğinin aktığı portlar. Kullanılmayan portlar ve port güvenliği buradadır.

Bu yazının ağırlığı yönetim düzlemindedir, çünkü lab switch’imde bulduğum açıkların çoğu oradaydı ve kullanıcı trafiğine dokunmadan kapatılabiliyordu.

Önce Denetim: Lab Switch’inde Açık Kalanlar

Sıkılaştırmaya bir şey değiştirmeden, yalnız okuyarak başladım.

Her bulguyu gösteren komut tabloda:

BulguGösteren komut
SSH’ın 1. sürümü açıkshow ip ssh
Konsol girişi parola sormuyorshow authentication methods
Enable parolası yok, yetki yükseltme parolasız geçiyorshow authentication methods
Hatalı girişte hesap kilitlenmiyorshow passwords configuration
HTTPS web arayüzü açıkshow running-config | include http
SNMP her adrese açıkshow snmp
Hiçbir port kapatılmamışshow running-config | include shutdown (boş döndü)
SFP+ yuvaları varsayılan VLAN’dashow vlan

Komutların çıktısından ilgili satırlar:

Switch Konsol Çıktısı
gmsw01#show ip ssh
...
Protocol Levels: Versions 1 and 2.
...
gmsw01#show authentication methods
...
defaultList         :  none
...
enableList          :  enable   none
...
Console  defaultList          enableList
...
gmsw01#show passwords configuration
...
Lockout Attempts............................... 0
...
gmsw01#show running-config | include http

no ip http server
ip http secure-server

gmsw01#show snmp

Community-String     Community-Access View Name        IP Address
-------------------- ---------------- ---------------- ----------------
sistemkusuizleme          Read Only        Default          All

Konsol hattı defaultList listesini kullanıyor ve bu listenin tek yöntemi none: konsoldan giren kimseye parola sorulmuyor. Enable listesinin son yöntemi de none; enable parolası tanımlı olmadığı için yetki yükseltme parolasız geçiyor. Bir satırı okumakla o açığın gerçekten kullanılabildiğini görmek farklı şeyler olduğu için iki bulguyu ayrıca sınadım.

SSHv1 Gerçekten Açık mı?

Açıktı: switch’e 1. sürümle bağlanıp giriş yaptım. Günümüz SSH istemcilerinin çoğu bu sürümü artık konuşmuyor, PuTTY’nin komut satırı istemcisi plink ise hâlâ konuşuyor:

Çıktı
Remote version: SSH-1.99-OpenSSH_6.5
...
Using SSH protocol version 1
gmsw01#

Switch kendini SSH-1.99 diye tanıttı; bu sürüm numarası hem 1. hem 2. sürümü kabul ettiği anlamına gelir. Bu bağlantıda switch’in sunduğu anahtar 1024 bitlik bir RSA anahtarıydı. SSHv1’in neden kapatılması gerektiğini SSH makalemizde anlattık.

SNMP’yi Community String’i Bilen Herkes Okuyabiliyor mu?

Okuyabiliyordu. SNMP community string, switch’i izleyen sunucunun kullandığı ortak paroladır ve lab’da switch’i Cacti sorguluyor. Aynı adı bilen, izleme sunucusu olmayan başka bir makineden sorgu attım:

Bash
$ snmpget -v2c -c sistemkusuizleme -t 3 -r 0 192.168.1.2 1.3.6.1.2.1.1.5.0 1.3.6.1.2.1.1.1.0
iso.3.6.1.2.1.1.5.0 = STRING: "gmsw01"
iso.3.6.1.2.1.1.1.0 = STRING: "..."

Switch cevap verdi; ikinci satır cihazın modelini ve yazılım sürümünü düz metin olarak veriyordu (burada kısalttım). Bir saldırgan için bu, hangi açığı arayacağını söyleyen bir etikettir. Community string’in neden bir parola sayılmadığını SNMP makalemizde paket dökümüyle gösterdik.

Yönetim Düzlemini Sıkılaştırmak

Değişikliklerin hepsini, ayrıca açık tuttuğum ikinci bir SSH oturumundan yaptım. Yönetim düzlemindeki bir hata, onu düzelten bağlantıyı da kesebilir; açık tutulan oturum o durumda geri dönüş yoludur.

Switch Konsolu
configure
ip ssh protocol 2
enable password <enable parolası>
username yedekci password <parola> privilege 15
banner login "Bu cihaz Sistem Kusu lab agina aittir. Yetkisiz erisim yasaktir ve kayit altina alinir."
no ip http secure-server
no snmp-server community sistemkusuizleme
snmp-server community sistemkusuizleme ro ipaddress 192.168.1.45
exit

Satırların her biri tablodaki bir bulguyu kapatıyor:

  • ip ssh protocol 2 yalnız 2. sürümü bırakır.
  • enable password yetki yükseltmeyi parolaya bağlar. Parola tanımlı değilken 1. seviyedeki bir kullanıcı enable yazıp parola sorulmadan en yüksek yetkiye çıkabiliyordu; bunu switch yapılandırma yedeği yazısında yedek hesabıyla ölçmüştüm.
  • username yedekci ... privilege 15 o yedek hesabını açıkça 15. seviyeye alır. Yapılandırmanın tamamını okumak bu switch’te 15. seviye istiyor. Enable parolasını yedek sunucusundaki betiğe yazmak yerine yetkiyi hesaba açıkça verdim; hesap yalnız anahtarla ve yalnız yedek sunucusundan giriyor.
  • banner login girişten önce gösterilen uyarı metnidir. Yetkisiz erişimin yasak olduğunu girişten önce söylemek, bir olay sonrasında “bilmiyordum” savunmasını zayıflatır. Metni Türkçe harf kullanmadan yazdım, çünkü onu SSH istemcisi, konsol ve yedek betiği gibi farklı yerler okuyacak ve hepsinin aynı karakter kodlamasını kullandığını varsaymak istemedim.
  • no ip http secure-server kullanılmayan HTTPS web arayüzünü kapatır. Lab’da switch’i yalnız SSH ile yönetiyorum; web arayüzü, bakılmayan ikinci bir kapıydı.
  • SNMP community’sini silip adres kısıtıyla yeniden tanımladım. Silmeden aynı adla ikinci bir tanım yazmak switch’te Error:That community already exists. hatası veriyor. Yeni tanımda yalnız Cacti’nin adresi var.

SSH oturumunun boşta kalma süresini de 10 dakikayla sınırlamak istedim ve line ssh altında exec-timeout 10 yazdım. Switch komutu kabul etti ama yapılandırmaya hiçbir satır eklenmedi. show line ssh süreyi zaten 10 minutes 0 seconds gösteriyordu; yazdığım değer, varsayılanın kendisiydi. Bir ayarı değiştirmeden önce varsayılanını okumak, işe yaramayan satırları önler.

Sıkılaştırma Sonrası Sınama: Her Kapıyı Ayrı Ayrı Denemek

Değişiklikten sonra her bulguyu yeniden sınadım. İlk deneme yine 1. sürümle bağlanmaktı:

Çıktı
Remote version: SSH-2.0-OpenSSH_6.5
...
FATAL ERROR: SSH protocol version 1 required by our configuration but not provided by remote

Switch artık kendini SSH-2.0 diye tanıtıyor ve 1. sürümü reddediyor. 2. sürümle giriş yapınca afiş kimlik doğrulamadan önce göründü:

Çıktı
Pre-authentication banner message from server:
| Bu cihaz Sistem Kusu lab agina aittir. Yetkisiz erisim yasaktir ve kayit al
> tina alinir.
End of banner message from server

Web arayüzüne HTTPS ile bağlanmayı denedim ve bağlantı kurulamadı. Adresi listede olmayan makineden attığım SNMP sorgusu zaman aşımına düştü:

Çıktı
Timeout: No Response from 192.168.1.2.

Kısıtın izlemeyi bozmadığını da sınadım. Cacti sunucusunu açıp aynı sorguyu oradan attım ve switch’in adı geldi (STRING: "gmsw01"). Bir kısıtın doğru olduğunu anlamak için hem dışarıda bıraktığı yeri hem de içeride tuttuğu yeri sınamak gerekir.

Enable parolasını 1. seviyede geçici bir kullanıcıyla sınadım:

Switch Konsol Çıktısı
gmsw01>enable
Password:************
Authentication failed.
gmsw01>show running-config
             ^
% Invalid input detected at '^' marker.

Yanlış parolayla yetki yükselmedi ve kullanıcı > isteminde kaldı. Sınamadan sonra geçici kullanıcıyı sildim.

Veri Düzlemi: Switch’te Kullanılmayan Portları Kapatmak

Yönetim düzleminden sonra kullanıcı trafiğinin aktığı portlara geçtim. Lab switch’imde hiçbir port kapatılmamıştı. Kullanılmayanlar için ayrılmış VLAN 999’daki iki port ve dört SFP+ yuvası açık duruyordu; SFP+ yuvaları üstelik varsayılan VLAN 1’deydi:

Switch Konsol Çıktısı
VLAN   Name                             Ports          Type
-----  ---------------                  -------------  --------------
1      default                          Po1-64,        Default
                                        Te1/0/1-4
...
999    KULLANILMAYAN                    Gi1/0/47-48    Static
Switch Konsolu
configure
interface range gi1/0/47-48
shutdown
exit
interface range te1/0/1-4
switchport access vlan 999
shutdown
exit
exit

Kapatılan portu ayrıca kullanılmayan VLAN’a almak ikinci bir katmandır. Biri portu yanlışlıkla yeniden açsa bile o porta takılan cihaz kimsenin ağına düşmez. Şubede de kullanılmayan reyonun ışığı söndürülür ve girişine ip gerilir; ışığı biri yakarsa bile rafların boş olduğu görülür. Kullanılmayan VLAN’ın neden ayrıldığını ve silinen bir VLAN’ın portunun nereye düştüğünü switch VLAN yapılandırması yazımızda, VLAN 1’in neden sorun çıkardığını VLAN makalemizde anlattık.

Veri düzleminde bir bulguyu bilerek açık bıraktım. Switch’in hatalı biçimlendirilmiş paketleri donanımda düşüren DoS korumalarının hepsi kapalıydı: kaynak ve hedef adresi aynı olan paket, anlamsız bayraklı TCP paketi, aşırı büyük ICMP paketi gibi. Bunları bu yazıda açmadım, çünkü hangi trafiği keseceklerini lab’da ölçemedim; ölçmeden açılan bir koruma meşru trafiği de kesebilir.

Yayın fırtınası sınırını (storm control) storm control ölçümünde gösterdim; port güvenliği ve DHCP gözetimi kendi yazılarında ölçülecek.

Kontrol Düzlemi: Switch’in Saati ve Döngü Korumaları

Kontrol düzleminin sıkılaştırmadaki iki ayağı saat ve döngüdür. Saat, logların ve kimlik doğrulamanın dayandığı zemindir; switch’in saatini iç NTP sunucusuna bağlamayı switch NTP server ayarı yazımızda ölçtüm. Döngü korumaları ise kullanıcı portuna takılan yanlış bir cihazın STP kararlarını bozmasını önler. Bu korumaları ölçmek için switch’e fiziksel bir döngü kurmak gerekiyordu; ölçümü STP korumaları yazımızda yaptım.

Sıkılaştırmanın Bozduğu Şey: Gece Yedeği

Her şey sınandıktan sonra switch’in yapılandırmasını her gece yedekleyen betiği elle çalıştırdım. Betik başarıyla bitti ve yeni bir sürüm kaydetti. Sürümün içine bakınca bir terslik gördüm: satırların arasında --More-- or (q)uit duruyordu.

Nedeni enable parolasıydı. Yedek betiği switch’e girince önce enable yazıyordu. Parola tanımlı değilken bu satır sessizce geçiyordu; artık switch parola sordu ve betiğin sonraki satırı olan terminal length 0 parola diye yutuldu:

Switch Konsol Çıktısı
gmsw01#
enable
Password:*****************
Authentication failed.

Yıldızların sayısı terminal length 0 ifadesinin karakter sayısıyla aynı, 17. Sayfalama açık kaldı ve çıktı ilk sayfadan sonra kesildi. Betiğin denetimi yalnız ilk sayfadaki hostname satırına baktığı için 209 satırlık, içinde 11 kez --More-- geçen yarım bir yedek tam yedek diye kaydedildi.

Betikten enable satırını çıkardım ve denetimine sayfalama ile son satır koşullarını ekledim; ayrıntısını yedek makalesinin sınama bölümüne yazdım. Düzeltilmiş betiğin aldığı tam yedek, sıkılaştırmanın kendisini de satır satır kaydetti. Sıkılaştırmadan önceki ve sonraki iki yedeğin farkı:

Çıktı
-ip http secure-server
-username "yedekci" password <özet> privilege 1 encrypted
+username "yedekci" password <özet> privilege 15 encrypted
+ip ssh protocol 2
...
+interface Te1/0/1
+shutdown
+switchport access vlan 999
...
-snmp-server community "sistemkusuizleme" ro
+snmp-server community "sistemkusuizleme" ro ipaddress 192.168.1.45
+enable password <özet> encrypted
+banner login "Bu cihaz Sistem Kusu lab agina aittir. Yetkisiz erisim yasaktir ve kayit altina alinir."

Buradan çıkan kural sıkılaştırmanın kendisi kadar önemli: switch’e giren her otomatik işi, sıkılaştırmadan sonra elle bir kez çalıştırıp sınayın. Yedek, izleme ve envanter betikleri kapatılan kapıların arkasında kalabilir. Kapanış turunu atan müdür de sabah gelecek tedarikçinin hangi kapıdan gireceğini bilmek zorundadır.

Switch Sıkılaştırmada Açık Bıraktıklarım ve Nedenleri

Denetimdeki bulguların bazılarını bilerek kapatmadım. Her birinin nedeni ölçülebilir bir risk:

  • Konsol girişine parola: konsol kablosu şu an bağlı değil, ayarı sınayamam. Sınanmamış bir konsol ayarı, switch’e son erişim yolunu kapatabilir.
  • Hatalı girişte hesap kilitleme: kilitleme yerel yönetici hesabını da kilitleyebilir. Konsol yolu sınanmadan açmak, kendini dışarıda bırakma riskidir. Kilitlemenin bir deneme hesabında nasıl çalıştığını switch’te yerel yönetici hesabı yazısında ölçtüm.
  • Kullanıcı portlarında LLDP: switch her portundan yarım dakikada bir adını ve port açıklamasını duyuruyor; kullanıcı portlarında gönderimi kapatmak ayrı bir turdur. Neyin duyurulduğunu LLDP nedir yazımızda, gönderimi kapatmayı ve bunun LLDP-MED’i de kapattığını switch LLDP yapılandırması yazımızda ölçtük.
  • SNMPv3: community string yerine kullanıcı ve şifreleme kullanan 3. sürüm daha güvenlidir, ama Cacti tarafının da yeniden yapılandırılmasını ister. Sürümlerin farkını SNMP makalemizde anlattık. Switch’te v3 kullanıcısını tanımlamayı ve yanlış parolaya verdiği cevabı switch SNMP yapılandırması yazımızda anlattık.
  • Yazılım güncellemesi: switch’in flash belleğindeki yazılım imajı 2015 tarihli ve SSH sunucusu yalnız eski ssh-rsa ve ssh-dss anahtar türlerini sunuyor. Bu ancak yazılım güncellemesiyle düzelir ve ayrı bir iştir.
  • Parolaların saklanma biçimi: switch parolaları salt eklenmemiş MD5 özetiyle saklıyor; bunu yedek makalesinde ölçtüm. Yapılandırmadan değiştirilemiyor; yapılabilecek olan, yedek dosyalarını korumak ve yönetici girişini TACACS+ gibi merkezi bir kimliğe taşımaktır.

Yönetim erişimini yalnız belirli adreslere indirmek de sıkılaştırmanın bir adımıdır; lab’da ölçtüğüm hâlini switch ACL yapılandırması yazımızda anlattım.

Switch Sıkılaştırmada Sık Yapılan Hatalar

  • Tek oturumla yönetim düzlemini değiştirmek. SSH, ACL ya da kimlik ayarındaki bir hata, o ayarı yazdığınız oturumu da kesebilir. Değişiklik boyunca ikinci bir oturumu açık tutun.
  • Kısıtı yalnız dışarıdan sınamak. SNMP’yi daralttıktan sonra dışarıdaki makinenin zaman aşımına düşmesi yarı sınamadır; izleme sunucusunun hâlâ cevap aldığını da görün.
  • Varsayılanı okumadan ayar yazmak. Lab’da yazdığım zaman aşımı değeri varsayılanın kendisiydi. Değiştirmeden önce bugünkü değeri okuyun.
  • Sıkılaştırmadan sonra otomasyonu sınamamak. Yedek betiği sıkılaştırmadan sonra başarıyla bitti ve yarım bir yedek kaydetti. Başarı mesajı değil, çıktının kendisi sınanır.

Sonuç: Kapanış Turu Her Gece Aynı Sırayla Atılır

Switch sıkılaştırma tek seferlik bir ayar değil, bir denetim sırasıdır: önce oku, sonra kapat, sonra hem dışarıda bıraktığını hem içeride tuttuğunu sına. Lab switch’imde SSHv1, parolasız enable, açık web arayüzü ve herkese açık SNMP kalmıştı. Dördü de kullanıcı trafiğine dokunmadan kapandı. Kapattığım kapılardan biri ise gece yedeğini sessizce bozdu ve bu, ancak yedeğin içine bakınca görüldü.

Kapanış turunu atan müdür de her gece aynı sırayla yürür ve sabah kimin hangi kapıdan gireceğini bilir. Bir switch’i kurulumdan bu son adıma kadar götüren sıra switch yapılandırma rehberimizde duruyor.

Switch Sıkılaştırma Hakkında Sık Sorulan Sorular

Yönetim düzleminden, yani switch'i kimin ve nasıl yönettiğinden başlayın. Yalnız SSH'ın 2. sürümüne izin vermek, enable parolası tanımlamak, kullanılmayan web arayüzünü kapatmak ve SNMP'yi izleme sunucusuyla sınırlamak kullanıcı trafiğine dokunmayan ve etkisi büyük dört adımdır. Lab switch'imde bu dört adımın dördü de atılmamıştı.
Olabilir. Lab switch'im SSH'ın hem 1. hem 2. sürümünü kabul ediyordu ve PuTTY'nin plink istemcisiyle 1. sürümle giriş yapabildim. Switch'in hangi sürümleri kabul ettiğini switch'teki SSH durum komutundan ya da istemcinin bağlantı ayrıntısındaki sürüm satırından görebilirsiniz: SSH-1.99 iki sürümü de, SSH-2.0 yalnız 2. sürümü kabul ettiği anlamına gelir.
Kullanıcı trafiğinde kesinti yaratmaz; bu yazıdaki adımların hiçbiri kullanılan bir portun trafiğine dokunmadı. Ama switch'e bağlanan yönetim işlerini etkileyebilir. Lab'da enable parolası tanımlandıktan sonra gece yedek betiği yarım bir yedeği tam diye kaydetti. Her sıkılaştırmadan sonra yedek ve izleme işlerini elle bir kez çalıştırıp sınayın.
Tek başına yetmez ama ucuz ve etkili bir adımdır. Kapatılan portu ayrıca kullanılmayan bir VLAN'a almak, biri portu yeniden açsa bile oradaki cihazın başka bir ağa düşmemesini sağlar. Lab switch'imde dört SFP+ yuvası varsayılan VLAN'da ve açık duruyordu; bunları da kapatıp kullanılmayan VLAN'a aldım.
İ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