SSD Nodes Learn Hosting plans →
Rehberler Matt ConnorYazan Matt Connor · Güncellendi 2026-08-27

Linux servisleri hangi portu dinliyor nasıl öğrenilir?

Linux sunucunuzda hangi servislerin hangi portları kullandığını ss komutu ile inceleyin. Yerel ve genel port farklarını, 1024 altı port kısıtlamalarını ve TCP/UDP ayrımını öğrenin.

Port nedir

Port, bir sunucunun trafiği birbirine karıştırmadan aynı anda birden fazla servis çalıştırmasını sağlayan bir numaradır. VPS'nizin tek bir IP adresi vardır ancak bu adres üzerinde aynı anda bir web sunucusu, bir SSH sunucusu ve bir veritabanı çalışıyor olabilir. Bir paket ulaştığında işletim sisteminin bu paketin hangisi için olduğunu bilmesi gerekir. Port numarası bu sorunun cevabıdır. Web trafiği 443 numaralı porta, SSH ise 22 numaralı porta gider. IP adresi paketi sunucunuza ulaştırır; port ise paketi sunucu üzerindeki doğru programa yönlendirir.

Port, 16 bitlik bir sayıdır: 16 bit 0 ile 65535 arasında değer sağlar. 0 numaralı port ayrılmış olduğundan, uygulamada portlar 1 ile 65535 arasında değişir. 1024'ün altındaki portlar "iyi bilinen" (well-known) portlardır ve açılmaları için root yetkisi gerekir; standart servislerin burada bulunmasının nedeni budur: SSH için 22, HTTP için 80, HTTPS için 443, DNS için 53. 1024'ün üzerindeki her port sıradan programlar tarafından kullanılabilir.

TCP ve UDP olmak üzere iki tür port vardır ve birindeki port numarası, diğerindeki aynı numaradan bağımsızdır. TCP, SSH, HTTP ve veritabanları gibi çoğu servisin kullandığı bağlantı tabanlı protokoldür. UDP bağlantısızdır ve DNS veya bazı VPN'ler gibi servisler için kullanılır. Bir güvenlik duvarını yapılandırırken genellikle hangisinin kullanılacağını belirtirsiniz; örneğin 22/tcp.

Dinleme, bir programın port üzerinde beklemesi anlamına gelir

Bağlantı kabul etmek isteyen bir program, çekirdekten bir port üzerinde "dinleme" yapmasını ister. O andan itibaren port makine üzerinde açılır ve güvenlik duvarı kurallarına bağlı olarak, programa gelen her türlü veriye yanıt verilir. Dinleme yapan hiçbir programın olmadığı bir port, bağlantıları doğrudan reddeder. Bu nedenle herhangi bir güvenlik denetimindeki ilk soru şudur: ne dinleniyor ve nerede.

Bunu yanıtlamak için kullanılan komut ss şeklindedir:

sudo ss -tlnp

Bayraklar; TCP (t), yalnızca dinleme yapan soketler (l), sayısal portlar (n, böylece ssh yerine 22 görürsünüz) ve sahip olan süreci (p) ifade eder. Tipik bir sonuç şöyledir:

State   Recv-Q  Local Address:Port   Process
LISTEN  0       0.0.0.0:22           sshd
LISTEN  0       127.0.0.1:5432       postgres
LISTEN  0       [::]:80              nginx

Process sütunu, her bir portun hangi programa ait olduğunu belirtir; çalışır durumda bırakmak istemediğiniz bir süreci bu şekilde tespit edebilirsiniz.

Local Address sütunu kritik öneme sahiptir

Her portun önündeki adresi dikkatle inceleyin; çünkü bu adres, servise kimlerin erişebileceğini belirler. Sürekli karşılaşacağınız üç durum mevcuttur.

0.0.0.0:22, "bu makinedeki tüm IPv4 adreslerini dinle" anlamına gelir; buna genel (public) IP adresi de dahildir. Güvenlik duvarı izin verdiği sürece servis, internet üzerinden IPv4 aracılığıyla erişilebilir durumdadır.

[::]:80, IPv6 için aynı anlama gelir: genel adresler dahil tüm IPv6 adreslerini dinler. Birçok program varsayılan olarak buraya bağlanır ve Linux üzerinde bir :: soketi genellikle IPv4 trafiğini de kabul eder.

127.0.0.1:5432, "yalnızca loopback üzerinden dinle" anlamına gelir. 127.0.0.1, bir makinenin kendi kendisiyle iletişim kurmak için kullandığı adrestir ve başka hiçbir yerden yönlendirilemez. Buraya bağlanan bir servis, güvenlik duvarı ayarlarınız ne olursa olsun, yalnızca aynı sunucu üzerinden erişilebilir; internetten erişilmesi mümkün değildir. Yukarıdaki Postgres satırı, yapısı gereği güvenlidir.

Bu durumdan çıkan pratik kural şudur: Yalnızca kendi uygulamalarınızın kullandığı bir veritabanı, önbellek veya yönetim paneli, 0.0.0.0 yerine 127.0.0.1 adresine bağlanmalıdır. Eğer servis hiçbir zaman genel bir adresi dinlemiyorsa, bir saldırganın erişebileceği bir nokta da kalmaz.

Dinleme durumu ile erişilebilirlik aynı şey değildir

Bir ayrım daha kafa karışıklığını büyük ölçüde önler. Bir makinede portun açık olması, yani bir programın dinleme yapıyor olması, o portun dışarıdan erişilebilir olmasıyla, yani güvenlik duvarının buna izin vermesiyle aynı şey değildir. Uzak bir istemcinin bağlantı kurabilmesi için her iki durumun da doğru olması gerekir. İstemci tarafında bu iki hata durumu birbirinden farklı görünür: bağlantının reddedilmesi, dinleme yapan bir servis olmadığını gösterir; bağlantının askıda kalıp zaman aşımına uğraması ise genellikle güvenlik duvarının paketi düşürdüğü anlamına gelir ki bu iki SSH hatasının size anlatmak istediği tam olarak budur.

Dolayısıyla iki kontrol katmanı mevcuttur. Her servisin bind adresini ayarlayarak neyin dinleme yapacağına siz karar verirsiniz. Güvenlik duvarı ile dış dünyanın neye erişebileceğine siz karar verirsiniz. İyi yönetilen bir sunucu her ikisini de kullanır: servisler yalnızca ihtiyaç duyulan yerlerde dinleme yapar ve güvenlik duvarı, açıkça izin vermediğiniz her şeyi reddeder. ss ile nelerin dinleme yaptığını okumak ilk adımdır; güvenlik duvarının nelere izin vereceğine karar vermek ise UFW ile güvenlik duvarı temelleri bölümünde ele alınan ikinci adımdır.

Burada kullanıcıları zorlayan ince bir nokta vardır. IPv4 ve IPv6 birbirinden ayrıdır; yalnızca IPv4'ü kapsayan bir güvenlik duvarı, [::] servislerini IPv6 üzerinde açık bırakır. Bu özel tuzağın kendi rehberi mevcuttur: IPv6 güvenlik duvarı tuzağı.

FAQ

Linux sunucumda hangi portların açık olduğunu nasıl görebilirim?

TCP için sudo ss -tlnp veya UDP için sudo ss -ulnp komutunu çalıştırın. Bu komut, dinleme durumundaki tüm soketleri, port numarasını, bağlı olduğu yerel adresi ve ilgili süreci listeler. Local Address sütununu inceleyin: 0.0.0.0 veya [::], servisin ağa açık olduğu anlamına gelir; 127.0.0.1 ise servisin yalnızca makinenin kendisi üzerinden erişilebilir olduğunu gösterir.

0.0.0.0 ve 127.0.0.1 arasındaki fark nedir?

0.0.0.0, "tüm IPv4 adreslerini dinle" anlamına gelir; buna genel IP adresi de dahildir, dolayısıyla servis ağ üzerinden erişilebilir olur. 127.0.0.1 ise loopback adresidir; makinenin kendi kendisiyle iletişim kurmak için kullandığı bu adres dışarıdan yönlendirilemez, bu nedenle bu adrese bağlanan bir servis yalnızca yerel olarak erişilebilir durumdadır. Dahili servisleri 127.0.0.1 adresine bağlayın; böylece hiçbir zaman dışarıya açık olmazlar.

Bir servisin çalışması için güvenlik duvarında port açmam gerekir mi?

Yalnızca diğer makinelerden erişilmesi gereken servisler için gereklidir. 127.0.0.1 adresine bağlı bir servis için güvenlik duvarı kuralına gerek yoktur, çünkü dışarıdan hiçbir şey ona ulaşamaz. 0.0.0.0 veya [::] üzerindeki bir servis için trafiğe izin veren bir güvenlik duvarı kuralı gerekir ve siz bir kural ekleyene kadar bu trafik varsayılan olarak reddedilmelidir.

TCP portu ile UDP portu arasındaki fark nedir?

TCP bağlantı tabanlıdır ve SSH, web sunucuları ve veritabanları gibi çoğu servis tarafından kullanılır. UDP bağlantısızdır ve DNS ile bazı VPN'ler tarafından kullanılır. TCP ve UDP'deki aynı numara farklı portlardır; dolayısıyla 53/tcp ve 53/udp birbirinden farklıdır. Güvenlik duvarı kurallarını yazarken protokolü belirtmeniz gerekir, örneğin 22/tcp.