SNMP (Simple Network Management Protocol), ağ cihazlarının (switch, router, sunucu vb.) performansını izlemek ve yönetmek için kullanılan bir TCP/IP protokolüdür. SNMP destekli cihazlar, bir yönetim merkezi tarafından izlenebilir ve kontrol edilebilir. Özellikle büyük ağlarda, cihazların manuel olarak izlenmesi zor olduğundan, SNMP verimliliği artırır.
SNMP Nasıl Çalışır?
SNMP, cihazlardaki bilgileri depolayan ve “Management Information Base” (MIB) adı verilen bir veri deposu kullanır. Yönetim sistemi, SNMP komutlarını kullanarak MIB’deki verileri okuyabilir veya değiştirebilir. SNMP, port 161 ve 162 üzerinden çalışır ve bir ağda birden fazla yönetici bulunabilir.
SNMP Versiyonları ve Kullanım Şekilleri
1. SNMPv1 (Simple Network Management Protocol Version 1)
İlk SNMP versiyonu olup hala yaygın olarak kullanılır. Aşağıdaki temel komutlar ile cihazların yönetimi sağlanır:
- GET: SNMP yöneticisi tarafından bir SNMP nesne değişkeninin değerini almak için kullanılır.
- GETNEXT: MIB’de bir sonraki nesne değişkeninin değerini almak için kullanılır.
- SET: SNMP yöneticisi tarafından bir nesne değişkeninin değerini değiştirmek için kullanılır.
- TRAP: Cihazda oluşan önemli bir olayı SNMP yöneticisine bildirmek için kullanılır.SNMPv1, UDP ve IP üzerinden çalışır. Güvenlik düzeyi düşük olup, sadece “community string” ile kimlik doğrulama yapılır. Bu dize, cihazlara erişim izni sağlar ancak şifrelenmez, bu yüzden güvenlik açığı oluşturur.
2. SNMPv2c (Simple Network Management Protocol Version 2c)
SNMPv1’in geliştirilmiş versiyonudur ve daha fazla komut ve mesaj formatı içerir. Güvenlik açısından, SNMPv1 ile aynı düzeyde kalır (community string kullanımı).
- GETBULK: Büyük miktarda veri almak için GETNEXT komutunun tekrarlı kullanımı yerine tercih edilir. Çok sayıda nesne değişkenini tek bir istekle alır.
- INFORM: TRAP komutuna ek olarak, SNMP yöneticisine iletilen bilginin alındığını onaylatmak için kullanılır.
- v2TRAP: SNMPv1’in TRAP komutunu geliştirerek, daha fazla bilgi ve hata kontrolü ekler.Farklar: SNMPv2c, daha iyi hata geri bildirimi ve genişletilmiş mesajlaşma seçenekleri sunar. Ancak, SNMPv1 ile tamamen uyumlu değildir çünkü farklı mesaj formatları ve protokol işlemleri kullanır.
3. SNMPv3 (Simple Network Management Protocol Version 3)
En yeni ve en güvenli SNMP versiyonudur. SNMPv1 ve SNMPv2c’nin fonksiyonlarını barındırmakla birlikte, ek olarak güvenlik özellikleri ile donatılmıştır:
- Kimlik Doğrulama (User Authentication): SNMP mesajlarının kaynağının geçerli bir kullanıcıdan gelip gelmediğini doğrular. Cihazlar ve yöneticiler, her kullanıcı için tanımlanmış ortak bir şifre ile mesajları doğrular.
- Şifreleme (Encryption): Paket içerikleri, izinsiz kişilerin görememesi için şifrelenir. Mesaj içeriği, isteğe bağlı olarak ikinci bir ortak anahtar ile şifrelenir.
- Mesaj Bütünlüğü (Message Integrity): Mesajın taşınma sırasında değiştirilmediğini garanti eder.Kullanım Komutları:
- SNMPv3’te temel işlevler önceki versiyonlarla benzerdir (GET, SET, TRAP vb.), ancak SNMPv3 yeni bir mesaj formatı ve daha gelişmiş güvenlik sağlar. TRAP yerine INFORM komutu daha sık kullanılır çünkü iletilen verinin alındığını doğrular.
- Kullanıcı Yetkilendirme: Kullanıcılar, her biri için tanımlı şifreler ile yetkilendirilir.
- Veri Şifreleme: Veriler şifrelenerek güvenlik artırılır.
- Mesaj Doğrulama: Mesajın kaynağının geçerli olup olmadığını kontrol eder, bu da daha güvenli bir yapı sağlar.
SNMP Komutlarının Kullanım Örnekleri
GET: Yönetici, ağ cihazından belirli bir değeri almak istediğinde kullanır. Örneğin, bir yönlendiricinin CPU kullanımını almak için GET komutu gönderilir.
snmpget -v2c -c public 192.168.1.1 sysUpTime.0
SET: Cihazın bir yapılandırmasını değiştirmek için kullanılır. Örneğin, bir yönlendiricinin arayüzünü devre dışı bırakmak için SET komutu kullanılır.
snmpset -v2c -c private 192.168.1.1 ifAdminStatus.1 i 2
TRAP: Cihaz, önemli bir olay oluştuğunda SNMP yöneticisine bildirim gönderir. Örneğin, bir yönlendirici arayüzü aşağı düştüğünde otomatik olarak bir TRAP mesajı gönderir.
router(config)# snmp-server enable traps
Yukarıdaki örnek komutlar arduino için kullanım örnekleridir.
SNMP Konfigürasyonu
SNMP’nin konfigürasyonu, hangi versiyonu kullanacağınıza bağlı olarak değişiklik gösterir. Aşağıda, SNMPv1/v2c ve SNMPv3 için ayrı ayrı yapılandırma adımları verilmiştir.
1. SNMPv1 ve SNMPv2c Konfigürasyonu
SNMPv1 ve SNMPv2c’de, cihazlarla iletişim kurmak için community string adı verilen bir kimlik doğrulama yöntemi kullanılır. Bu dize, ağ cihazlarına belirli yetkilerle erişim sağlar.
Adım 1: SNMP Sunucusunu Etkinleştirme
İlk olarak, SNMP sunucusunu etkinleştirmek için aşağıdaki komutu kullanın:
router#enable
Parola girmeniz gerekebilir. Daha sonra cihaz yapılandırma moduna geçmelisiniz:
router#configure terminal
Adım 2: Community String Tanımlama
Community string, SNMP yöneticisinin cihaz üzerinde hangi tür işlemleri yapabileceğini belirler. İki temel erişim seviyesi vardır:
- Read-Only (RO): Cihaz üzerinde sadece izleme yapılabilir, değişiklik yapılamaz.
- Read-Write (RW): Hem izleme yapılabilir hem de cihazda değişiklikler yapılabilir.
Örneğin, sadece izleme için bir public community string oluşturmak için:
router(config)#snmp-server community public RO
Hem izleme hem de yazma yetkisi verecek bir private community string oluşturmak için:
router(config)#snmp-server community private RW
Adım 3: Çıkış Yapma
SNMP sunucusunu yapılandırdıktan sonra çıkış yaparak ayarları tamamlayabilirsiniz:
router(config)#exit
Bu komutlar, SNMP yöneticisinin SNMP’yi kullanarak cihazın yapılandırmasını izlemesine ve gerektiğinde değiştirmesine olanak tanır.
2. SNMPv3 Konfigürasyonu
SNMPv3, önceki versiyonlara kıyasla daha fazla güvenlik sunar ve daha karmaşık bir yapılandırmaya sahiptir. Bu versiyon, kimlik doğrulama ve şifreleme özellikleri ile mesajların gizliliğini ve bütünlüğünü sağlar. Aşağıdaki adımlar, SNMPv3’ün temel yapılandırma sürecini açıklar.
Adım 1: SNMP Görünümü (View) Oluşturma
SNMPv3’te, cihazın hangi verilerini görüntüleyebileceğinizi belirlemek için bir “görünüm” (view) oluşturmanız gerekir. Örneğin, “internet” adlı bir görünüm oluşturmak için:
router#configure terminal
router(config)#snmp-server view target1 internet included
Bu komut, SNMP yöneticisinin internetle ilgili verileri görüntüleyebileceği bir görünüm tanımlar.
Adım 2: SNMP Grubu Oluşturma
SNMPv3’te, kullanıcılar gruplara atanır ve her grubun belirli yetkileri vardır. “mygroup” adında bir grup oluşturup bu gruba kimlik doğrulama yetkisi vermek için:
router(config)#snmp-server group mygroup v3 auth write target1
Bu komut, “target1” görünümü üzerinde yazma yetkisi olan bir grup oluşturur.
Adım 3: Kullanıcı Ekleme
Her grup için SNMPv3’te kullanıcılar tanımlanmalıdır. “mygroup” grubuna bir kullanıcı eklemek için:
router(config)#snmp-server user myuser mygroup v3 encrypted auth md5 mypassword
Bu komut, “myuser” adlı bir kullanıcı oluşturur ve bu kullanıcı için MD5 algoritması ile kimlik doğrulama yapılmasını sağlar. Şifreleme kullanmak için “encrypted” parametresi eklenir.
Adım 4: Çıkış Yapma
Yapılandırmayı tamamladıktan sonra çıkış yaparak ayarları kaydedebilirsiniz:
router(config)#exit
SNMPv3’te, bu adımlar cihazla güvenli bir şekilde iletişim kurmayı sağlar. Bu versiyon, önceki sürümlere göre daha güvenli olduğu için önerilmektedir.
En İyi Uygulamalar ve Güvenlik İpuçları
- Community string’leri güçlü ve karmaşık yapın: SNMPv1 ve v2c’de kullanılan community string’lerin kolayca tahmin edilememesi için güçlü parolalar kullanın.
- SNMPv3’ü tercih edin: Mümkünse SNMPv1 ve v2c yerine SNMPv3 kullanarak, şifreleme ve kimlik doğrulama özelliklerinden faydalanın.
- Yetkilendirme seviyelerini dikkatli yönetin: Kritik cihazlar için “Read-Only” erişimi tercih edin. Yönetimsel değişiklikler gerektiren cihazlar için “Read-Write” seviyesini kullanın.
- Güvenli veri alışverişi: SNMPv3 ile birlikte şifreleme ve kullanıcı doğrulama özelliklerini etkinleştirerek veri güvenliğinizi artırın.