Tüm barındırma hizmetlerinde 15% tasarruf edin

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın: Skills Başlayın
Bölüm
Güvenlik Linux

Linux’ta netstat ve ss Kullanarak Açık ve Dinleyen Portları Kontrol Etme

Bir Linux sisteminde açık ve dinleyen portları izlemek, sunucu güvenliğini korumak, ağ sorunlarını tanılamak ve altyapınızı etkili bir şekilde yönetmek için en kritik uygulamalardan biridir. Hangi portların açık olduğunu ve hangi hizmetlerin bunlara bağlı olduğunu düzenli olarak denetleyerek, yetkisiz erişim denemelerini proaktif olarak tanıyabilir, yanlış yapılandırmaları tespit edebilir ve ciddi güvenlik açıklarına dönüşmeden önce gereksiz saldırı yüzeylerini ortadan kaldırabilirsiniz.

İster bir VPS Hosting planında yüksek trafikli bir uygulama çalıştırıyor olun ister bir dizi bare-metal makineyi yönetiyor olun, Linux sunucunuzun ağ maruziyetini anlamak kaçınılmazdır. Bu kılavuz, Linux’ta port incelemesi için en yaygın olarak kullanılan iki komut satırı aracı olan netstat ve ss kullanımının kapsamlı ve teknik olarak doğru bir açıklamasını, ek araçları ve gerçek dünya en iyi uygulamalarını sağlar.

1. Portları ve Türlerini Anlamak

Araçların kendisine geçmeden önce, portların ne olduğunu, nasıl kategorize edildiklerini ve neden izlenmelerinin önemli olduğunu net bir şekilde anlamak gerekir.

Ağ Portu Nedir?

Ağ portu, bir ana bilgisayardaki belirli bir işlem veya hizmetle ilişkili mantıksal bir iletişim uç noktasıdır. Portlar, tek bir IP adresine sahip bir sunucunun aynı anda birden fazla ağ hizmetini çalıştırmasını sağlar — örneğin, port 80’de bir web sunucusu, port 22’de bir SSH daemon’u ve port 3306’da bir veritabanı.

Port Kategorileri

AralıkKategoriAçıklama
0–1023İyi Bilinen PortlarStandart sistem hizmetleri için ayrılmış (HTTP, SSH, FTP, vb.)
1024–49151Kayıtlı PortlarUygulamalar ve ara yazılım tarafından kullanılır (MySQL, PostgreSQL, vb.)
49152–65535Dinamik/Geçici PortlarGiden istemci bağlantıları için geçici olarak atanır

Karşılaşacağınız Port Durumları

  • LISTEN — Port açıktır ve bir hizmet gelen bağlantıları aktif olarak beklemektedir.
  • ESTABLISHED — İki uç nokta arasında aktif bir bağlantı vardır.
  • TIME_WAIT — Bağlantı kapanmaktadır; sistem uzak uçun son onayı aldığından emin olmak için beklemektedir.
  • CLOSE_WAIT — Uzak uç bağlantıyı kapatmıştır; yerel uygulama henüz kendi tarafını kapatmamıştır.

Taşıma Protokolleri

  • TCP (Transmission Control Protocol): Bağlantı yönelimli, güvenilir, hata denetimi ve garantili teslimat ile. HTTP, HTTPS, SSH, FTP ve çoğu uygulama katmanı protokolü tarafından kullanılır.
  • UDP (User Datagram Protocol): Bağlantısız, daha hızlı, ancak teslimat garantisi olmaksızın. DNS, NTP, DHCP ve akış hizmetleri tarafından kullanılır.

2. netstat ile Portları Kontrol Etme

netstat Nedir?

netstat (network statistics), etkin ağ bağlantılarını, yönlendirme tablolarını, arayüz istatistiklerini ve dinleme portlarını gösteren klasik bir komut satırı yardımcı programıdır. Modern Linux dağıtımlarında ss lehine resmi olarak kullanımdan kaldırılmış olsa da, netstat yaygın olarak dağıtılmaya devam etmektedir — özellikle eski sistemlerde ve yöneticilerin söz dizimini derinlemesine bildikleri ortamlarda.

netstat Kurulumu

netstat, birçok modern dağıtımda artık varsayılan olarak yüklü olmayan net-tools paketinin bir parçasıdır. Aşağıdaki gibi kurun:

Debian / Ubuntu:

sudo apt update && sudo apt install net-tools -y

CentOS / RHEL / AlmaLinux / Rocky Linux:

sudo yum install net-tools -y
# or on newer versions:
sudo dnf install net-tools -y

Arch Linux:

sudo pacman -S net-tools

Temel netstat Söz Dizimi

sudo netstat [options]

Tüm Dinleme TCP ve UDP Portlarını Kontrol Etme

sudo netstat -tuln

Bayrak açıklaması:

BayrakAnlamı
-tTCP bağlantılarını ve portlarını görüntüle
-uUDP bağlantılarını ve portlarını görüntüle
-lYalnızca dinleme soketlerini göster (bağlantı bekleyen portlar)
-nSayısal IP adreslerini ve port numaralarını görüntüle (hız için DNS çözümlemesini atla)

Örnek çıktı:

Active Internet connections (only servers)
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
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN
tcp6       0      0 :::443                  :::*                    LISTEN
udp        0      0 0.0.0.0:68              0.0.0.0:*

Çıktıyı okuma:

  • Proto — Kullanılan protokol (tcp, udp, tcp6, udp6).
  • Local Address — Hizmetin dinlediği IP adresi ve port numarası. 0.0.0.0 hizmetin tüm kullanılabilir arayüzlerde dinlediği anlamına gelir; 127.0.0.1 yalnızca yerel olarak erişilebilir olduğu anlamına gelir.
  • Foreign Address — Uzak istemcinin adresi (dinleme portları için etkin bağlantı olmadığında 0.0.0.0:* olarak gösterilir).
  • State — Bağlantı durumu (LISTEN, ESTABLISHED, TIME_WAIT, vb.).

İşlem Bilgisini Dahil Etme

Her dinleme portunun sahibi olan işlemi görmek için -p bayrağını ekleyin:

sudo netstat -tulnp

İşlem bilgisi ile örnek çıktı:

Proto Recv-Q Send-Q Local Address    Foreign Address  State   PID/Program name
tcp        0      0 0.0.0.0:22       0.0.0.0:*        LISTEN  1023/sshd
tcp        0      0 0.0.0.0:80       0.0.0.0:*        LISTEN  2847/nginx
tcp        0      0 127.0.0.1:3306   0.0.0.0:*        LISTEN  3102/mysqld

> Not: Yalnızca kendi işlemleriniz değil, tüm kullanıcıların işlem adlarını görmek için bu komutu sudo ile çalıştırmanız gerekir.

Belirli Portlar veya Hizmetler için Çıktıyı Filtreleme

Sonuçları belirli bir porta veya hizmete daraltmak için grep kullanın:

# Check if anything is listening on port 80
sudo netstat -tuln | grep ":80"

# Check for SSH (port 22)
sudo netstat -tuln | grep ":22"

# Check for MySQL (port 3306)
sudo netstat -tuln | grep ":3306"

# Check for HTTPS (port 443)
sudo netstat -tuln | grep ":443"

Tüm Etkin Bağlantıları Görüntüleme (Yalnızca Dinleme Değil)

Kurulan olanlar da dahil olmak üzere tüm etkin bağlantıları görmek için -l bayrağını kaldırın:

sudo netstat -tunp

Yönlendirme Tablosunu Görüntüleme

sudo netstat -r

Ağ Arayüzü İstatistiklerini Görüntüleme

sudo netstat -i

3. ss ile Portları Kontrol Etme

ss Nedir?

ss (socket statistics), netstat için modern bir yedek olup, iproute2 paketinin bir parçası olarak geliştirilmiştir. Linux kernel ile Netlink soketleri aracılığıyla doğrudan iletişim kurarak, özellikle binlerce eşzamanlı bağlantısı olan sistemlerde netstat ile karşılaştırıldığında önemli ölçüde daha hızlı ve verimlidir.

ss Ubuntu 18.04+, CentOS 7+, Debian 9+ ve türevleri dahil olmak üzere neredeyse tüm modern Linux dağıtımlarında varsayılan olarak yüklüdür.

Temel ss Sözdizimi

ss [options] [filter]

Tüm Dinleme Yapan TCP ve UDP Portlarını Kontrol Etme

ss -tuln

Bayraklar netstat ile aynı anlamda:

BayrakAnlamı
-tTCP soketlerini göster
-uUDP soketlerini göster
-lYalnızca dinleme yapan soketleri göster
-nSayısal adresleri göster (DNS çözümlemesi yok)

Ö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       128      127.0.0.1:3306         0.0.0.0:*
tcp    LISTEN  0       511         [::]:443            [::]:*
udp    UNCONN  0       0        0.0.0.0:68             0.0.0.0:*

İşlem Bilgisini Dahil Etme

sudo ss -tulnp

Örnek çıktı:

Netid  State   Recv-Q  Send-Q  Local Address:Port  Peer Address:Port  Process
tcp    LISTEN  0       128     0.0.0.0:22           0.0.0.0:*          users:(("sshd",pid=1023,fd=3))
tcp    LISTEN  0       511     0.0.0.0:80           0.0.0.0:*          users:(("nginx",pid=2847,fd=6))
tcp    LISTEN  0       128     127.0.0.1:3306       0.0.0.0:*          users:(("mysqld",pid=3102,fd=21))

Protokole Göre Filtreleme

Yalnızca dinleme yapan TCP portlarını göster:

ss -tl

Yalnızca dinleme yapan UDP portlarını göster:

ss -ul

Tüm TCP bağlantılarını göster (kurulu olanlar dahil):

ss -t

ss ile Gelişmiş Filtreleme

ss en güçlü özelliklerinden biri, port, adres, durum ve daha fazlasına göre filtreleme yapmanıza olanak tanıyan yerleşik ifade tabanlı filtrelemedir — grep kullanmaya gerek kalmaz.

Belirli bir port numarasına göre filtrele:

ss -tuln sport = :80
ss -tuln sport = :443
ss -tuln sport = :22

Hedef porta göre filtrele:

ss -tuln dport = :3306

ESTABLISHED durumundaki tüm soketleri göster:

ss -t state established

LISTEN durumundaki tüm soketleri göster:

ss -t state listening

Kaynak IP adresine göre filtrele:

ss -tuln src 192.168.1.100

Belirli bir uzak ana bilgisayara bağlantıları göster:

ss -t dst 203.0.113.50

Birden fazla filtreyi birleştir:

ss -t state established '( dport = :443 or sport = :443 )'

Soket Bellek Kullanımını Görüntüleme

ss ayrıca soket başına ayrıntılı bellek kullanımını gösterebilir, bu da performans sorunlarını tanılamak için kullanışlıdır:

ss -tm

Zamanlayıcı Bilgisini Görüntüleme

ss -to

Bu, TCP bağlantıları için yeniden iletim zamanlayıcılarını ve canlı tutma zamanlayıcılarını gösterir; bu, bağlantı kararlılığı sorunlarını tanılamak için çok değerlidir.

4. netstat ve ss Karşılaştırması

Her iki araç da aynı temel amacı gerçekleştirir, ancak seçiminizi yönlendirmesi gereken anlamlı farklar vardır:

Özelliknetstatss
Paketnet-tools (genellikle önceden yüklü değil)iproute2 (modern dağıtımlarda önceden yüklü)
HızDaha yavaş (/proc/net/ dosyasından okur)Daha hızlı (Netlink kernel arayüzünü kullanır)
Ölçekte performansBinlerce bağlantı ile kötüleşirBüyük bağlantı sayılarını verimli şekilde işler
Gelişmiş filtrelemegrep ile yönlendirme gerektirirYerleşik ifade tabanlı filtreleme
Çıktı detayıİyiDaha detaylı (bellek, timerlar, vb.)
IPv6 desteğiYeterliMükemmel
Bakım durumuKullanımdan kaldırıldıAktif olarak bakımı yapılıyor
Öğrenme eğrisiUzun süredir yönetici olan kişilere tanıdıkBiraz farklı sözdizimi ama iyi belgelenmiş

netstat Ne Zaman Kullanılır

  • Eski Linux sistemlerini yönetirken (CentOS 6, Debian 7, vb.) ss mevcut olmayabilir.
  • Zaten netstat sözdizimini kullanan betikler veya belgelerle çalışırken.
  • Çıktı formatına daha aşina olduğunuzda ve gelişmiş filtrelemeye ihtiyaç duymadığınızda.

ss Ne Zaman Kullanılır

  • Herhangi bir modern Linux dağıtımında (Ubuntu 18.04+, CentOS 7+, Debian 9+ ve daha yeni).
  • Yüksek hacimli eşzamanlı bağlantıları yönetirken — örneğin Dedicated Servers üzerinde ağır yük altında çalışanlar.
  • Gelişmiş filtreleme, timer bilgisi veya soket bellek istatistiklerine ihtiyaç duyduğunuzda.
  • Performansın önemli olduğu otomasyon ve betik yazımı için.

5. Açık Portları Kontrol Etmek için Diğer Araçlar

netstat ve ss dışında, Linux’ta port incelemesi ve ağ analizi için yararlı olan birkaç başka yardımcı program vardır.

lsof — Açık Dosyaları Listele (Soketler Dahil)

lsof (Açık Dosyaları Listele), ağ soketlerini dosya olarak değerlendirir (Linux’un “her şey bir dosyadır” felsefesiyle tutarlı) ve hangi işlemin belirli bir portu açık tuttuğunu gösterebilir.

lsof’u yükleyin:

# Debian/Ubuntu
sudo apt install lsof -y

# CentOS/RHEL
sudo yum install lsof -y

Port 80’i hangi işlemin kullandığını kontrol edin:

sudo lsof -i :80

Port 443’ü hangi işlemin kullandığını kontrol edin:

sudo lsof -i :443

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

sudo lsof -i

Tüm TCP dinleme soketlerini listeleyin:

sudo lsof -i TCP -s TCP:LISTEN

Örnek çıktı:

COMMAND   PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx    2847     root    6u  IPv4  23456      0t0  TCP *:http (LISTEN)
nginx    2848 www-data    6u  IPv4  23456      0t0  TCP *:http (LISTEN)

nmap — Network Mapper

nmap güvenlik denetimi, ağ keşfi ve port taraması için kullanılan güçlü bir ağ tarama aracıdır. ss ve netstat (yerel sistemi inceleyen) aksine, nmap hem yerel hem de uzak ana bilgisayarları tarayabilir.

nmap’i yükleyin:

# Debian/Ubuntu
sudo apt install nmap -y

# CentOS/RHEL
sudo yum install nmap -y

localhost’taki tüm TCP portlarını tarayın:

sudo nmap -sT localhost

İşletim sistemi algılaması ile açık portları tarayın:

sudo nmap -sT -O localhost

Belirli bir port aralığını tarayın:

sudo nmap -p 1-1024 localhost

UDP portlarını tarayın (root gerektirir):

sudo nmap -sU localhost

Uzak bir sunucuyu tarayın:

sudo nmap -sT 203.0.113.50

> Önemli: Yalnızca sahip olduğunuz veya açık izniniz olan sistemleri tarayın. Yetkisiz port taraması yasaları ve hizmet şartlarını ihlal edebilir.

fuser — Dosya veya Soket Kullanan İşlemleri Tanımla

# Find which process is using port 80 (TCP)
sudo fuser 80/tcp

# Find which process is using port 53 (UDP)
sudo fuser 53/udp

/proc/net/ — Doğrudan Kernel Arayüzü

Komut dosyası yazma amaçları için, port bilgilerini doğrudan Linux kernel’inin sanal dosya sisteminden okuyabilirsiniz:

# View raw TCP socket table
cat /proc/net/tcp

# View raw UDP socket table
cat /proc/net/udp

/proc/net/tcp içindeki adresler ve portlar onaltılık (hexadecimal) olarak görüntülenir ve insan tarafından okunabilir hale getirilmesi için dönüştürülmesi gerekir. ss ve netstat gibi araçlar bu verileri otomatik olarak ayrıştırır.

6. Açık Port Yönetimi için Güvenlik En İyi Uygulamaları

Açık portları nasıl kontrol edeceğinizi bilmek savaşın sadece yarısıdır. Bu bilgiye göre hareket etmek sunucunuzu güvende tutar. İşte her Linux yöneticisinin izlemesi gereken uygulanabilir en iyi uygulamalar:

En Az Maruz Kalma Prensibi

Yalnızca uygulamanızın işlev görmesi için kesinlikle gerekli olan portları açığa çıkarın. Her açık port potansiyel bir saldırı vektörüdür. Dinleme portlarınızı düzenli olarak denetleyin ve herkese açık olması gerekmeyen her şeyi kapatın veya güvenlik duvarı arkasına alın.

Hizmetleri Belirli Arayüzlere Bağlayın

Gerekli olmadığı sürece hizmetleri 0.0.0.0 (tüm arayüzler) öğesine bağlamaktan kaçının. Örneğin, bir MySQL veritabanı sunucusu yalnızca yerel olarak erişiliyorsa 127.0.0.1 öğesinde dinlemelidir:

# In /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 127.0.0.1

Güvenlik Duvarı Kullanın

Açık portlara erişimi IP adresi, alt ağ veya ağ arayüzüne göre kısıtlamak için ufw (Ubuntu) veya firewalld / iptables (CentOS/RHEL) kullanın:

# Allow SSH only from a specific IP (ufw)
sudo ufw allow from 203.0.113.10 to any port 22

# Deny all other access to port 22
sudo ufw deny 22

Dinleme Portlarını Düzenli Olarak Denetleyin

Cron işleri veya izleme araçlarını kullanarak düzenli port denetimleri planlayın. Aniden yeni bir dinleme portu, tehlikeye atılmış bir hizmeti, yanlış yapılandırmayı veya en kötü durumda kötü amaçlı yazılımı gösterebilir:

# Quick audit command — save output and compare over time
sudo ss -tulnp > /var/log/port_audit_$(date +%F).txt

Hizmetleri SSL/TLS ile Güvenli Hale Getirin

İnternete açık olan herhangi bir hizmet (web sunucuları, posta sunucuları, kontrol panelleri) şifreli bağlantılar kullanmalıdır. Açık portlarınızı geçerli SSL Sertifikaları ile eşleştirerek aktarım sırasında verileri koruyun ve ortadaki adam saldırılarını önleyin.

Beklenmeyen Değişiklikleri İzleyin

Yeni işlemler portlarda dinlemeye başladığında sizi uyarmak için AIDE, Tripwire veya auditd gibi izinsiz giriş algılama araçlarını kullanın. Kapsamlı görünürlük için merkezi günlüğe kaydetme (örneğin, ELK Stack, Graylog) ile entegre edin.

Kullanılmayan Hizmetleri Devre Dışı Bırakın

Bir hizmet gerekli değilse, onu durdurun ve önyükleme sırasında başlamasını devre dışı bırakın:

# Stop and disable a service (systemd)
sudo systemctl stop <service-name>
sudo systemctl disable <service-name>

Hızlı Referans: En Kullanışlı Komutlar

Görevnetstat Komutuss Komutu
Tüm dinleme TCP/UDP portlarısudo netstat -tulnsudo ss -tuln
Tüm dinleme portları PID’ler ilesudo netstat -tulnpsudo ss -tulnp
Yalnızca dinleme TCP portlarısudo netstat -tlnsudo ss -tl
Yalnızca dinleme UDP portlarısudo netstat -ulnsudo ss -ul
Port 80’e göre filtrele`sudo netstat -tulngrep ":80"`sudo ss -tuln sport = :80
Tüm kurulan bağlantılarsudo netstat -tunpsudo ss -t state established
Yönlendirme tablosunu göstersudo netstat -rip route show

Sonuç

Açık ve dinleyen portları izlemek, herhangi bir Linux sistem yöneticisi veya DevOps mühendisi için temel bir beceridir. İster bir üretim web sunucusunu güvenli hale getiriyor olun, ister bir bağlantı sorununu gideriyor olun, ister rutin bir güvenlik denetimi yapıyor olun, netstat ve ss sisteminizin ağ maruziyeti hakkında anında, işlem yapılabilir görünürlük sağlar.

Temel çıkarımları özetlemek gerekirse:

  • ss kullanın herhangi bir modern Linux dağıtımında birincil araç olarak — daha hızlı, daha zengin özelliklere sahip ve aktif olarak bakımı yapılmaktadır.
  • netstat kullanın eski sistemlerle çalışırken veya mevcut betikler ve iş akışları buna bağlı olduğunda.
  • lsof ve nmap ile tamamlayın daha derin işlem düzeyinde inceleme ve harici port taraması için.
  • Her zaman bulgularınız üzerine hareket edin — gereksiz portları kapatın, hizmetleri doğru arayüzlere bağlayın ve güvenlik duvarı kurallarını uygulayın.
  • Açığa çıkan hizmetleri güvenli hale getirin uygun SSL Sertifikaları ve erişim kontrolleri ile.

Bu güvenlik uygulamalarını uygulamak için tam root erişimi sağlayan bir barındırma ortamı arıyorsanız, AlexHost’un VPS Barındırma planları Linux sunucu yapılandırması üzerinde tam kontrol sağlar — güvenlik duvarı yönetimi, hizmet sertleştirme ve ağ izleme dahil. Maksimum performans ve özel kaynaklar gereken takımlar için, Özel Sunucularımız kurumsal düzey güvenlik işlemleri için gereken ham güç ve izolasyon sağlar. Tanıdık bir arayüzle yönetilen bir ortamı tercih ediyorsanız, kontrol kaybetmeden kolaylaştırılmış sunucu yönetimi için cPanel ile VPS seçeneklerimizi keşfedin.

Düzenli port denetimi, sertleştirilmiş bir sunucu yapılandırması ile birleştirildiğinde, yetkisiz erişim ve veri ihlallerine karşı en etkili savunmalardan biridir. Bunu sistem yönetimi uygulamanızın rutin bir parçası haline getirin.