Kurumsal ağ altyapılarında ağa bağlanan her cihazın kimliğini ve statüsünü bilmek sadece bilgi güvenliği için değil, aynı zamanda kaynak planlaması, erişim kontrolü ve performans yönetimi açısından da büyük önem taşır.
Özellikle BYOD (Bring Your Own Device – Kendi Cihazını Getir) uygulamaları ve misafir Wi-Fi erişimleri arttıkça kuruma ait cihazlar ile geçici kullanıcı cihazlarını ayırt etme ihtiyacı da giderek kritik hale gelmiştir.
Bu ayrımın en temel yollarından biri DHCP (Dynamic Host Configuration Protocol) üzerinden sağlanan kiralık IP adresleri ile yapılabilir.
DHCP sunucusu her istemciye bağlandığında ona IP adresi atar ve bu atama esnasında çeşitli istemci bilgileri (bilgisayar adı, MAC adresi, kiralama süresi vb.) kaydedilir.
Bu bilgiler doğru analiz edilirse misafir ile kurumsal cihazları birbirinden ayırmak mümkündür.
DHCP client’lar otomatik olarak IP adresi, alt ağ maskesi, varsayılan ağ geçidi, DNS sunucusu gibi yapılandırma bilgilerini veren bir ağ protokolüdür.
DHCP sunucusu belirli bir IP adres aralığını (scope) yönetir ve bu aralık içinden adresleri kiralayarak istemcilere atar. Her kiralama, sunucu üzerinde bir kayıt olarak tutulur.
DHCPServer PowerShell Modülü
Windows Server ortamlarında DHCP sunucularını PowerShell komutlarıyla yönetmek mümkündür. Bunun için DHCPServer
modülü kullanılır. Bu modül aşağıdaki gibi birçok işlemi yapabilir.
- DHCP scope’larını listeleme
- Kiralanan IP’leri çekme
- Belirli MAC veya cihaz adlarına göre filtreleme
- Otomasyon script’leri geliştirme
Uygulama: Misafir ve Kurumsal Cihaz Ayrımı Yapan PowerShell Scripti
Script’in Detaylı Açıklaması
# DHCPServer modülünü yüklüyoruz
Import-Module DHCPServer
# Sunucuya tanımlı tüm IPv4 scope'ları alıyoruz
$scopeList = Get-DhcpServerv4Scope
# Sayaç: Misafir olmayan IP sayısını toplamak için
$totalNonGuestIPs = 0
# Tüm scope’lar üzerinde döngü kuruyoruz
foreach ($scope in $scopeList) {
# Her scope için kiralanan tüm IP’leri alıyoruz
$leasedIPs = Get-DhcpServerv4Lease -ScopeId $scope.ScopeId
# Misafir olmayan cihazları filtreliyoruz (örneğin 'GUEST' olmayanlar)
$nonGuestIPs = $leasedIPs | Where-Object { $_.ClientName -ne "GUEST" }
# Misafir olmayan IP sayısını topluyoruz
$totalNonGuestIPs += $nonGuestIPs.Count
}
# Toplam sonucu yazdırıyoruz
Write-Output "Toplam kurumsal cihaz IP sayısı: $totalNonGuestIPs"
Dikkat Edilmesi Gereken Noktalar:
Alan | Açıklama |
---|---|
ClientName | DHCP kiralama verisindeki cihaz adı. Misafir cihazlar genellikle özel bir ad şablonu ile tanımlanır (örneğin “GUEST-LAPTOP01”, “VISITOR-XXXX”). |
-ne Operatörü | “Not Equal” anlamına gelir. Yani bu script, cihaz adı “GUEST” olmayanları filtreler. |
ScopeId | Her DHCP kapsamının benzersiz IP aralığı ID’sidir (örneğin 192.168.10.0 ). |
Gelişmiş Kullanım Senaryoları
MAC Adresi ile Cihaz Sınıflandırması
Bazı durumlarda cihaz adları yetersiz kalabilir. Bunun yerine MAC adresi ön ekleri (OUI – Organizationally Unique Identifier) kullanılabilir. Örneğin, kurumsal cihazlar genellikle belirli bir üreticiye aittir (örneğin Lenovo, Dell). Bu durumda şöyle filtreleme yapılabilir.
$nonGuestIPs = $leasedIPs | Where-Object { $_.ClientId -like "00-2A-60*" }
“00-2A-60” burada belirli bir üreticinin MAC adresi ön ekidir.
Zaman Bazlı Analiz ve Loglama
Script, zamanlanmış görev olarak çalıştırılabilir ve günlük/haftalık cihaz trendleri analiz edilebilir:
# Tarih damgası ekleyerek log dosyasına yaz
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm"
"[$timestamp] Kurumsal IP sayısı: $totalNonGuestIPs" | Out-File "C:\Logs\IPStats.log" -Append
Raporlama İçin Export
Kurumsal cihazların listesini Excel’e aktarmak için aşağıdaki gibi bir ek yapılabilir:
$nonGuestIPs | Select-Object IPAddress, ClientName, ClientId, LeaseExpiryTime | Export-Csv "C:\Logs\CorporateDevices.csv" -NoTypeInformation