Ağ Araçları
TEKNİK REHBER AĞ ARAÇLARI PORT TARAMA 2026

nmap
ağ keşfi ve port tarama.

Ağda ne var? Hangi portlar açık? Hangi servisler çalışıyor? Hangi OS? Hepsini nmap söyler.

00 nmap nedir — raw socket ve root yetkisi

nmap (Network Mapper), ağ keşfi ve güvenlik denetimi için kullanılan açık kaynaklı bir araçtır. 1997'den bu yana aktif olarak geliştirilmektedir.

nmap'in gücünün büyük bölümü raw socket kullanımından gelir. Raw socket sayesinde nmap, OS'un TCP/IP yığınını bypass ederek kendi paketlerini oluşturur ve gönderir. Bu, SYN taraması gibi half-open bağlantıları mümkün kılar. Raw socket için root (ya da CAP_NET_RAW) yetkisi gerekir.

  nmap  →  raw socket  →  kernel NIC  →  hedef
            ↑
      kendi TCP/IP paketlerini oluşturur
      OS'un connect() çağrısını kullanmaz
    

Kurulum

bash
apt-get install nmap
nmap --version
# Nmap version 7.95 ( https://nmap.org )
ETİK KULLANIM

nmap yalnızca izniniz olan sistemlerde kullanın. Üçüncü taraf sistemleri izinsiz taramak yasadışı ve etik dışıdır. Lab ortamı, kendi ağınız veya açık izin verilen sistemler dışında kullanmayın.

01 Host keşfi — ping sweep ve ARP scan

Ağda hangi hostlar aktif? Port taramadan önce bu soruyu yanıtla.

-sn
Ping sweep — port taraması yapma, sadece host keşfi. Eski adı: -sP.
-PE
ICMP echo request ile ping.
-PP
ICMP timestamp ping.
-PS port
TCP SYN ping — belirtilen porta SYN gönder, yanıt varsa host aktif.
-PA port
TCP ACK ping — firewall bypass için.
-PU port
UDP ping.
-Pn
Ping atlama — tüm hostları aktif kabul et. ICMP engellenmiş sistemler için.
-PR
ARP ping — yerel ağda en hızlı ve güvenilir yöntem.
bash
# 192.168.1.0/24 ağında aktif hostları bul
sudo nmap -sn 192.168.1.0/24

# ARP ile tarama (yerel ağ, daha hızlı ve güvenilir)
sudo nmap -sn -PR 192.168.1.0/24

# Ping atlayarak sadece portları tara (ICMP engelliyse)
sudo nmap -Pn 192.168.1.100

# Aralık belirtme yöntemleri
sudo nmap -sn 192.168.1.1-50          # 1'den 50'ye
sudo nmap -sn 192.168.1.1,10,20,100   # belirli IP'ler
sudo nmap -sn 10.0.0.0/8              # tüm class A (16M+ host)

# Hostname listesinden oku
sudo nmap -sn -iL targets.txt

# Çıktıyı sadece IP'ler olarak al
sudo nmap -sn 192.168.1.0/24 | grep 'Nmap scan report' | awk '{print $5}'

02 Port tarama türleri

nmap birçok farklı tarama tekniği sunar. Her birinin farklı trade-off'ları var.

FlagTürRootHızTespit riski
-sSSYN (half-open)EvetHızlıOrta
-sTTCP connectHayırYavaşYüksek
-sUUDPEvetÇok yavaşDüşük
-sAACKEvetHızlıOrta
-sNNULLEvetHızlıDüşük
-sFFINEvetHızlıDüşük
-sXXmasEvetHızlıDüşük

-sS: SYN taraması (varsayılan)

bash
# SYN taraması — en yaygın kullanım
# SYN gönderir, SYN-ACK gelirse port OPEN, RST gelirse CLOSED
sudo nmap -sS 192.168.1.100

# Belirli port aralığı
sudo nmap -sS -p 1-1000 192.168.1.100
sudo nmap -sS -p 80,443,8080,8443 192.168.1.100

# En yaygın 1000 port (varsayılan)
sudo nmap 192.168.1.100

# Tüm 65535 port
sudo nmap -p- 192.168.1.100

# En yaygın 100 port (hızlı tarama)
sudo nmap -F 192.168.1.100

-sU: UDP taraması

bash
# UDP taraması — DNS (53), SNMP (161), DHCP (67/68) bulmak için
# UDP'de "kapalı port" ICMP port unreachable döner, açık port yanıt vermez
sudo nmap -sU -p 53,67,68,123,161,500 192.168.1.100

# TCP + UDP birlikte
sudo nmap -sSU -p T:22,80,443,U:53,161 192.168.1.100

-sA: ACK taraması (firewall tespiti)

bash
# ACK taraması port açık/kapalı söylemez
# UNFILTERED = RST geldi (firewall yok)
# FILTERED = yanıt yok (firewall DROP yapıyor)
sudo nmap -sA -p 80,443 192.168.1.100

Port durumları

open
Port açık — servis kabul ediyor.
closed
Port kapalı — RST geldi, host aktif ama servis yok.
filtered
Yanıt yok — firewall veya paket filtresi engellemiş olabilir.
unfiltered
Erişilebilir ama açık mı kapalı mı belirlenemiyor (ACK scan sonucu).
open|filtered
Açık ya da filtrelenmiş — UDP/FIN/NULL/Xmas sonucu.

03 Servis ve versiyon tespiti

Port açık — ama hangi servis ve hangi versiyon çalışıyor?

-sV
Versiyon tespiti — açık portlara probe gönderir, banner ve protokol yanıtını analiz eder.
--version-intensity 0-9
Probe yoğunluğu. 0 = en hızlı (az doğru), 9 = en yavaş (en doğru). Varsayılan 7.
--version-light
Intensity 2 — hızlı tarama için.
--version-all
Intensity 9 — en kapsamlı.
-sC
Default scriptleri çalıştır — servis bilgisini artırır.
-A
Agresif mod: -sV + -sC + -O + traceroute. Her şeyi bir arada.
bash
# Versiyon tespiti
sudo nmap -sV 192.168.1.100

# Default scriptler + versiyon
sudo nmap -sC -sV 192.168.1.100

# Agresif mod (her şey)
sudo nmap -A 192.168.1.100

# Örnek çıktı:
# PORT   STATE SERVICE VERSION
# 22/tcp open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.6
# 80/tcp open  http    nginx 1.24.0
# 443/tcp open ssl/http nginx 1.24.0

04 OS tespiti — TCP fingerprint

Her OS'un TCP/IP yığını biraz farklı davranır. Bu farklılıkları ölçerek OS tahmin edilir.

nmap, OS tespiti için şu değerleri analiz eder: TCP ISN (Initial Sequence Number) üretimi, TCP options sıralaması (window scale, SACK, timestamps), IP TTL başlangıç değerleri, ICMP yanıt özellikleri ve TCP window boyutları.

bash
# OS tespiti (root gerekir)
sudo nmap -O 192.168.1.100

# OS + versiyon + scriptler
sudo nmap -O -sV 192.168.1.100

# Agresif OS tahmini (emin değilse de tahmin et)
sudo nmap -O --osscan-guess 192.168.1.100

# TTL değerini elle okuma (hızlı kaba tahmin)
ping -c 1 192.168.1.100 | grep ttl
# TTL~64 → Linux/Unix  TTL~128 → Windows  TTL~255 → Cisco/embedded
OS TESPİTİ DOĞRULUĞU

OS tespiti %100 kesin değildir. nmap olasılık yüzdesi verir: OS details: Linux 4.15 - 5.8 (96%). Özellikle embedded sistemlerde özelleştirilmiş kernel veya network stack olduğunda tespit yanılabilir. Sonuçları doğrulamak için servis versiyonlarını da kullan.

05 Nmap Script Engine (NSE)

NSE, nmap'e Lua tabanlı scripting altyapısı ekler. 600'den fazla hazır script gelir.

--script default
Varsayılan scriptleri çalıştır (-sC ile aynı). Güvenli, hızlı, geniş kapsam.
--script script_adi
Belirli bir script çalıştır.
--script "kategori"
Kategorideki tüm scriptler: auth, broadcast, default, discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version, vuln.
--script-args
Script'e argüman geçir: --script-args user=admin,pass=secret
bash
# Default scriptler
sudo nmap -sC 192.168.1.100

# HTTP başlık bilgisi
sudo nmap -p 80 --script http-headers 192.168.1.100

# HTTP başlıktan title al
sudo nmap -p 80,443 --script http-title 192.168.1.0/24

# SSH hostkey bilgisi
sudo nmap -p 22 --script ssh-hostkey 192.168.1.100

# SSL sertifika bilgisi
sudo nmap -p 443 --script ssl-cert 192.168.1.100

# SNMP bilgisi al (embedded cihazlarda sık görülür)
sudo nmap -sU -p 161 --script snmp-info 192.168.1.100

# Vuln kategorisi — bilinen güvenlik açıklarını tara
# (Dikkat: intrusive olabilir, test ortamında kullan)
sudo nmap -p 80,443 --script vuln 192.168.1.100

# Script listesini gör
ls /usr/share/nmap/scripts/ | grep '^http'
nmap --script-help http-headers

06 Çıktı formatları

nmap sonuçlarını raporlamak, arşivlemek ve sonradan analiz etmek için çıktı formatını seç.

-oN dosya
Normal (insan okunabilir) format. Konsolda gördüğünün aynısı.
-oX dosya
XML format. Otomatik işleme ve diğer araçlarla entegrasyon için.
-oG dosya
Grepable format — her host tek satırda. grep, awk ile kolay işleme.
-oA önek
Tüm formatları aynı anda yaz: önek.nmap, önek.xml, önek.gnmap
-v / -vv
Verbose — tarama ilerlerken açık portları gerçek zamanlı göster.
--reason
Port durumunun neden belirlendiğini göster: "syn-ack", "rst", "no-response"
bash
# Tüm formatları kaydet
sudo nmap -sV -oA scan_2026_01 192.168.1.0/24

# XML'den açık portları çek
grep 'state="open"' scan_2026_01.xml | grep -oP 'portid="\K[0-9]+'

# Grepable format ile IP:port çiftlerini çıkar
grep '/open/' scan_2026_01.gnmap | awk '{print $2}'

# Verbose ile gerçek zamanlı izle
sudo nmap -sS -v 192.168.1.0/24

# Neden bu durum? --reason
sudo nmap -sS --reason 192.168.1.100
# PORT   STATE SERVICE REASON
# 22/tcp open  ssh     syn-ack ttl 64
# 80/tcp closed http    rst ttl 64

07 Pratik: embedded ağ audit

Fabrika çıkışı IoT cihazları genellikle gereksiz portlar açık bırakır. Üretime almadan önce ağ audit yap.

Adım 1: Yerel ağdaki tüm cihazları keşfet

bash
# ARP ile hızlı host keşfi
sudo nmap -sn -PR 192.168.10.0/24

# Sonuçlar:
# Nmap scan report for 192.168.10.10 (IoT_Gateway)
# MAC Address: AA:BB:CC:DD:EE:FF (Espressif Systems)

Adım 2: Her cihazın açık portlarını tara

bash
# SYN taraması + versiyon tespiti
sudo nmap -sS -sV -p- 192.168.10.10 -oA iot_audit

# UDP'de açık portlar (SNMP, mDNS, TFTP genellikle UDP)
sudo nmap -sU --top-ports 100 192.168.10.10

Adım 3: Tehlikeli servisleri kontrol et

bash
# Telnet (23) — şifresiz, kapalı olmalı
sudo nmap -p 23 --script telnet-ntlm-info 192.168.10.10

# FTP (21) — anonim erişim var mı?
sudo nmap -p 21 --script ftp-anon 192.168.10.10

# HTTP default credentials
sudo nmap -p 80,8080 --script http-default-accounts 192.168.10.10

# SNMP community string (public/private)
sudo nmap -sU -p 161 --script snmp-brute 192.168.10.10

Adım 4: Audit raporu oluştur

bash
# Tüm ağı tara ve raporla
sudo nmap -sS -sV -O --script default \
     -oA /tmp/network_audit_$(date +%Y%m%d) \
     192.168.10.0/24

# Açık portları özet olarak listele
grep '/open/' /tmp/network_audit_*.gnmap | \
  awk '{print $2, $3}' | sort
PRODUCTION'DA DİKKAT

UDP taraması ve agresif scriptler (-A, --script vuln) üretim cihazlarını etkisiz hale getirebilir. Önce bir test cihazında dene. Üretim ortamında -T2 (polite timing) veya -T1 (sneaky) ile daha yavaş ve dikkatli tara.