Port Numarası Nedir ve Neden Önemlidir?
Bir sunucunun IP adresi ağdaki o makineyi tanımlar; port numarası ise aynı IP üzerinde aynı anda çalışan onlarca farklı servisten hangisine bağlanılmak istendiğini belirtir. Bir sunucu aynı IP adresi üzerinden aynı anda HTTP, HTTPS, SSH ve bir veritabanı servisini yayınlayabilir — işletim sistemi gelen bağlantıyı hedef port numarasına bakarak doğru sürece yönlendirir. Bu mekanizma olmasaydı tek bir IP adresinde aynı anda yalnızca bir servis çalıştırılabilirdi.
Port numarası 16 bit uzunluğunda bir alandır, bu yüzden 0 ile 65535 arasında değer alabilir. IANA (Internet Assigned Numbers Authority), bu 65536 portluk uzayı üç bölgeye ayırarak hangi port aralığının hangi amaçla kullanılacağına dair bir standart belirler.
Üç Port Aralığı: Well-Known, Registered, Dynamic
Port numaraları rastgele dağıtılmaz; IANA'nın belirlediği üç net aralık vardır ve her aralığın sunucu yönetimi açısından farklı bir anlamı vardır.
| Aralık | Port Numaraları | Açıklama |
|---|---|---|
| Well-known | 0-1023 | HTTP, SSH, DNS gibi temel servislere ayrılmıştır; Unix/Linux sistemlerinde bu aralıkta soket açmak tarihsel olarak root/yönetici yetkisi gerektirir. |
| Registered | 1024-49151 | IANA tarafından belirli uygulamalara tahsis edilir (ör. MySQL için 3306, PostgreSQL için 5432); soket açmak için yönetici yetkisi gerekmez. |
| Dynamic / Ephemeral | 49152-65535 | Hiçbir servise kalıcı olarak atanmaz; işletim sistemi giden bağlantılar için geçici kaynak portu olarak otomatik atar. |
Well-known aralıktaki bir porta (örneğin 80) bağlanmak için sunucuda kök yetkisiyle çalışan bir sürecin gerekmesi, sıradan bir kullanıcı sürecinin kritik bir servisi taklit etmesini önlemek için tasarlanmış bir güvenlik kısıtlamasıdır. Registered aralık ise çoğu uygulama sunucusunun ve veritabanının fiilen çalıştığı bölgedir; bu portlarda dinlemek için özel bir yetkiye ihtiyaç yoktur. Dynamic aralık ise elle yönetilecek bir alan değildir — tarayıcınız bir web sitesine bağlandığında yerel makinenizde kullanılan geçici port bu aralıktan otomatik olarak seçilir.
En Sık Karşılaşılan Port Numaraları
Sunucu yönetiminde günlük olarak karşılaşılan servislerin çoğu, well-known ve registered aralıklarında sabit portlar kullanır. Aşağıdaki tablo en sık başvurulan portları listeler:
| Port | Protokol | Servis | Açıklama |
|---|---|---|---|
| 22 | TCP | SSH | Güvenli kabuk erişimi ve SFTP |
| 80 | TCP | HTTP | Şifresiz web trafiği |
| 443 | TCP | HTTPS | Şifreli web trafiği (TLS) |
| 21 | TCP | FTP (control) | FTP kontrol kanalı |
| 25 | TCP | SMTP | E-posta gönderimi (sunucular arası) |
| 53 | TCP/UDP | DNS | Alan adı çözümleme |
| 3306 | TCP | MySQL / MariaDB | İlişkisel veritabanı |
| 5432 | TCP | PostgreSQL | İlişkisel veritabanı |
| 6379 | TCP | Redis | Bellek içi veri deposu |
| 27017 | TCP | MongoDB | Doküman veritabanı |
| 3389 | TCP | RDP | Windows uzak masaüstü |
| 51820 | UDP | WireGuard | VPN tüneli |
Bazı servisler alternatif portlarda da çalıştırılır: SSH için 2222, HTTP için 8080, HTTPS için 8443 sıklıkla karşılaşılan alternatiflerdir. Bunlar genellikle varsayılan port başka bir servis tarafından kullanıldığında veya proxy/yük dengeleyici arkasında ek bir katman gerektiğinde tercih edilir.
Sunucuda Hangi Portların Dinlemede Olduğunu Görmek
Bir portun sunucuda gerçekten kullanılıp kullanılmadığını varsaymak yerine doğrudan kontrol etmek, hem güvenlik hem de sorun giderme açısından daha güvenilir bir yöntemdir. Linux sistemlerde ss komutu, hangi portların dinleme (listen) durumunda olduğunu ve bu portu hangi sürecin açtığını gösterir.
ss -tulpn
Sunucuda dinlemede (listen) olan tüm TCP ve UDP portlarını, ilgili süreç adıyla birlikte listeler.
Örnek: ss -tulpn | grep ':443'
Bu tür bir kontrol, örneğin bir veritabanı servisinin (MySQL, PostgreSQL, MongoDB gibi) yalnızca yerel arayüzde (127.0.0.1) mi yoksa tüm ağ arayüzlerinde (0.0.0.0) mi dinlediğini ortaya çıkarır — ikincisi, ayrı bir firewall kuralı olmadığı sürece veritabanının doğrudan dışarıdan erişime açık kalmasına neden olabilir. Bir portun hangi servise ait olduğu her zaman bariz değildir; bu yüzden sonucu bilinen port listesiyle karşılaştırmak faydalıdır.
TCP mi UDP mi?
Port numarası tek başına bir anlam ifade etmez; hangi protokolle birlikte kullanıldığı da önemlidir. TCP bağlantı odaklıdır: veri gönderilmeden önce bir el sıkışma yapılır, paketlerin sırası ve bütünlüğü garanti edilir — bu yüzden web trafiği, SSH, e-posta ve veritabanı bağlantıları gibi güvenilirliğin öncelikli olduğu servisler TCP kullanır. UDP ise bağlantısızdır, sıra veya teslim garantisi vermez ama daha düşük gecikmeyle çalışır — DNS sorguları, DHCP, NTP ve VPN protokollerinin çoğu (WireGuard, IKEv2/IPsec) bu yüzden UDP tercih eder.
- DNS (port 53) hem TCP hem UDP kullanır: normal sorgular UDP üzerinden, büyük yanıtlar (zone transfer gibi) TCP üzerinden yürür.
- SSH, HTTP, HTTPS, MySQL, PostgreSQL, Redis ve MongoDB gibi çoğu uygulama servisi yalnızca TCP kullanır.
- DHCP, NTP, SNMP ve çoğu VPN protokolü (WireGuard, IKEv2/IPsec) düşük gecikme ve basit istek-yanıt döngüsü için UDP kullanır.
Aynı port numarası TCP ve UDP'de birbirinden bağımsız iki ayrı ad alanıdır. Bir güvenlik duvarı kuralı yazarken yalnızca port numarasını değil, protokolü de belirtmek gerekir; "53 numaralı portu aç" demek tek başına yeterli değildir, hangi protokolde açılacağı ayrıca tanımlanmalıdır.
Firewall ve Port Yönetiminde Sık Yapılan Hatalar
- Geniş port aralıklarını toptan açmak: "1000-9000 arası her şeyi aç" gibi kurallar, kullanılmayan veya yanlışlıkla çalışır durumda bırakılmış servislere (ör. bir debug arayüzü, unutulmuş bir test veritabanı) dışarıdan erişim yolu açarak saldırı yüzeyini gereksiz yere büyütür.
- Varsayılan portta hiçbir sertleştirme yapmadan servis çalıştırmak: SSH'ı 22 numaralı portta bırakmak başlı başına bir güvenlik açığı değildir, ancak parola ile giriş açık bırakılmışsa bu port otomatik tarama araçlarının ilk hedefi olur.
- Port numarasını protokolle karıştırmak: "port 443'ü açtım" demek HTTPS'in çalışacağını garanti etmez; TLS sertifikası, sunucu yazılımı ve uygulama katmanının da doğru yapılandırılmış olması gerekir. Port yalnızca trafiğin hangi kapıdan gireceğini belirler, içeriğini değil.
- Dynamic/ephemeral port aralığını gereksiz yere inbound olarak açmak: giden bağlantıların yanıt trafiği çoğu stateful firewall tarafından zaten otomatik izin verilir; bu aralığı ayrıca inbound açmak genellikle gereksizdir.
Doğru yaklaşım, sunucunun fiilen kullandığı servis portlarını (ör. 22, 80, 443) tek tek inbound olarak açmak ve geri kalan her şeyi varsayılan olarak reddetmektir (default-deny). Bir port numarasıyla karşılaştığınızda hangi servise ait olduğunu ve hangi protokolü kullandığını hızlıca doğrulamak için aşağıdaki referans tablosunu kullanabilirsiniz.
IANA tarafından kayıtlı, sunucu yönetiminde sık kullanılan TCP/UDP portlarını port numarasına veya servis adına göre arayın.