26.06.2023

port durumu inceleme

Tüm ICMP trafiği açık olsa bile ping'in yeterli olmadığı durumlar vardır.

Uzak sunucuda çalışan bir hizmetin açık portunun cevap verip vermediğini inceleme ihtiyacı olur; 80 numaralı HTTP portuna erişebiliyor muyum, NTP sunucusunun 123 UDP portu dinlemede mi gibi.

Powershell dünyasında kısmen TCP için

PS> Test-NetConnection -ComputerName uzakpc -Port 80

gibi bir yöntem var.

2023-11-20 ek: daha hızlı bir yöntem

PS> (New-Object Net.Sockets.TcpClient).Connect("192.168.1.1",80)

hata vermezse başarılıdır. Başarısız durumda hata verir.

Yine TCP için Sysinternals'ın psping'i kullanılabilir:

PS> psping uzakpc:80

Ama UDP için benzer bir araç bilmiyordum. Linux'ta netcat (nc) için şöyle bir kullanım buldum:

$ nc -z -u -v time.windows.com 123

Connection to time.windows.com 123 port [udp/ntp] succeeded!

burada

-z : zero IO (sadece bağlantı durumunu bildir, gereksiz veri alışverişi yapma)

-u : UDP kullan

-v : verbose (ayrıntılı çıktı göster)

Windows'da ise gerek WSL gerekse nmap ile gelen nc klonu ncat ile de benzer kullanım mümkün. UDP için

PS> ncat -vuz time.windows.com 123

Ncat: Version 7.91 ( https://nmap.org/ncat )
Ncat: Connected to 40.119.148.38:123.
Ncat: UDP packet sent successfully
Ncat: 1 bytes sent, 0 bytes received in 2.04 seconds.

veya TCP için

PS> ncat -vt uzakpc 80

Ncat: Version 7.91 ( https://nmap.org/ncat )
Ncat: Connected to xx.xx.xx.xx:80.

ncat, TCP için -z (zero IO) parametresini kabul etmedi, protokolün doğası gereği. Yukarıdaki komuttan sonra bağlantı açık kalır, web snuucu GET, POST gibi komutlardan birini bekler. Örneğin Ctrl+C ile çıkmadan aşağıdaki gibi bir komut yazılarak varsayılan açılış sayfası istenebilir:

GET / HTTP/1.1

Benzer ihtiyacı olan powershell severler, kendi cmdlet'lerini de yapmışlar [1].

Bu arada 123/udp portuna bağlanabiliyor olmak, çalışan bir NTP hizmeti olduğu anlamına gelmez, sadece ilgili sunucunun NTP portuna bağlanabildiğimizi gösterir. Aynı şekilde 80/tcp portuna bağlanmak web sunucunun tam olarak istediğimiz şekilde çalıştığını göstermez, sadece bu portunu dinleyen bir hizmetin aktif olduğunu gösterir.

---

[1] https://cloudbrothers.info/en/test-udp-connection-powershell/

Hiç yorum yok: