Linux'ta Açık Portlar Nasıl Kontrol Edilir: Eksiksiz Rehber 2026

Linux terminalinde ss ve netstat komutlarıyla açık portların gösterilmesi

Linux'ta açık portları nasıl kontrol edeceğini bilmek; sunucu yöneten, ağ sorunlarını gidermek isteyen ya da sistem güvenliğini sıkılaştırmak isteyen herkes için temel bir beceridir. Açık bir port, sistemine açılan bir kapı gibidir - hangi kapıların açık olduğunu bilmiyorsan, onları gereği gibi güvenli hale getiremezsin. Ubuntu'da bir web sunucusu çalıştırıyor olsan da, bir VPS yönetiyor ya da bağlantı sorunlarını araştırıyor olsan da, açık portları listelemek sisteminin ağa ne kadar açık olduğunu net biçimde gösterir. Bu rehber dört pratik yöntemi adım adım anlatıyor, sonuçları nasıl filtreleyeceğini açıklıyor ve ihtiyaç duymadığın portları nasıl kapatacağını gösteriyor.

Önemli Noktalar:

  • ss komutu, Linux'ta açık portları listelemek için modern ve en hızlı yöntemdir.
  • nmap, portları dışarıdan taramanı sağlar; saldırganların gerçekte ne gördüğünü ortaya koyar.
  • Belirli bir portu hangi sürecin kullandığını anında öğrenmek için lsof kullan.
  • ufw veya iptables ile gereksiz portları kapatmak, saldırı yüzeyini azaltmanın en doğrudan yoludur.

Linux'ta Açık Port Kontrolü Neden Önemlidir

Linux makinende çalışan her servis bir veya daha fazla portu dinler. SSH port 22'yi, HTTP port 80'i, HTTPS ise port 443'ü dinler. Ancak aylarca yazılım kurup kaldırdıktan sonra sunucularda çoğu zaman kimsenin kasıtlı olarak yapılandırmadığı portlar açık kalmaya devam eder. Güvenlik duvarı kuralı olmadan port 5432'yi dinleyen unutulmuş bir veritabanı daemon'u, gerçek dünyada veri ihlallerine yol açan somut bir risktir.

Linux'ta açık portları kontrol etmek şunları yapmanı sağlar:

  • Hangi servislerin gerçekten çalıştığını ve dışarıya açık olduğunu denetlemek.
  • Bir uygulamanın neden başka bir servise bağlanamadığını araştırmak.
  • Güvenlik duvarı kurallarının beklediğin gibi çalışıp çalışmadığını doğrulamak.
  • Güvenlik denetimi veya sızma testi öncesinde sistemi hazırlamak.

Aşağıdaki yöntemler hem yerel incelemeyi (makinenin kendi raporladıkları) hem de dışarıdan taramayı (uzak bir sistemin görebildikleri) kapsar. Her iki bakış açısı da önemlidir.

Yöntem 1: ss Komutu (Modern, Önerilen)

ss komutu (socket statistics), modern Linux dağıtımlarının büyük çoğunluğunda netstat'ın yerini almıştır. Daha hızlı, daha ayrıntılıdır ve Ubuntu, Debian, CentOS ile Fedora'da varsayılan olarak gelen iproute2 paketine dahildir.

Tüm açık portları süreç adlarıyla birlikte listelemek için şunu çalıştır:

sudo ss -tulnp

Bayrakların açıklaması:

  • -t - TCP soketlerini göster
  • -u - UDP soketlerini göster
  • -l - yalnızca dinleme yapan soketleri göster
  • -n - servis adları yerine sayısal port numaralarını göster
  • -p - her soketi kullanan süreci göster

Somut örnek: Nginx ve PostgreSQL çalışan temiz bir Ubuntu sunucusunda çıktı şöyle görünebilir:

Netid  State   Recv-Q  Send-Q  Local Address:Port  Peer Address:Port  Process
tcp    LISTEN  0       128     0.0.0.0:80           0.0.0.0:*          users:(("nginx",pid=1234,fd=6))
tcp    LISTEN  0       128     127.0.0.1:5432       0.0.0.0:*          users:(("postgres",pid=5678,fd=5))
tcp    LISTEN  0       128     0.0.0.0:22           0.0.0.0:*          users:(("sshd",pid=910,fd=3))

PostgreSQL'in yalnızca 127.0.0.1'e bağlı olduğuna dikkat et; bu, dışarıdan erişilemez olduğu anlamına gelir. SSH ve Nginx ise 0.0.0.0'a bağlıdır, yani her IP adresinden gelen bağlantıları kabul eder. Bu tek çıktı, sisteminin dışarıya ne kadar açık olduğu hakkında çok şey anlatır.

Tüm ss seçeneklerine hızlıca bakmak için resmi ss man sayfasına göz atabilirsin.

Yöntem 2: netstat Komutu (Eski ama Yaygın)

netstat komutu, eski net-tools paketinin bir parçasıdır. Pek çok dağıtımda artık varsayılan olarak kurulu gelmez, ancak hâlâ yaygın biçimde kullanılmakta olup özellikle eski sistemlerde çalışırken bilmekte fayda vardır.

Gerekirse kur:

sudo apt install net-tools   # Debian/Ubuntu
sudo yum install net-tools   # CentOS/RHEL

netstat ile Linux'ta açık portları listelemek için:

sudo netstat -tulnp

Bayraklar ss ile aynı anlama gelir. Çıktı biçimi biraz farklıdır, ancak aynı temel bilgileri sunar: protokol, yerel adres, port ve sahip süreç.

Pratik bir sınırlama: binlerce bağlantının olduğu yoğun sunucularda netstat, ss'e kıyasla belirgin biçimde yavaş kalabilir. Tipik bir sunucudaki günlük işlerde bu fark göz ardı edilebilir düzeydedir.

Yöntem 3: nmap Port Taraması (Dışarıdan Bakış)

Yukarıdaki araçlar makinenin dahili olarak raporladıklarını gösterir. nmap ise farklı bir yaklaşım benimser - portları ağ üzerinden tarayarak dışarıdan bir saldırganın ya da uzak bir istemcinin gördüklerini simüle eder. Bu kritik öneme sahiptir; çünkü bir güvenlik duvarı, ss'in hâlâ dinleme yapıyor olarak gösterdiği bir portu engelliyor olabilir.

nmap'i kur:

sudo apt install nmap   # Debian/Ubuntu
sudo yum install nmap   # CentOS/RHEL

Aynı ağdaki başka bir makineden sunucuyu tara:

nmap -sT -p 1-1024 192.168.1.10

En yaygın 1000 portu servis sürümü tespiti ile taramak için:

nmap -sV 192.168.1.10

-sV bayrağı, her açık portta çalışan yazılımın sürümünü tespit etmeye çalışır. Bu, güncellenmesi gereken eski servisleri belirlemek için oldukça kullanışlıdır.

Önemli: nmap'i yalnızca kendi sahip olduğun veya tarama için açıkça izin aldığın sunuculara karşı çalıştır. Üçüncü taraf sistemleri izinsiz taramak, bulunduğun ülkede yasal açıdan suç teşkil edebilir.

nmap kurmadan bir portun dışarıdan erişilebilir olup olmadığını kontrol etmen gerekiyorsa, ücretsiz Port Checker aracımız kurulum veya yapılandırma gerektirmeden bunu anında yapar.

Yöntem 4: lsof Komutu (Süreç-Port Eşleştirmesi)

lsof (list open files) komutu, ağ soketlerini dosya olarak ele alır; bu da Linux'un "her şey bir dosyadır" felsefesiyle örtüşür. Özellikle "Port 8080'i hangi süreç kullanıyor?" sorusunu yanıtlaman gerektiğinde son derece işe yarar.

Tüm ağ bağlantılarını listele:

sudo lsof -i

Belirli bir portu kullanan süreci bul (örneğin port 3000):

sudo lsof -i :3000

Bu özellikle bir geliştiricinin Node.js uygulaması bir portu meşgul tuttuğunda ve servisi yeniden başlatmadan önce süreci bulup sonlandırman gerektiğinde çok işe yarar.

Sonuçları Port, TCP veya UDP'ye Göre Filtreleme

Bu araçların ham çıktısı bazen çok fazla bilgi içerebilir. İşte en kullanışlı filtreleme kalıpları:

Yalnızca TCP dinleme portlarını göster (ss):

sudo ss -tlnp

Yalnızca UDP portlarını göster (ss):

sudo ss -ulnp

Belirli bir portun açık olup olmadığını kontrol et (ss ile grep):

sudo ss -tulnp | grep :443

nmap ile porta göre filtrele:

nmap -p 80,443,8080 192.168.1.10

Bu kalıplar, günlük filtreleme ihtiyaçlarının büyük çoğunluğunu karşılar. Port 80'e özgü HTTP sorun giderme için Port 80 HTTP Sorun Giderme Rehberimize bakabilirsin.

Windows kullanıyorsan ve benzer bir adım adım anlatıma ihtiyaç duyuyorsan, Windows'ta Açık Port Kontrolü için Kapsamlı Rehberimize göz at.

ufw veya iptables ile Port Kapatma veya Engelleme

İhtiyaç duymadığın açık bir portu bulmak işin yalnızca yarısıdır. İşte en yaygın iki Linux güvenlik duvarı aracıyla portu nasıl kapatacağın:

ufw (Uncomplicated Firewall) Kullanımı - Ubuntu için Önerilen

Port 8080'e gelen trafiği engelle:

sudo ufw deny 8080/tcp

Yalnızca SSH ve HTTPS'e izin ver, geri kalanı engelle:

sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw allow 443/tcp
sudo ufw enable

Mevcut güvenlik duvarı durumunu kontrol et:

sudo ufw status verbose

iptables Kullanımı - Gelişmiş Kontrol için

Port 3306'ya (MySQL) gelen tüm trafiği düşür:

sudo iptables -A INPUT -p tcp --dport 3306 -j DROP

Kuralları yeniden başlatmadan sonra da geçerli kalacak şekilde kaydet:

sudo iptables-save | sudo tee /etc/iptables/rules.v4

iptables sözdizimi ve kural sıralaması hakkında daha ayrıntılı bir referans için resmi Netfilter belgeleri yetkili kaynaktır.

İpucu: ufw veya iptables ile bir portu engellemek, o portta çalışan servisi durdurmaz - yalnızca dışarıdan gelen bağlantıların servise ulaşmasını engeller. Servisi tamamen durdurmak istiyorsan sudo systemctl stop servisadi komutunu kullan. Yeniden başlatmada otomatik başlamasını önlemek için de sudo systemctl disable servisadi komutunu çalıştır.

Sonuç

Linux'ta açık portları kontrol etmek için karmaşık araçlara ya da derin bir uzmanlığa ihtiyacın yok. ss komutu hızlı ve güvenilir bir yerel görünüm sunar. nmap dışarıdan neye erişilebildiğini gösterir. lsof bir portu hangi sürecin kullandığını tam olarak saptar. ufw veya iptables ise dışarıya açık olmaması gereken her şeyi kapatmanı sağlar. Bu kontrolleri düzenli aralıklarla - özellikle yeni yazılım kurduktan veya ağ yapılandırmalarını değiştirdikten sonra - yapmak, Linux sunucularını güvende tutmak için geliştirebileceğin en basit alışkanlıklardan biridir. Hemen şimdi sudo ss -tulnp komutunu çalıştır ve sunucunun gerçekte neyi dışarıya açtığını gör.

Ücretsiz Port Checker aracı - Linux sunucundaki portun açık olup olmadığını anında kontrol et

Linux Sunucundaki Herhangi Bir Portu Anında Kontrol Et

Bir portun dışarıdan gerçekten erişilebilir olup olmadığından emin değil misin? Ücretsiz Port Checker aracımız, sunucunu saniyeler içinde dışarıdan tarar - kurulum veya yapılandırma gerektirmez.

Ücretsiz Port Checker Aracını Dene →

SSS - Sık Sorulan Sorular

Terminalinde sudo ss -tulnp komutunu çalıştır. Bu komut, modern ss aracını kullanarak tüm TCP ve UDP dinleme portlarını süreç adlarıyla birlikte gösterir. netstat'tan daha hızlıdır ve Ubuntu ile Debian dahil güncel Linux dağıtımlarının büyük çoğunluğunda varsayılan olarak kullanılabilir.

Her iki komut da açık portları ve soket bilgilerini gösterir; ancak ss, netstat'ın modern halefidir. Verileri doğrudan kernel'dan okuduğu için yoğun sistemlerde daha hızlı ve daha doğrudur. netstat ise artık pek çok dağıtımda varsayılan olarak kurulu gelmeyen ayrı bir net-tools paketi gerektirir.

Ağdaki başka bir makineden nmap -p PORT HEDEF_IP komutunu kullan. Herhangi bir şey kurmadan hızlı bir dış kontrol yapmak istiyorsan web tabanlı bir port checker aracı kullanabilirsin. Bu yaklaşım, ss gibi yerel araçların yansıtamadığı güvenlik duvarı kurallarını da hesaba katarak portun dışarıdan erişilebilir olup olmadığını test eder.

sudo lsof -i :PORT veya sudo ss -tulnp | grep :PORT komutlarından birini kullan. Her iki komut da o porta ilişkin süreç adını ve PID'yi gösterir. lsof yöntemi, komutu, PID'yi ve kullanıcıyı okunabilir bir biçimde listelediği için özellikle anlaşılır bir çıktı sunar.

Hayır. ufw veya iptables ile bir portu engellemek, dışarıdan gelen bağlantıların servise ulaşmasını engeller; ancak servisin kendisi çalışmaya devam eder. Tamamen durdurmak için sudo systemctl stop servisadi komutunu kullan. Yeniden başlatmada otomatik olarak başlamasını kalıcı biçimde önlemek için sudo systemctl disable servisadi komutunu da çalıştır.