Güvenlik & SSL

    Nmap ile Açık Port Taraması ve Sunucu Denetimi

    Nmap ile açık port ve servis tespitini, sunucu yüzey denetimini ve gereksiz portları kapatmayı anlatan rehber.

    13 dk okuma Güncellendi: 10 Temmuz 2026

    Bir sunucuyu internete açtığınız andan itibaren, o sunucunun dünyaya bakan her açık portu potansiyel bir kapıdır. Bu kapıların bir kısmını bilinçli açarsınız: 80 ve 443 web trafiği için, 22 SSH yönetimi için. Ama zamanla kurulan paketler, test için başlatılıp unutulan servisler, varsayılan ayarlarla gelen veritabanları ve eski uygulamalar, sizin haberiniz bile olmadan yeni kapılar açar. Saldırganların ilk yaptığı şey tam olarak budur: hedef IP'yi tarayıp hangi kapıların açık olduğunu, o kapının ardında hangi yazılımın hangi sürümde çalıştığını çıkarmak. Kısacası saldırgan sizden önce sunucunuzu tanımaya çalışır.

    İşte bu yüzden port taraması yalnızca saldırganların değil, sistem yöneticisinin de en temel aracıdır. Kendi sunucunuzu düzenli olarak tarayarak "dışarıdan bakınca ne görünüyorum" sorusunun cevabını alır, beklemediğiniz açık portları fark eder ve saldırı yüzeyini daraltırsınız. Bu rehberde bu işin fiili standart aracı olan Nmap'i kuracak, temel ve orta seviye tarama komutlarını gerçek örneklerle göstereceğiz, çıktıları nasıl yorumlayacağınızı anlatacak ve en önemlisi gereksiz servisleri kapatıp güvenlik duvarıyla nasıl sıkılaştıracağınızı adım adım ele alacağız. Baştan bir uyarı: burada anlatılan her şeyi yalnızca sahibi olduğunuz veya yazılı izniniz olan sistemlerde uygulayın.

    Açık Port Neden Saldırı Yüzeyidir#

    Her açık port, o portu dinleyen bir servise karşılık gelir. Servis demek çalışan bir yazılım demektir; yazılım demek de kod, sürüm ve olası güvenlik açığı demektir. Bir port açıksa, o portun ardındaki yazılım internetten gelen paketleri işliyordur. Eğer o yazılımda bilinen bir zafiyet varsa, güncellenmemişse veya zayıf bir parolayla korunuyorsa, saldırgan için doğrudan bir giriş noktası oluşur. Dolayısıyla "saldırı yüzeyi" dediğimiz şey büyük ölçüde açık portların ve arkalarındaki servislerin toplamıdır.

    Sorun genellikle bilerek açtığınız portlar değil, farkında olmadan açık kalanlardır. Bir örnek düşünün: MySQL veya Redis kurdunuz, varsayılan yapılandırma bunları tüm ağ arayüzlerine (0.0.0.0) bağladı ve siz sadece uygulamanızın çalıştığını görüp devam ettiniz. Şimdi veritabanınız 3306 veya 6379 portundan tüm internete açık durumda. Redis gibi bazı servisler varsayılan olarak kimlik doğrulaması bile istemez. Aynı şey eski bir yönetim paneli, test amaçlı açılan bir port, ya da paket kurulumuyla gelen bir FTP servisi için de geçerlidir.

    Bu görünmez kapıları saymanın en temiz yolu iki taraflı bakmaktır. Sunucunun içinden hangi servisin dinlediğine bakarsınız:

    # Dinleyen tüm TCP/UDP portlarını ve hangi süreç olduğunu listeler
    ss -tulpn
    
    # Aynı bilgiyi eski araçla almak isterseniz
    sudo netstat -tulpn
    

    Sonra sunucunun dışından Nmap ile tarayarak internete gerçekte ne göründüğünü görürsünüz. İçeriden görünen ile dışarıdan görünen arasındaki fark, çoğu zaman güvenlik duvarının doğru çalışıp çalışmadığını anlatan en net sinyaldir. Güvenlik duvarı temellerini daha derin ele aldığımız UFW güvenlik duvarı rehberi bu daraltma işinin pratik tarafını tamamlar.

    Nmap Nedir ve Nasıl Kurulur#

    Nmap (Network Mapper), ağdaki cihazları ve açık portlarını keşfetmek için kullanılan açık kaynaklı, sektör standardı bir tarama aracıdır. Temelde hedefe farklı türde paketler gönderir, gelen yanıtları yorumlar ve hangi portların açık, kapalı veya filtrelenmiş olduğunu raporlar. Bunun ötesinde çalışan servisin türünü ve sürümünü tespit edebilir, işletim sistemini tahmin edebilir ve NSE (Nmap Scripting Engine) betikleriyle çok daha derin denetimler yapabilir.

    Kurulum çoğu dağıtımda tek satırdır:

    # Debian / Ubuntu
    sudo apt update && sudo apt install -y nmap
    
    # RHEL / AlmaLinux / Rocky
    sudo dnf install -y nmap
    
    # Kurulumu ve sürümü doğrulayın
    nmap --version
    

    Nmap komutunun genel yapısı şudur: nmap [tarama tipi] [seçenekler] [hedef]. Hedef bir IP adresi (203.0.113.10), bir alan adı (ornek.com), bir aralık (203.0.113.1-50) veya bir CIDR bloğu (203.0.113.0/24) olabilir. Bazı tarama tipleri ham paket üretimi gerektirdiği için sudo ister; yetkiniz yoksa Nmap otomatik olarak daha kısıtlı bir tarama tipine düşer, bu yüzden denetim yaparken sudo ile çalıştırmak sonuçların tutarlı olmasını sağlar.

    Küçük ama önemli bir not: kendi sunucunuzu taramak için ideal senaryo, tamamen dışarıdaki bir noktadan taramaktır. Sunucunun kendi üstünden localhost taramak yalnızca loopback arayüzünü gösterir ve güvenlik duvarı kurallarını atladığı için gerçek internet görünümünü vermez. Elinizde başka bir sunucu yoksa, yönettiğiniz farklı bir VPS veya kişisel makineniz iyi bir tarama noktasıdır.

    Temel Port Taraması Komutları#

    Denetime en yalın taramayla başlayın. Argümansız bir Nmap taraması, en yaygın 1000 TCP portunu kontrol eder ve çoğu durumda ilk resim için yeterlidir:

    # En yaygın 1000 TCP portunu tarar
    nmap sunucunuz.com
    

    Belirli portlara odaklanmak istediğinizde -p bayrağını kullanırsınız. Bu, denetimin en sık kullanılan seçeneğidir çünkü tam olarak hangi kapılarla ilgilendiğinizi söylemenizi sağlar:

    # Tek bir port
    nmap -p 22 sunucunuz.com
    
    # Birden fazla port
    nmap -p 22,80,443,3306,6379 sunucunuz.com
    
    # Port aralığı
    nmap -p 1-1024 sunucunuz.com
    
    # TÜM 65535 portu (yavaş ama eksiksiz denetim için değerli)
    nmap -p- sunucunuz.com
    

    Gerçek bir denetimde -p- ile tüm portları taramak çok önemlidir, çünkü saldırganların en sık aradığı şey standart dışı portlara taşınmış, "kimse burayı bakmaz" varsayımıyla açık bırakılmış servislerdir. Standart taramada görünmeyen 9000, 8080, 27017 gibi portlar ancak tam tarama ile ortaya çıkar.

    Tarama tipini de bilmek gerekir. İki tip en yaygınıdır ve aralarındaki farkı bilmek çıktıyı doğru yorumlamanızı sağlar:

    TipBayrakYetkiÖzellik
    SYN taraması-sSsudo gerekirYarı açık; hızlı ve görece sessiz, varsayılan
    TCP connect-sTyetki gerekmezTam bağlantı kurar; daha "gürültülü" ama her yerde çalışır
    UDP taraması-sUsudo gerekirDNS, SNMP gibi UDP servisleri için; yavaştır
    # Hızlı SYN taraması (denetim için tercih edilen)
    sudo nmap -sS -p- sunucunuz.com
    
    # UDP servislerini de unutmayın (DNS 53, SNMP 161 gibi)
    sudo nmap -sU -p 53,123,161 sunucunuz.com
    

    UDP taramasını atlamak sık yapılan bir hatadır. TCP tarafında her şey temiz görünse bile açık bir SNMP veya DNS servisi ciddi bilgi sızıntısına yol açabilir; en azından bilinen UDP portlarını kontrol edin.

    Servis ve Sürüm Tespiti#

    Bir portun açık olduğunu bilmek denetimin sadece yarısıdır. Asıl kritik soru şudur: o portun ardında hangi yazılım, hangi sürümde çalışıyor? Çünkü zafiyetler sürümlere bağlıdır. Nmap'in -sV bayrağı tam olarak bunu yapar; açık portlara bağlanıp servisin kendini tanıttığı bilgiyi (banner) okur ve yazılım adı ile sürümünü çıkarır:

    # Servis ve sürüm tespiti
    sudo nmap -sV sunucunuz.com
    

    Örnek bir çıktı şöyle görünebilir:

    PORT     STATE SERVICE VERSION
    22/tcp   open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.6 (Ubuntu Linux; protocol 2.0)
    80/tcp   open  http    nginx 1.18.0 (Ubuntu)
    443/tcp  open  http    nginx 1.18.0 (Ubuntu)
    3306/tcp open  mysql   MySQL 5.7.38
    

    Bu çıktı bir denetçi için altın değerindedir. Buradaki MySQL 5.7.38 satırı iki alarm birden veriyor: birincisi veritabanınız internete açık, ikincisi eski bir sürüm çalışıyor. Aynı şekilde SSH ve nginx sürümlerini bilinen zafiyet veritabanlarıyla karşılaştırıp güncelleme gerekip gerekmediğini anlarsınız.

    Sürüm tespitini işletim sistemi tahmini ve varsayılan denetim betikleriyle birleştirebilirsiniz. -sC bayrağı NSE'nin güvenli, varsayılan betiklerini çalıştırır; -O işletim sistemini tahmin eder. Pratikte bu ikisini -sV ile birlikte sık kullanırız:

    # Sürüm + varsayılan betikler + OS tahmini, tek komutta kapsamlı denetim
    sudo nmap -sV -sC -O -p- sunucunuz.com
    
    # Sık kullanılan kısayol: -A "agresif" mod, yukarıdakilerin çoğunu tek bayrakta toplar
    sudo nmap -A sunucunuz.com
    

    NSE, Nmap'i basit bir port tarayıcıdan denetim aracına dönüştüren katmandır. Örneğin bir web sunucusunda TLS yapılandırmasını, zayıf şifre paketlerini veya bilinen HTTP zafiyetlerini kontrol eden betikler vardır:

    # HTTPS sunucusunun SSL/TLS yapılandırmasını denetler
    sudo nmap --script ssl-enum-ciphers -p 443 sunucunuz.com
    
    # Yaygın web sunucusu güvenlik başlıklarını ve dizinlerini kontrol eder
    sudo nmap --script http-headers,http-enum -p 80,443 sunucunuz.com
    

    SSL tarafını daha derin sıkılaştırmak istiyorsanız sertifika ve TLS yapılandırması ayrı bir konudur; SSL sertifikası çözümlerimiz ve web uygulaması korumasını üstlenen WAF hizmetimiz bu tarafı tamamlayan doğrudan araçlardır.

    Tarama Sonuçlarını Doğru Yorumlama#

    Nmap'in her port için verdiği durum etiketini doğru okumak, denetimin belki de en önemli becerisidir. Aynı çıktı yanlış yorumlandığında ya gereksiz paniğe ya da tehlikeli bir rahatlığa yol açar. Üç ana durum vardır ve aralarındaki fark, güvenlik duvarınızın çalışıp çalışmadığını anlatır:

    DurumAnlamıYorum
    openBir servis aktif olarak dinliyorBilerek açtıysanız normal; beklemiyorsanız incelenmeli
    closedPort erişilebilir ama dinleyen servis yokSunucu yanıt veriyor, o portta uygulama yok
    filteredBir güvenlik duvarı paketi engelliyorİstenen durum; port dışarıdan görünmüyor

    En sağlıklı denetim sonucu, açmak istemediğiniz her portun filtered görünmesidir. Bu, güvenlik duvarınızın devrede olduğunu ve o portu internete hiç göstermediğini anlatır. Eğer içeriden ss -tulpn ile bir servisin dinlediğini görüyor ama dışarıdan Nmap o portu filtered raporluyorsa, bu doğru yapılandırmadır: servis çalışıyor ama sadece güvenilir kaynaklara açık.

    Tehlikeli senaryo şudur: bir portun open çıkması ve sizin o portu bilerek açmamış olmanız. Böyle bir satır gördüğünüzde hemen sunucuya girip o portu hangi sürecin dinlediğini bulun:

    # 6379 portunu hangi süreç dinliyor?
    sudo ss -tulpn | grep 6379
    sudo lsof -i :6379
    

    filtered durumu bazen yanıltıcı olabilir; ağ üzerinde bir ara güvenlik duvarı da paketleri düşürüyor olabilir. Bu yüzden tarama noktanızı ve sonuçları birlikte değerlendirin. Sunucu güvenliğinin bütününe dair yaklaşımı ve katmanlı savunma mantığını sunucu güvenliği temelleri rehberimizde ayrıntılı ele alıyoruz; port denetimi bu bütünün yalnızca bir parçasıdır.

    Gereksiz Servisleri Kapatma ve Güvenlik Duvarıyla Daraltma#

    Denetimin amacı bir rapor üretmek değil, saldırı yüzeyini küçültmektir. Nmap size beklenmedik bir açık port gösterdiğinde izlenecek yol nettir. Önce o portun ardındaki servise gerçekten ihtiyacınız olup olmadığını sorarsınız. İhtiyaç yoksa servisi tamamen durdurur ve otomatik başlamasını engellersiniz:

    # Servisi durdur
    sudo systemctl stop redis
    
    # Sistem açılışında otomatik başlamasını engelle
    sudo systemctl disable redis
    
    # Tümüyle gereksizse paketi kaldır
    sudo apt purge redis-server
    

    Servise ihtiyacınız var ama yalnızca yerel olarak (örneğin sadece aynı sunucudaki uygulama tarafından) kullanılıyorsa, en doğru çözüm onu internete değil sadece loopback'e bağlamaktır. Böylece servis çalışmaya devam eder ama dışarıya hiç görünmez. MySQL için tipik ayar şöyledir:

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

    Redis için benzer bir satır ve mutlaka bir parola:

    # /etc/redis/redis.conf
    bind 127.0.0.1
    requirepass cok-guclu-bir-parola
    

    Bu değişikliklerden sonra servisi yeniden başlatıp Nmap ile tekrar tarayın; artık ilgili port filtered görünmelidir. Bu "değiştir ve tekrar tara" döngüsü denetimin kalbidir.

    Üçüncü ve tamamlayıcı katman güvenlik duvarıdır. Servisi loopback'e bağlayamadığınız durumlarda (ya da güvenli olmak için her durumda), varsayılan politikayı "her şeyi kapat, sadece gerekeni aç" olarak kurmak en güçlü yaklaşımdır. UFW ile bu şöyle görünür:

    # Gelen her şeyi varsayılan olarak engelle
    sudo ufw default deny incoming
    sudo ufw default allow outgoing
    
    # Sadece gerçekten gereken portları aç
    sudo ufw allow 80/tcp
    sudo ufw allow 443/tcp
    
    # SSH'ı yalnızca kendi IP'nize açmak en güvenlisidir
    sudo ufw allow from 198.51.100.25 to any port 22 proto tcp
    
    sudo ufw enable
    sudo ufw status verbose
    

    Buradaki mantık, açık port listesini "istisna" haline getirmektir: aksi belirtilmedikçe her şey kapalıdır, siz sadece web ve yönetim gibi zorunlu kapıları açarsınız. SSH'ı tüm dünyaya değil sadece kendi IP adresinize açmak, brute-force denemelerinin büyük çoğunluğunu daha ilk pakette keser. Güvenlik duvarı kurallarını sıfırdan kurmayı ve yönetmeyi merak ediyorsanız, konuya özel UFW rehberimiz bu bölümü genişletir. Bu tür sıkılaştırmayı kendiniz yürütmek istemiyorsanız sunucu yönetim hizmetimiz tüm bu denetim ve daraltma sürecini sizin adınıza üstlenir.

    Etik ve Yasal Çerçeve#

    Bu araçların gücü aynı zamanda sorumluluğu da beraberinde getirir. Port taraması teknik olarak bilgi toplamaktan ibarettir, ama izniniz olmayan bir sistemi taramak birçok ülkede olduğu gibi Türkiye'de de hukuki sonuçlar doğurabilir. Sahibi olmadığınız bir sunucuyu, bir bulut sağlayıcının altyapısını veya rastgele IP bloklarını taramak, "sadece merak ettim" savunmasıyla bile ciddi sorunlara yol açabilir. Altın kural basittir: yalnızca sahibi olduğunuz ya da yazılı izniniz bulunan sistemleri tarayın.

    Kendi sunucunuz için bile bazı pratik nezaket kuralları vardır. Bulut ve hosting sağlayıcılarının çoğu, altyapılarında ağ taraması yapmadan önce bilgilendirilmek ister; agresif ve sürekli taramalar, saldırı tespit sistemlerini tetikleyip IP adresinizin geçici olarak engellenmesine neden olabilir. Bu yüzden yoğun taramaları planlı bakım pencerelerinde yapın ve gerekiyorsa sağlayıcınızı önceden bilgilendirin. Clou.TR üzerinde barındırdığınız kendi hizmetlerinizi denetlemek isterseniz destek ekibimizle iletişime geçmeniz yeterlidir.

    Son olarak, denetimi bir kerelik iş olarak değil, düzenli bir alışkanlık olarak görün. Her yeni paket kurulumu yeni bir port açabilir. Aylık ya da her büyük değişiklik sonrası çalıştırılan basit bir Nmap taraması, "acaba yeni bir kapı mı açıldı" sorusuna dakikalar içinde cevap verir. İsterseniz bunu bir betiğe alıp sonuçları önceki taramayla karşılaştırabilirsiniz:

    #!/bin/bash
    # Basit denetim: tam TCP taraması yap, çıktıyı tarihli dosyaya kaydet
    HEDEF="sunucunuz.com"
    TARIH=$(date +%F)
    sudo nmap -sS -sV -p- -oN "denetim-$TARIH.txt" "$HEDEF"
    # Önceki tarama ile farkı görmek için:
    # diff denetim-onceki.txt denetim-$TARIH.txt
    

    Sıkça Sorulan Sorular#

    Nmap taraması sunucuma zarar verir mi veya yavaşlatır mı?#

    Normal koşullarda standart bir Nmap taraması sunucuya zarar vermez; yalnızca portlara paket gönderip yanıtları okur. Ancak -T5 gibi çok agresif zamanlama seçenekleri veya tüm portları çok hızlı tarayan komutlar, zayıf donanımlı ya da yoğun yük altındaki sunucularda geçici olarak kaynak tüketebilir. Üretim sistemlerinde -T3 (varsayılan) ile çalışmak ve taramaları yoğun olmayan saatlerde yapmak güvenli tarafta kalmanızı sağlar. Bir servisin çökme riskini merak ediyorsanız önce test ortamınızda deneyin.

    Kendi sunucumu içeriden mi yoksa dışarıdan mı taramalıyım?#

    İkisi de değerlidir çünkü farklı sorulara cevap verirler, ama gerçek denetim dışarıdan yapılmalıdır. Sunucunun üstünden localhost taramak size sadece hangi servislerin dinlediğini gösterir ve güvenlik duvarı kurallarını atlar; yani "internet beni nasıl görüyor" sorusuna cevap vermez. Bu soruyu ancak yönettiğiniz farklı bir makineden, dış IP üzerinden tarayarak yanıtlarsınız. En sağlam pratik, içeriden ss -tulpn ile dinleyen servisleri, dışarıdan Nmap ile görünen portları listeleyip ikisini karşılaştırmaktır.

    open, closed ve filtered arasındaki fark tam olarak nedir?#

    open, o portta aktif olarak dinleyen bir servis olduğu anlamına gelir ve bilerek açmadıysanız incelemeniz gereken durumdur. closed, portun erişilebilir olduğu ama arkasında dinleyen bir uygulama bulunmadığı anlamına gelir; sunucu yanıt verir fakat o portta bir şey çalışmaz. filtered ise bir güvenlik duvarının paketleri düşürdüğünü ve portun dışarıdan hiç görünmediğini gösterir; denetimde açmak istemediğiniz portlar için görmek istediğiniz ideal durum budur.

    Sadece kapalı görünen portlar için önlem almam gerekir mi?#

    Kapalı görünen bir port genellikle acil bir risk değildir çünkü arkasında dinleyen bir servis yoktur, ancak asıl hedefiniz o portları filtered durumuna getirmek olmalıdır. Aradaki fark şudur: closed port sunucunuzun varlığını ve yanıt verdiğini doğrular, filtered port ise sunucuyu adeta görünmez kılar. Güvenlik duvarında varsayılan politikayı "gelen her şeyi engelle" olarak ayarladığınızda, kullanmadığınız tüm portlar otomatik olarak filtered hale gelir ve saldırganın elindeki bilgi minimuma iner.

    Beklemediğim açık bir port bulursam ne yapmalıyım?#

    Önce panik yapmadan o portun ardındaki servisi tespit edin; sunucuya girip sudo ss -tulpn | grep PORT veya sudo lsof -i :PORT komutlarıyla hangi sürecin dinlediğini bulun. Servise ihtiyacınız yoksa systemctl stop ve systemctl disable ile durdurup kapatın, hatta paketi tamamen kaldırın. İhtiyacınız varsa ama yalnızca yerel kullanım gerekiyorsa servisi 127.0.0.1 adresine bağlayın; internete açık kalması zorunluysa güvenlik duvarında yalnızca güvenilir IP'lere izin verin ve mutlaka güçlü kimlik doğrulaması ekleyin.

    Nmap dışında hangi araçları kullanabilirim?#

    Nmap bu alanda fiili standart olsa da tamamlayıcı araçlar vardır. Sunucunun içinden dinleyen portları görmek için ss ve netstat, süreç eşlemesi için lsof en pratik olanlardır. Web servisleri için NSE betikleri veya ayrı bir TLS denetim aracı derinlik katar. Kod ve komut satırıyla uğraşmadan hızlı bir dış bakış isterseniz ücretsiz online araçlarımıza göz atabilirsiniz; yine de kapsamlı ve tekrarlanabilir bir sunucu denetimi için Nmap'in esnekliğine ihtiyacınız olacaktır.

    Kapanış#

    Açık port denetimi, sunucu güvenliğinin en somut ve en çabuk sonuç veren adımlarından biridir. Nmap ile düzenli tarama yapmak, dışarıdan nasıl göründüğünüzü net biçimde ortaya koyar; beklemediğiniz her açık portu erkenden yakalamanızı ve gereksiz servisleri kapatıp güvenlik duvarıyla daraltarak saldırı yüzeyinizi küçültmenizi sağlar. Unutmayın ki bu bir kerelik değil, sürekli tekrarlanan bir alışkanlıktır: her yeni kurulum ve her yapılandırma değişikliği yeni bir kapı açabilir.

    Bu denetimi kendi başınıza yürütmek yerine güvenli bir zeminde başlamak isterseniz, Clou.TR altyapısı size bu konuda güçlü bir temel sunar. Yönetimini bizim üstlendiğimiz, güvenlik duvarı ve sıkılaştırması hazır gelen VDS ve sanal sunucu çözümlerimize veya tüm bakım ve denetimi sizin adınıza yaptığımız sunucu yönetim hizmetimize göz atın. Web tarafında ek koruma için WAF ve DDoS koruma hizmetlerimiz, uygulama katmanınızı da aynı disiplinle güvence altına alır. Doğru tarama alışkanlığı ve doğru altyapı birleştiğinde, sunucunuzun kapıları yalnızca sizin açtıklarınızdan ibaret kalır.

    GüvenlikDenetim

    Uygulamaya geçmeye hazır mısınız?

    NVMe SSD, ücretsiz SSL ve %99.9 uptime garantisiyle Clou.TR hosting ve sunucu çözümleriyle projenizi hayata geçirin.