Linux'ta Açık Bağlantı Noktaları Nasıl Listelenir?

How List Open Ports Linux



Ağ oluşturmada, bir bağlantı noktası ilginç bir özelliktir. Ağ trafiğinin hedef uygulamayı veya hizmeti tanımlamasının bir yoludur. Her işlem/hizmet kendine özgü bağlantı noktasını alır. Bir bağlantı noktası her zaman protokolle birlikte ana bilgisayarın IP adresiyle ilişkilendirilecektir.

Bu, limanın ne olduğunu açıklamak için en sevdiğim metafordur. Uzak bir ülkeye seyahat edecek kargo yüklü bir gemi hayal edin. Hedefe doğru bir şekilde ulaşmak için hangi bilgilere ihtiyaç var? Basitlik adına, diyelim ki ülkeye (IP adresi) ve Liman gemi yanaşacak.







Bu kılavuzda, Linux'ta açık bağlantı noktalarının nasıl listeleneceğine bakın.



Linux'taki Bağlantı Noktaları

Bağlantı noktaları, iletişimin bir uç noktası olarak hareket eder. 16 bitlik bir sayıdır (ondalık olarak 0 ila 65535). Menzil geniş olmakla birlikte, kullanım kolaylığı için bağlantı noktaları üç kategoriye ayrılmıştır. Her kategori, bağlantı noktası değeri aralığı olarak etiketlenir:



  • 0 ila 1023: Bunlar, çok çeşitli ağ hizmetleri sunan sistem işlemleri için ayrılmış, Sistem bağlantı noktaları olarak da bilinen İyi Bilinen bağlantı noktalarıdır. Bilinen bir bağlantı noktasına bağlanmak için bir işlemin süper kullanıcı ayrıcalığına sahip olması gerekir.
  • 1024 ila 49151: Bunlar, belirli hizmetler için IANA tarafından belirlenen, Kullanıcı bağlantı noktaları olarak da bilinen Kayıtlı bağlantı noktalarıdır. Talep üzerine, bir proses bunlara erişebilir. Çoğu sistemde, bu bağlantı noktalarını kullanmak için herhangi bir süper kullanıcı ayrıcalığı gerektirmez.
  • 49152 ila 65535: Bunlar, Özel bağlantı noktaları olarak da bilinen Dinamik bağlantı noktalarıdır. Bu bağlantı noktaları IANA'ya kaydedilemez. Bu bağlantı noktaları, özel veya özelleştirilmiş hizmetler için kullanıma açıktır ve ayrıca geçici bağlantı noktaları (IP tarafından kullanılan kısa ömürlü bağlantı noktaları) olarak otomatik olarak tahsis edilebilir.

Linux'ta açık portları kontrol etmenin birden çok yolu vardır. Varsayılan olarak, bir uygulama kullanmadığı sürece herhangi bir bağlantı noktası kapalı kalacaktır. Bir bağlantı noktası açıksa, bir hizmete/sürece atanması gerekir.





Açık Bağlantı Noktalarını Listeleme

Hangi bağlantı noktalarının açık olduğundan ziyade hangi bağlantı noktalarının kullanımda olduğunu belirlemek daha kolaydır. Bu nedenle, aşağıdaki bölümde şu anda kullanımda olan tüm bağlantı noktalarını listelemek için yöntemler yer alacaktır. Linux'ta görev için kullanılabilecek birden fazla araç vardır. Çoğu, herhangi bir Linux dağıtımında yerleşik olarak gelir.

Şu anda hangi bağlantı noktalarının açık olduğunu öğrenmek, çeşitli senaryolarda faydalı olabilir. Belirli bir uygulama için özel bir bağlantı noktası yapılandırmak mümkündür. Açık bir bağlantı noktası, ağda izinsiz girişin güçlü bir göstergesi olabilir.



Aşağıdaki yöntemler Ubuntu 20.04.1 LTS'de gösterilmiştir.

/etc/services'den protokolleri ve açık bağlantı noktalarını listeleyin

/etc/services dosyası, o anda çalışan servisler hakkında bilgi içerir. Bu büyük bir dosya, bunalmaya hazır.

$kedi /vesaire/Hizmetler| az

netstat kullanarak açık bağlantı noktalarını listeleme

Netstat aracı, TCP için ağ bağlantılarını, yönlendirme tablolarını ve çeşitli ağ arayüzlerini görüntülemek için bir yardımcı programdır. Ayrıca ağ protokolü istatistikleri sunar. Netstat kullanarak sistemin tüm açık portlarını listeleyebiliriz.

Aşağıdaki netstat komutunu çalıştırın:

$netstat -atü

Bu komutta kullandığımız tüm bayrakların hızlı bir dökümünü yapalım.

  • ile : netstat'a tüm soketleri göstermesini söyler
  • T : netstat'a TCP bağlantı noktalarını listelemesini söyler
  • sen : netstat'a UDP bağlantı noktalarını listelemesini söyler

İşte netstat komutunun başka bir varyasyonu:

$netstat -lntu

Komutta kullanılan iki yeni bayrak var. Ne demek istiyorlar?

  • NS : netstat'a yalnızca dinleme soketlerini yazdırmasını söyler
  • n : netstat'a port numarasını göstermesini söyler

Bağlantı noktası kullanan işlemin PID'sini görüntülemek için -p bayrağını kullanın:

$netstat -Intup

ss kullanarak açık portları listeleme

ss aracı, soketi araştırmak için bir yardımcı programdır. Kullanımı netstat'a benzer.

Açık bağlantı noktalarını listelemek için aşağıdaki ss komutunu çalıştırın:

$ss-lntu

Bayraklar netstat'a benzer. Açıkladıkları işlevler de oldukça benzer.

  • NS : ss'ye dinleme soketlerini görüntülemesini söyler
  • n : ss'ye hizmet adlarını çözmeye çalışmamasını söyler
  • T : ss'ye TCP soketlerini görüntülemesini söyler
  • sen : ss'ye UDP soketlerini görüntülemesini söyler

lsof kullanarak açık bağlantı noktalarını listeleme

Lsof komutu, açık dosyaları listelemektir. Ancak, açık portları görüntülemek için de kullanılabilir.

Aşağıdaki lsof komutunu çalıştırın:

$lsof-ben

Belirli bir protokolün (TCP, UDP, vb.) açık bağlantı noktalarını almak için -i bayrağından sonra tanımlayın, şunu kullanın:

$lsof-ben <protokol>

nmap kullanarak açık bağlantı noktalarını listeleyin

Nmap aracı, ağ araştırması ve güvenlik/bağlantı noktası taraması için güçlü bir araçtır. Sistemdeki tüm açık portları raporlayabilir.

Açık TCP bağlantı noktalarını listelemek için aşağıdaki nmap komutunu çalıştırın. Burada, IP adresi ana bilgisayara aittir:

$sudo nmap -NS -P-yerel ana bilgisayar

Burada, komut argümanının iki kısmı vardır.

  • -NS : Bu bölüm nmap'e TCP bağlantı noktalarını taramasını söyler.
  • -P- : Bu, nmap'e tüm 65535 bağlantı noktalarını taramasını söyler. Kullanılmazsa, nmap varsayılan olarak yalnızca 1000 bağlantı noktasını tarayacaktır.

Açık UDP bağlantı noktalarını listelemeniz gerekiyorsa, aşağıdaki nmap komutunu çalıştırın:

$sudo nmap -onun -P-yerel ana bilgisayar

Hem açık TCP hem de UDP bağlantı noktalarını almak için aşağıdaki komutu kullanın:

$sudo nmap -n -PN -NS -onun -P-yerel ana bilgisayar

netcat kullanarak açık bağlantı noktalarını listeleme

netcat aracı, TCP ve UDP protokolleri üzerinden ağ bağlantıları üzerinden veri okumak ve yazmak için bir komut satırı yardımcı programıdır. Bu araç aynı zamanda açık portları listelemek için de kullanılabilir. Belirli bir bağlantı noktasında veya bir dizi bağlantı noktasında testler yapabilir.

Aşağıdaki netcat komutu, bağlantı noktasını 1'den 1000'e kadar tarayacaktır. Netcat komutu, taramayı varsayılan olarak TCP protokolünde gerçekleştirecektir:

$nc-İle birlikte -vyerel ana bilgisayar1-1000

Ayrıca, olası bağlantı noktalarının tüm listesine genişletilebilir:

$nc-İle birlikte -vyerel ana bilgisayar1-65535

Bayrakları hızlı bir şekilde inceleyelim.

  • İle birlikte : netcat'e herhangi bir veri göndermeden yalnızca açık portları taramasını söyler
  • v : netcat'e ayrıntılı modda çalışmasını söyler

Bu listeden yalnızca açık bağlantı noktalarını almak için, başarılı terimi için çıktıyı grep ile filtreleyin.

$nc-İle birlikte -vyerel ana bilgisayar0-65535 2> &1 | kavramakbaşarılı

UDP protokolünde tarama yapmak istiyorsanız, -u bayrağını ekleyin.

$nc-İle birlikte -v -uyerel ana bilgisayar0-65535 2> &1 | kavramakbaşarılı

Son düşünceler

Gösterildiği gibi, Linux'ta açık portları taramanın tonlarca yolu vardır. Hangisinde ustalaşacağınıza karar vermeden önce tüm yöntemleri denemenizi öneririm. Netcat veya nmap gibi belirli bir aracı düzenli olarak kullanıyorsanız, ilgili yöntemlerde uzmanlaşmak en faydalı olacaktır.

Mutlu bilgisayar!