Linux’ta Netstat ve SS Kullanarak Açık ve Dinleyen Portları Kontrol Etme
Linux sisteminde açık ve dinleme portlarının izlenmesi, sunucu güvenliğini korumak, ağ sorunlarını tanılamak ve altyapınızı etkili bir şekilde yönetmek için en temel uygulamalardan biridir. Bir üretim web sunucusu, bir VPS Hosting ortamı veya bir Dedicated Server çalıştırıyor olsanız da, hangi portların açık olduğunu ve hangi hizmetlerin bunlara bağlı olduğunu tam olarak anlamak, yetkisiz erişimi önlemek, yanlış yapılandırmaları tespit etmek ve gereksiz saldırı yüzeylerini ortadan kaldırmak için gereken görünürlüğü sağlar.
Bu kapsamlı kılavuzda, herhangi bir Linux sisteminde açık ve dinleme portlarını kontrol etmek için netstat ve ss komutlarını nasıl kullanacağınızı, bunların güçlü yönlerini karşılaştıracağınızı ve daha derin ağ analizi için lsof ve nmap gibi ek araçları tanıtacağız.
Açık Portları İzlemenin Neden Önemli Olduğu
Sunucunuzdaki her açık port potansiyel bir giriş noktasını temsil eder. Yanlış yapılandırılmış, eski veya basitçe unutulmuş hizmetler sisteminizi istismardan açığa çıkarabilir. Dinleme portlarınızı düzenli olarak denetlemek şunları yapmanızı sağlar:
- Yetkisiz hizmetleri beklenmeyen portlarda tanımlayın
- İzinsiz giriş denemelerini veya tehlikeye atılmış işlemleri tespit edin
- Güvenlik duvarı kurallarını doğru şekilde çalıştığını doğrulayın
- Yeni dağıtılan uygulamaların doğru arayüzlere bağlandığını onaylayın
- Kullanılmayan portları kapatın ve saldırı yüzeyinizi azaltın
Bu, Paylaşımlı Web Hosting ortamlarını veya birden fazla hizmetin aynı anda çalıştığı çok kiracılı sunucuları yöneten yöneticiler için özellikle kritiktir.
Portları ve Türlerini Anlamak
Araçlara dalmadan önce, komut çıktısında karşılaşacağınız terminolojiyi anlamak önemlidir.
| Terim | Açıklama |
|---|---|
| Açık Port | Gelen bağlantıları aktif olarak dinleyen bir uygulamanın bulunduğu port |
| Dinleme Portu | Ağ trafiğini bekleyen bir hizmete bağlı bir port |
| TCP (Transmission Control Protocol) | Bağlantı odaklı, güvenilir, HTTP, SSH, FTP vb. tarafından kullanılır |
| UDP (User Datagram Protocol) | Bağlantısız, daha hızlı ancak daha az güvenilir, DNS, NTP vb. tarafından kullanılır |
netstat ile Portları Kontrol Etme
netstat Nedir?
netstat (ağ istatistikleri), ağ bağlantıları, yönlendirme tabloları, arayüz istatistikleri ve dinleme portları hakkında ayrıntılı bilgi sağlayan klasik bir komut satırı yardımcı programıdır. Modern dağıtımlarda ss lehine resmi olarak kullanımdan kaldırılmış olsa da, yaygın olarak kullanılmaya devam etmektedir ve birçok eski sistemde hala bulunmaktadır.
netstat Kurulumu
netstat komutu, modern Linux dağıtımlarında varsayılan olarak yüklenmeyebilecek net-tools paketinin bir parçasıdır.
Debian / Ubuntu:
sudo apt install net-toolsCentOS / RHEL / AlmaLinux / Rocky Linux:
sudo yum install net-toolsAçık ve Dinleme Portlarını Kontrol Etmek için netstat Kullanma
Sisteminizde tüm dinleme TCP ve UDP portlarını görüntülemek için aşağıdaki komutu çalıştırın:
sudo netstat -tulnBayrak açıklaması:
| Bayrak | Açıklama |
|---|---|
-t | TCP portlarını göster |
-u | UDP portlarını göster |
-l | Yalnızca dinleme portlarını göster |
-n | Ana bilgisayar adlarını çözmek yerine sayısal adresleri görüntüle |
Örnek Çıktı
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp6 0 0 :::443 :::* LISTEN
udp 0 0 0.0.0.0:53 0.0.0.0:*Çıktı Sütunlarını Anlama
- Yerel Adres — Hizmetin dinlediği IP adresi ve port numarası.
0.0.0.0hizmetin tüm kullanılabilir arayüzlerde dinlediği anlamına gelir. - Uzak Adres — Etkin bağlantılar için uzak IP ve port. Yıldız işareti (
*) henüz hiçbir bağlantı kurulmadığı anlamına gelir. - Durum — Bağlantı durumu.
LISTENportun açık olduğunu ve gelen bağlantıları beklediğini gösterir.
netstat ile Belirli Portları Filtreleme
Çıktıyı belirli bir port veya hizmetin izolasyonu için grep aracılığıyla yönlendirebilirsiniz. Örneğin, port 80 (HTTP) üzerinde herhangi bir şeyin dinleme yapıp yapmadığını kontrol etmek için:
sudo netstat -tuln | grep ":80"Port 443 (HTTPS) kontrol etmek için, bu port SSL Sertifikaları yüklü sunucular için gereklidir:
sudo netstat -tuln | grep ":443"Her bağlantıdan sorumlu işlem adını ve PID’yi de görüntülemek için -p bayrağını ekleyin:
sudo netstat -tulnpss ile Portları Kontrol Etme
ss Nedir?
ss (socket statistics), netstat için modern bir yedektir. Daha hızlı, daha verimli ve özellikle yüksek sayıda eşzamanlı bağlantı olan sistemlerde daha zengin çıktı sağlar. ss komutu neredeyse tüm modern Linux dağıtımlarında varsayılan olarak dahil edilir ve ek kurulum gerektirmez.
Açık ve Dinleyen Portları Kontrol Etmek için ss Kullanma
ss sözdizimi netstat ile yakından benzerdir ve geçiş basittir:
ss -tulnBayrak açıklaması:
| Bayrak | Açıklama |
|---|---|
-t | TCP soketlerini göster |
-u | UDP soketlerini göster |
-l | Yalnızca dinleyen soketleri göster |
-n | Sayısal adresleri görüntüle |
Örnek Çıktı
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
tcp LISTEN 0 511 0.0.0.0:80 0.0.0.0:*
tcp LISTEN 0 511 [::]:443 [::]:*
udp UNCONN 0 0 0.0.0.0:53 0.0.0.0:*ss Gelişmiş Kullanımı
ss komutu, netstat tarafından sağlanabilecek olanın çok ötesine geçen bir dizi gelişmiş filtreleme ve görüntüleme seçeneği sunar.
Yalnızca Dinleyen TCP Bağlantı Noktalarını Göster
ss -tlYalnızca Dinleyen UDP Bağlantı Noktalarını Göster
ss -ulİşlem Adlarını ve PID’leri Görüntüle
Belirli bir bağlantı noktasını hangi işlemin kullandığını belirlemek için -p bayrağını kullanın:
ss -tulnpBu, sorun giderme için en yararlı komutlardan biridir — her dinleyen soket ile birlikte işlem adını ve PID’yi gösterir, hangi uygulamanın hangi bağlantı noktasına sahip olduğunu hemen açık hale getirir.
-p Bayrağı ile Örnek Çıktı
Netid State Local Address:Port Process
tcp LISTEN 0.0.0.0:80 users:(("nginx",pid=1234,fd=6))
tcp LISTEN 0.0.0.0:22 users:(("sshd",pid=987,fd=3))
tcp LISTEN 0.0.0.0:3306 users:(("mysqld",pid=2345,fd=21))Belirli Bir Bağlantı Noktasına Göre Filtrele
8080 bağlantı noktasında hangi işlemin dinlediğini kontrol etmek için:
ss -tulnp | grep ":8080"Tüm Kurulan TCP Bağlantılarını Göster
ss -tn state establishedÖzet İstatistikleri Göster
ss -sBu, türe ve duruma göre toplam soketlerin hızlı bir özetini sağlar — olağandışı bağlantı hacimlerini tespit etmek için yararlıdır.
netstat vs. ss: Doğrudan Karşılaştırma
| Özellik | `netstat` | `ss` |
|---|---|---|
| Performans | Yoğun sistemlerde daha yavaş | Önemli ölçüde daha hızlı |
| Varsayılan kullanılabilirlik | net-tools paketini gerektirir | Modern dağıtımlarda önceden yüklü |
| Filtreleme seçenekleri | Temel (grep gerekli) | Gelişmiş yerleşik filtreler |
| İşlem bilgisi | -p ile kullanılabilir | -p ile kullanılabilir |
| Çıktı detayı | Standart | Daha ayrıntılı soket bilgisi |
| Önerilen kullanım | Eski sistemler, tanıdık olması | Modern Linux ortamları |
netstat Ne Zaman Kullanılır
ssnin mevcut olmadığı eski Linux sistemlerindenetstatsöz dizimine göre yazılmış betikler veya belgelerle çalışırkennet-toolsnin zaten yüklü olduğu sistemlerde hızlı kontroller için
ss Ne Zaman Kullanılır
- Herhangi bir modern Linux dağıtımında (Ubuntu 20.04+, CentOS 8+, Debian 10+, vb.)
- Yüksek trafikli sunucularda daha hızlı çıktıya ihtiyaç duyduğunuzda
- Gelişmiş filtreleme ve ayrıntılı soket analizi için
Port Denetimi için Ek Araçlar
netstat ve ss dışında, kapsamlı bir port denetimi için birkaç başka yardımcı program değerlidir.
lsof Kullanımı
lsof (açık dosyaları listele) ağ soketlerini dosya olarak ele alır ve bu da belirli bir portu hangi işlemin kullandığını belirlemek için başka bir güçlü yol sağlar.
Port 80’e bağlı olan işlemi kontrol etmek için:
sudo lsof -i :80Tüm dinleme portlarını kontrol etmek için:
sudo lsof -i -P -n | grep LISTENÖrnek çıktı:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 1234 root 6u IPv4 23456 0t0 TCP *:80 (LISTEN)
sshd 987 root 3u IPv4 12345 0t0 TCP *:22 (LISTEN)nmap Kullanımı
nmap güçlü bir ağ tarama aracıdır ve hem yerel olarak hem de uzak ana bilgisayarlarda açık portları tespit edebilir. Güvenlik duvarı yapılandırmanızı harici bir perspektiften doğrulamak için özellikle yararlıdır.
Henüz mevcut değilse nmap yükleyin:
sudo apt install nmap # Debian/Ubuntu
sudo yum install nmap # CentOS/RHELYerel makinedeki tüm TCP portlarını tarayın:
sudo nmap -sT localhostBelirli bir IP adresinde açık portları tarayın:
sudo nmap -sV 192.168.1.100-sV bayrağı ayrıca her açık portta çalışan hizmetin sürümünü algılamaya çalışır; bu, eski veya güvenlik açığı olan yazılımları belirlemek için çok değerlidir.
> Güvenlik Notu: nmap taramalarını yalnızca sahip olduğunuz veya tarama izni aldığınız sistemlere karşı çalıştırın.
Pratik Güvenlik İş Akışı: Sunucu Portlarınızı Denetleme
Bir Linux sunucusunda açık portları denetlemek için önerilen adım adım iş akışı aşağıdadır:
- İşlem bilgileriyle birlikte tüm dinleme portlarını listeleyin:
ss -tulnp- Her portu beklenen hizmetlerle karşılaştırın. Beklenmeyen bir portta bilinmeyen bir işlem görürseniz, hemen araştırın.
- Yalnızca yerel olarak erişilebilir olması gereken tüm arayüzlerde (
0.0.0.0) dinleme yapan hizmetleri kontrol edin. Örneğin, bir veritabanı sunucusu (port 3306) tipik olarak127.0.0.1adresine bağlanmalı,0.0.0.0adresine değil.
- Güvenlik duvarı kurallarınızı doğrulayın
iptables -L -nveyaufw status verboseile yalnızca amaçlanan portların harici olarak açığa çıktığından emin olmak için.
- Harici bir ana bilgisayardan
nmapkullanın internetten hangi portlara gerçekten ulaşılabilir olduğunu doğrulamak için, çünkü güvenlik duvarı kurallarısstarafından yerel olarak bildirilenlerden farklı olabilir.
- Gerekli olmayan portları kapatın veya kısıtlayın güvenlik duvarınızı kullanarak veya ilişkili hizmeti durdurarak.
Hızlı Referans: En Kullanışlı Komutlar
# List all listening TCP and UDP ports (modern, recommended)
ss -tuln
# List listening ports with process names and PIDs
ss -tulnp
# List all listening ports using netstat (legacy)
sudo netstat -tulnp
# Check which process is using port 443
ss -tulnp | grep ":443"
# Check open ports with lsof
sudo lsof -i -P -n | grep LISTEN
# Scan local machine for open ports with nmap
sudo nmap -sT localhostSonuç
Açık ve dinleyen portları düzenli olarak denetlemek, Linux sunucu yönetiminin vazgeçilmez bir parçasıdır. netstat ve ss gibi araçlar, hangi hizmetlerin çalıştığı, hangi portları işgal ettikleri ve sisteminizde beklenmeyen bir şeyin olup olmadığı konusunda anında, ayrıntılı görünürlük sağlar.
Modern Linux ortamları için, ss açık seçimdir — daha hızlı, daha yetenekli ve varsayılan olarak mevcuttur. Ancak, netstat eski sistemler veya söz dizimi konusunda zaten rahat olan yöneticiler için güvenilir bir yedek olmaya devam etmektedir. Bu araçları lsof ve nmap ile desteklemek, sunucunuzun ağ maruziyetinin tam bir resmini sağlar.
Yeni bir VPS Hosting dağıtımını sağlamlaştırıyor, bir Dedicated Servers filosunu yönetiyor veya bir Email Hosting ortamını güvenli hale getiriyor olsanız da, port denetiminde uzmanlaşmak, altyapınızın güvenliğine ve güvenilirliğine doğrudan katkıda bulunan temel bir beceridir.
tasarruf edin