İçerikleri sosyal medya üzerinden paylaşarak daha fazla kişiye ulaşmasına yardımcı olabilirsiniz.



Kategori: Windows Powershell
Fırat Boyan 31.05.2024 0

Test-NetConnection İle Domain Controller Port Erişim Kontrolleri

Günümüzde, kurumsal Network'lerin karmaşıklığı ve büyüklüğü arttıkça, Network yönetimi ve sorun giderme süreçleri de giderek daha kritik hale gelmektedir. Özellikle, Network'ün omurgasını oluşturan Domain Controller (DC) sunucularının sürekli olarak erişilebilir ve işlevsel olması, sistemin genel sağlığı ve performansı açısından büyük önem taşır. Bu makalede, PowerShell kullanarak DC sunucularının belirli Port'lar üzerinden erişilebilirliğini nasıl test edebileceğimizi ve bu testlerin Network yönetimi için neden önemli olduğunu detaylı bir şekilde ele alacağım.

Bu Script, Test-NetConnection komutu aracılığı ile Domain Controller sunucularına çeşitli Port'lar üzerinden erişim sağlayıp sağlayamadığını kontrol eder. Hangi Port'ların kontrol edileceği ve bu Port'ların hangi hizmetler için kullanıldığı da ayrıntılı olarak açıklanacaktır. Ayrıca, bu tür bağlantı testlerinin neden yapıldığını ve Network yönetimi açısından sağladığı faydaları da ele alacağım.

Script Nasıl Çalışır?

Script'in temel amacı, belirli DC sunucularına çeşitli Port'lar üzerinden erişilebilir olup olmadığını kontrol etmektir. İşte bu Script'in nasıl çalıştığını adım adım inceleyelim:

1- Hash Tablosu Oluşturma İlk olarak, $DomainControllers adlı bir Hash tablosu oluşturulur. Bu Hash tablosu, her bir DC sunucusu için kontrol edilecek Port numaralarını içerir.
Örneğin, SRVDCMS20347.firatboyan.local için çeşitli Port numaraları tanımlanmıştır.

$DomainControllers = @{
SRVDCMS20347.firatboyan.local = @(53,88,464,3268,3269,389,636,135,137,138,139,445,123,49443)}

2- Bağlantı Testi Döngüsü Script, DC ve Port kombinasyonu için Test-NetConnection komutunu kullanarak bağlantı testini gerçekleştirir. İç içe foreach döngüleri kullanılarak, DC için tanımlanan Port'lar tek tek test edilir.

foreach ($DC in $DomainControllers.Keys) {
foreach ($Port in $DomainControllers[$DC]) {
$check = Test-NetConnection -ComputerName $DC -Port $Port -WarningAction SilentlyContinue
if ($check.TcpTestSucceeded) {
Write-Host ($DC + on Port + $Port + : Connection Successful) -ForegroundColor Green }
else {
Write-Host ($DC + on Port + $Port + : Connection Failed) -ForegroundColor Red }}}

Test-NetConnection Script

• İlk foreach döngüsü, Hash tablosundaki DC sunucusunu iterasyonla alır. Iterasyon, her bir elemanın tek tek işlenmesi anlamına gelir.
• İç içe foreach döngüsü, DC için tanımlanan Port numaralarını iterasyonla alır.
• Test-NetConnection komutu, belirli bir DC ve Port için bağlantı testini gerçekleştirir.
• Bağlantı testi başarılı ise, yeşil renkte Connection Successful mesajı görüntülenir.
• Bağlantı testi başarısız ise, kırmızı renkte Connection Failed mesajı görüntülenir.

NOT: İki ayrı kısımda ele aldığım Script'i tek tek kopyalayarak bir TXT dosyasına ekleyebilir, .ps1 uzantısına çevirerek PowerShell Script olarak kullanabilirsiniz. Bu Script'i, test ve hata ayıklama işlemleri için Windows PowerShell ISE üzerinden çalıştırmanızı öneririm.

Kullanılan Port ve Hizmetler

Network Port'ları, veri iletişimi için kritik öneme sahip sanal kapılar olarak işlev görür ve toplamda 65535 adet Port bulunmaktadır. Bu Port'lar, belirli hizmetlerin veya uygulamaların Network üzerinden iletişim kurmasını sağlar. TCP (Transmission Control Protocol) ve UDP (User Datagram Protocol) olmak üzere iki ana türde Port bulunur ve her birinin kendine özgü özellikleri ve kullanım alanları vardır. Port numaraları, 1 ile 65535 arasında değişir ve bu aralıklar belirli kategorilere ayrılmıştır.

• Well-Known Port'lar, 1 ile 1023 arasındaki Port numaralarını kapsar ve belirli standart hizmetlere atanmıştır. Örneğin, HTTP servisi 80 numaralı Port'u, HTTPS servisi 443 numaralı Port'u ve FTP servisi 21 numaralı Port'u kullanır. Bu Port'lar, yaygın olarak bilinir ve kullanılır, bu yüzden Well-Known olarak adlandırılırlar. Bu Port'lar, belirli hizmetlerin çalışması için varsayılan olarak atanmış olup, genellikle Network yöneticileri tarafından manuel olarak değiştirilmez.

• Registered Port'lar, 1024 ile 49151 arasındaki Port numaralarını kapsar ve belirli uygulamalar veya hizmetler için kaydedilmiş Port'lardır. Bu Port'lar, genellikle belirli bir yazılım veya hizmetin çalışması için kullanılır ve resmi olarak atanmış veya kayıtlı olabilirler. Örneğin, MySQL veritabanı servisi 3306 numaralı Port'u kullanır.

• Dinamik veya özel Port'lar ise 49152 ile 65535 arasındaki Port numaralarını kapsar ve genellikle geçici iletişimler için kullanılır. Bu Port'lar, istemci uygulamaları tarafından geçici bağlantılar kurmak için dinamik olarak atanır. Örneğin, bir web tarayıcısı bir web sunucusuna bağlandığında, tarayıcıya dinamik olarak bir Port numarası atanır ve bu Port numarası üzerinden veri iletimi gerçekleştirilir.

TCP Port'ları, veri iletiminde güvenilirliği sağlamak için bağlantı odaklı bir yaklaşım benimser. TCP, verilerin doğru sırayla ve eksiksiz olarak iletilmesini garanti eder. Bu, veri paketlerinin alıcıya ulaştığını onaylayan bir el sıkışma (Handshake) süreci ile gerçekleştirilir. Örneğin, HTTP servisi için kullanılan Port, web tarayıcıları ve web sunucuları arasında güvenilir veri aktarımını sağlar. TCP'nin sağladığı bu güvenilirlik, dosya transferi, e-posta ve web tarama gibi uygulamalar için kritik öneme sahiptir. TCP bağlantısı, üç aşamalı bir el sıkışma süreci (Three-Way Handshake) ile başlar. Bunlar, SYN (Synchronize) paketi, SYN-ACK (Synchronize-Acknowledge) cevabı ve son olarak ACK (Acknowledge) paketi ile bağlantı kurulmuş olur. Bu süreç, veri iletiminde kayıpların ve hataların minimize edilmesini sağlar. Ayrıca, TCP Port'ları üzerinde güvenlik protokolleri (örneğin, TLS/SSL) kullanılarak veri iletimi şifrelenebilir, böylece veri güvenliği artırılmış olur.

UDP Port'ları ise bağlantı odaklı olmayan bir yaklaşım benimser ve veri iletiminde hız ve verimliliği ön planda tutar. UDP, verilerin hızlı bir şekilde iletilmesini sağlar ancak veri paketlerinin sırasını veya bütünlüğünü garanti etmez. Bu özellikleri nedeniyle, UDP Port'ları genellikle gerçek zamanlı uygulamalarda kullanılır. Örneğin, video akışı (Streaming) ve online oyunlar, düşük gecikme ve hızlı veri iletimi gerektirdiği için UDP Port'larını tercih eder. UDP, TCP'ye kıyasla daha az veri yükü taşır, bu da daha hızlı veri transferine olanak tanır. Ancak bu hız, veri iletiminde potansiyel kayıpları ve hataları da beraberinde getirebilir. UDP, veri paketlerinin iletiminde herhangi bir doğrulama mekanizması kullanmadığı için, veri kaybı yaşanması durumunda tekrar iletim sağlanmaz, bu da zaman kritik uygulamalarda kabul edilebilir bir durumdur.

Network Port'larının yönetimi ve güvenliği, Network yöneticileri için kritik bir görevdir. Firewall'lar ve Access Control List'leri (ACL), belirli Port'ların açılmasına veya kapanmasına izin vererek Network trafiğini kontrol eder ve güvenlik açıklarını minimize eder. Port taramaları ve izleme araçları, Network üzerindeki etkin Port'ları sürekli olarak izleyerek, potansiyel güvenlik tehditlerini erken aşamada tespit etmeye yardımcı olur. Network Port'larının doğru yapılandırılması, özellikle güvenlik ve performans açısından büyük önem taşır. Örneğin, sadece gerekli Port'ların açık tutulması ve bu Port'lar üzerinden geçen trafiğin düzenli olarak izlenmesi, Network'ün güvenli ve etkin bir şekilde çalışmasını sağlamak için hayati öneme sahiptir. Ayrıca, Port yönlendirme (Port Forwarding) ve Port adres çevirisi (Port Address Translation, PAT) gibi teknikler, iç Network'deki cihazların internet üzerindeki hizmetlerle iletişim kurmasına yardımcı olur. Bu yapılandırmalar, hem iç hem de dış Network trafiğinin etkin ve güvenli bir şekilde yönetilmesini sağlar.

Bu Script'te kontrol edilen Port'lar ve genellikle hangi hizmetler için kullanıldıkları aşağıdaki gibidir:

53- DNS (Domain Name System): DNS sunucusu ile iletişim için kullanılır.

88- Kerberos: Kimlik doğrulama protokolü olan Kerberos için kullanılır.

464- Kerberos Değişikliği: Kerberos şifreleme anahtarlarını güncellemek için kullanılır.

3268, 3269- Global Catalog: Global Catalog sunucuları için kullanılır.

389, 636- LDAP ve SSL LDAP: Dizine erişim ve güvenli dizine erişim için kullanılır.

135- RPC (Remote Procedure Call): Uzak prosedür çağrıları için kullanılır.

137, 138, 139- NetBIOS: NetBIOS hizmetleri için kullanılır.

445- SMB (Server Message Block): Dosya paylaşımı ve diğer SMB hizmetleri için kullanılır.

123- NTP (Network Time Protocol): Zaman senkronizasyonu için kullanılır.

49443- HTTPS: Özelleştirilmiş bir Port, belirli bir uygulama için olabilir.

Port Numbers

Neden Bu Port'lara Test-NetConnection ile Network Erişim Test'leri Yapmalıyız?

Bu tür bağlantı testlerinin yapılması, Network yönetimi ve güvenliği açısından birçok önemli fayda sağlar.

1- Erişilebilirlik

DC sunucusunun belirli hizmetlere erişilebilir olup olmadığını kontrol etmek, Network'ün doğru çalıştığını ve hizmetlerin erişilebilir olduğunu garanti eder. Bu, özellikle kullanıcıların Network üzerindeki hizmetlere sorunsuz bir şekilde erişebilmesi için kritiktir.

2- Sorun Giderme

Bağlantı sorunlarını hızlıca tespit edebilmek, Network üzerindeki potansiyel problemleri önceden fark etmenizi ve çözmenizi sağlar. Bu tür testler, Network yöneticilerinin olası sorunları proaktif olarak belirlemelerine ve çözümlemelerine olanak tanır.

3- Güvenlik

Belirli Port'lar üzerinden yetkisiz erişim olup olmadığını kontrol etmek, güvenlik açıklarının tespit edilmesine yardımcı olur. Güvenlik duvarları (Firewall) ve diğer güvenlik önlemlerinin doğru şekilde yapılandırıldığından emin olmak için bu testler kritik öneme sahiptir.

4- Performans

Bağlantı testleri, Network performansının değerlendirilmesine ve gerekirse iyileştirilmesine olanak tanır. Örneğin, belirli bir Port üzerindeki yüksek gecikme süreleri veya bağlantı hataları, performans sorunlarının göstergesi olabilir.

5- Kesintisiz Hizmet

Özellikle DNS ve Kerberos gibi kritik hizmetler için Port'ların sürekli olarak açık ve erişilebilir olması, hizmet kesintilerinin önlenmesine yardımcı olur. Bu tür testler, hizmetlerin sürekliliğini sağlamak için düzenli olarak yapılmalıdır.

Bu tür Script'ler, sistem yöneticilerinin DC sunucusunun Network bağlantılarını düzenli olarak kontrol etmeleri ve olası sorunları hızlıca tespit etmeleri için son derece faydalıdır. Ayrıca, Network'ün genel sağlığını ve güvenliğini sağlamada kritik bir rol oynar. Bu makalede incelenen Script, basit ama etkili bir araç olarak, Network yöneticilerinin günlük operasyonlarında kullanabilecekleri güçlü bir çözümdür.

Sık Karşılaşılan Hatalar

Test edilen ortamlarda genellikle aşağıdaki Port'lar üzerinden bağlantı hatası (Failed) ile karşılaşılmaktadır:

SRVDCMS20347.firatboyan.local on Port 137: Connection Failed
SRVDCMS20347.firatboyan.local on Port 138: Connection Failed
SRVDCMS20347.firatboyan.local on Port 123: Connection Failed
SRVDCMS20347.firatboyan.local on Port 49443: Connection Failed

Port 137 (NetBIOS Name Service) ve Port 138 (NetBIOS Datagram Service)

1- Servis Sorunları: Bu Port'larda hizmet veren servisler çalışmıyorsa veya yapılandırılmamışsa, bağlantı hataları alabilirsiniz.

2- Kullanım Durumu: NetBIOS protokolleri bazı modern ağlarda hala aktif olabilir. Ancak, bazı ağlarda güvenlik politikaları veya servis ihtiyaçlarına bağlı olarak kapalı olabilirler.

Port 123 (Network Time Protocol - NTP)

1- NTP Servisinin Çalışmaması: NTP servisi bu sunucuda çalışmıyorsa, bu Port üzerinden bağlantı kurulamaz. Servisin doğru yapılandırıldığından ve çalıştığından emin olun.

2- Zaman Senkronizasyonu Ayarları: Eğer DC'nin zaman senkronizasyonu doğru ayarlanmamışsa, NTP trafiği engellenebilir veya yanıt veremeyebilir.

Port 49443 (HTTPS)

1- Hizmet Eksikliği: Bu Port genellikle özel veya özelleştirilmiş HTTPS uygulamaları tarafından kullanılır. Eğer bu Port üzerinde çalışan bir uygulama veya hizmet yoksa, bağlantı başarısız olacaktır.

2- Yapılandırma Sorunları: Port 49443 üzerinde hizmet veren uygulamanın doğru yapılandırıldığından emin olun. Yanlış yapılandırma, bu Port üzerinden erişimi engelleyebilir.

Bu Port'larda karşılaşılan hataların sebeplerini anlamak ve çözmek için şu adımları izleyebilirsiniz:

Servislerin Çalışıp Çalışmadığını Kontrol Edin: İlgili Port'larda çalışan servislerin aktif ve doğru yapılandırılmış olduğundan emin olun.

Network Ayarlarını ve Politikalarını Gözden Geçirin: İç ağdaki politikaların ve yapılandırmaların bu Port'lara izin verip vermediğini kontrol edin.

Log Analizi: Detaylı log analizi yaparak, hangi aşamada sorun yaşandığını belirleyin ve gerekli yapılandırma değişikliklerini uygulayın.

PowerShell ile yapılan bu tür bağlantı testleri, Network yöneticilerinin iç ağda bile olası sorunları erken tespit etmelerine ve hızlıca müdahale etmelerine olanak tanır. Bu şekilde, DC sunucularının kritik hizmetlere sorunsuz erişim sağladığından emin olabilirsiniz.

Faydalı olması dileğiyle...


Her türlü görüş ve önerilerinizi aşağıdaki yorum panelinden bırakabilir, kafanıza takılanları veya merak ettiklerinizi sorabilirsiniz.



Yazar Hakkında

firatboyan.com


1985 yılında Alanya'da doğdum. İlk, orta ve lise öğrenimimi Alanya'da tamamladım. Liseden mezun olduktan sonra Akdeniz Üniversitesi Bilgisayar Teknolojisi Ön Lisans programına yerleştim ve bu programdan mezun oldum. Ön Lisans programından mezun olduktan bir süre sonra Dikey Geçiş Sınavı (DGS) ile İstanbul Teknik Üniversitesi (İTÜ) Bilgisayar Mühendisliği Lisans programına yerleştim. 2003 yılından beri Bilgi Teknolojileri sektöründe Sistem ve Network alanlarında çalışıyorum. Bir çok firma bünyesinde farklı projelerde yer alarak bu alanda yıllar içinde ciddi bir bilgi birikimi ve deneyimler kazandım. Bilgi Teknolojileri sektöründeki profesyonel çalışma hayatımın uzunca bir dönemini entegratör firma bazında, ağılıklı olarak Microsoft ürünleri üzerine danışman olarak sürdürüyor ve yüksek seviyeli projeler geliştiriyorum. Uzunca bir süredir de Türkiye'nin en önde gelen entegratör firması olan Data Market bünyesinde Senior Cloud Engineer olarak çalışıyorum. Ek olarak, 2015 yılında Network Akademi bünyesinde Sistem ve Network Uzmanlık eğitimleri vermeye başladım ve 2017 yılında da eğitmenlik tecrübemi, Microsft Certified Trainer (MCT) ünvanı ile taçlandırdım. Eğitmenlik serüvenime 2021 yılından beri Bilge Adam bünyesinde MCT ünvanı ile devam etmekteyim.

YORUMLAR
Bu makaleye henüz yorum yapılmadı! İlk yorum yapan sen ol.
Her türlü görüş ve önerilerinizi aşağıdaki yorum panelinden bırakabilir, kafanıza takılanları veya merak ettiklerinizi sorabilirsiniz.

   
   
  750 karakter yazabilirsiniz.
 
Captcha
Güvenlik kodunu BÜYÜK harflerle giriniz.
* Yorumlar, onaylandıktan sonra yayınlanmaktadır.
* E-posta, yorum onay bildirimi için gereklidir. Yayınlanmaz.