Web Sunucusu Güvenliği

Nikto Kullanımı

Nikto ile yalnızca kendi web sunucularınızda temel güvenlik kontrolleri yapın, yanlış yapılandırmaları tespit edin ve sonuçları savunma odaklı yorumlayın.

17 Temmuz 202618 dk okumaBaşlangıç–Orta Seviye

1. Nikto Nedir?

Nikto, web sunucularını bilinen yanlış yapılandırmalar, riskli dosyalar, varsayılan içerikler ve bazı güvenlik başlıkları açısından kontrol eden açık kaynaklı bir tarama aracıdır.

Özellikle web sunucusu sertleştirme çalışmalarında hızlı bir ilk kontrol aracı olarak kullanılabilir.

Yetkili kullanım

Nikto'yu yalnızca size ait web sunucularında veya açıkça izin verilmiş laboratuvar ortamlarında kullanın.

2. Nikto Neleri Kontrol Eder?

  • Web sunucusu banner bilgileri
  • Eksik güvenlik başlıkları
  • Varsayılan dosya ve dizinler
  • Riskli HTTP yöntemleri
  • Eski sunucu sürümleri
  • Yaygın yanlış yapılandırmalar
  • Potansiyel olarak hassas dosya yolları

Nikto bir bulgu gösterdiğinde sonuç mutlaka manuel olarak doğrulanmalıdır.

3. Nikto'nun Sınırları

Durum Açıklama
Yanlış pozitif Bulgu var gibi görünebilir ancak gerçek risk olmayabilir.
Güncellik İmza veritabanı güncel değilse bazı kontroller eksik kalabilir.
Uygulama mantığı Yetkilendirme ve iş mantığı açıklarını kapsamlı test etmez.
Gürültü Çok sayıda HTTP isteği üretebilir.
WAF etkisi WAF bazı istekleri engelleyebilir veya sonucu değiştirebilir.

4. Kali Linux'ta Nikto Kurulumu

Paket listesini güncelleyin:

bash
sudo apt update

Nikto paketini yükleyin:

bash
sudo apt install nikto -y

Sürüm bilgisini kontrol edin:

bash
nikto -Version

5. Yardım Ekranı

Temel seçenekleri görmek için:

bash
nikto -Help

6. Güvenli Laboratuvar Hazırlığı

  • Yalnızca kendi test web sunucunuzu kullanın.
  • Mümkünse Host-only veya Internal Network kullanın.
  • Tarama öncesinde snapshot veya yedek alın.
  • Sunucu loglarını açık tutun.
  • Gerçek kullanıcı verisi içermeyen test uygulaması kullanın.
  • Tarama süresini ve kapsamını belirleyin.

7. Temel Web Sunucusu Taraması

Yerel laboratuvar sunucusunu taramak için:

bash
nikto -h http://127.0.0.1

Yerel ağdaki size ait bir test sunucusu için:

bash
nikto -h http://192.168.56.101

8. Belirli Portu Tarama

Web sunucusu standart dışı bir portta çalışıyorsa:

bash
nikto -h 192.168.56.101 -p 8080

9. HTTPS Hedefini Tarama

Kendi HTTPS web sitenizi kontrol etmek için:

bash
nikto -h https://alanadiniz.com

443 portunu açıkça belirtmek için:

bash
nikto -h alanadiniz.com -p 443 -ssl

10. Host Header Belirtme

Bir IP üzerinde birden fazla sanal web sitesi bulunuyorsa kendi alan adınızı Host header olarak belirtebilirsiniz:

bash
nikto -h 192.168.56.101 -vhost lab.example.local

11. Zaman Aşımı Ayarı

Yavaş laboratuvar sunucularında zaman aşımı süresini belirlemek için:

bash
nikto -h http://127.0.0.1 -timeout 10

12. User-Agent Belirtme

Laboratuvar loglarında tarama trafiğini kolay tanımak için özel User-Agent kullanabilirsiniz:

bash
nikto -h http://127.0.0.1 -useragent "Kemal-Lab-Nikto"

Bu sayede Nginx veya Apache loglarında tarama istekleri daha kolay ayrıştırılabilir.

13. Metin Raporu Kaydetme

Tarama sonucunu metin dosyasına kaydetmek için:

bash
nikto -h http://127.0.0.1 -output nikto-raporu.txt

14. HTML Raporu Kaydetme

HTML biçiminde rapor oluşturmak için:

bash
nikto -h http://127.0.0.1 -Format html -output nikto-raporu.html

15. CSV Raporu Kaydetme

Sonuçları tablo şeklinde işlemek için CSV formatı kullanılabilir:

bash
nikto -h http://127.0.0.1 -Format csv -output nikto-raporu.csv

16. Sonuçları Yorumlama

Bulgu türü Yorum
Server banner Web sunucusu ürün veya sürüm bilgisi sızdırıyor olabilir.
Missing header Güvenlik başlığı eksik olabilir.
Allowed methods Gereksiz HTTP yöntemleri açık olabilir.
Default file Varsayılan veya örnek dosyalar erişilebilir olabilir.
Outdated version Sunucu sürümü eski görünebilir; manuel doğrulama gerekir.

17. Güvenlik Başlıkları

Nikto bazı eksik güvenlik başlıklarını raporlayabilir.

Başlık Amacı
Content-Security-Policy İzin verilen içerik kaynaklarını sınırlar.
Strict-Transport-Security HTTPS kullanımını zorunlu hale getirir.
X-Content-Type-Options MIME türü tahminini engeller.
Referrer-Policy Referans bilgisini sınırlar.
Permissions-Policy Tarayıcı özelliklerini sınırlar.

18. HTTP Yöntemlerini Değerlendirme

Web sunucusunda gereksiz yöntemler açık olmamalıdır.

Yaygın yöntemler:

  • GET
  • POST
  • HEAD
  • OPTIONS
  • PUT
  • DELETE
  • TRACE

Uygulama ihtiyaç duymuyorsa PUT, DELETE veya TRACE gibi yöntemler devre dışı bırakılmalıdır.

20. Sunucu Loglarını İzleme

Nginx erişim logu:

bash
sudo tail -f /var/log/nginx/access.log

Apache erişim logu:

bash
sudo tail -f /var/log/apache2/access.log

Özel User-Agent kullanıldıysa tarama isteklerini loglarda kolayca bulabilirsiniz.

21. Bulguları Manuel Doğrulama

Bir Nikto bulgusu doğrudan açık olarak kabul edilmemelidir.

  1. Bulgudaki URL veya başlığı inceleyin.
  2. Kendi tarayıcınız veya curl ile manuel kontrol yapın.
  3. Sunucu yapılandırmasını kontrol edin.
  4. İlgili logları inceleyin.
  5. Gerçek etkisini değerlendirin.
  6. Yanlış pozitifse rapora not düşün.

22. curl ile Güvenli Doğrulama

Kendi web sitenizin HTTP başlıklarını kontrol etmek için:

bash
curl -I https://alanadiniz.com

Belirli Host header ile yerel test:

bash
curl -I -H "Host: lab.example.local" http://192.168.56.101

23. Web Sunucusu Sertleştirme

  • Gereksiz portları kapatın.
  • Sunucu ve uygulama paketlerini güncel tutun.
  • Varsayılan dosya ve sayfaları kaldırın.
  • Gereksiz HTTP yöntemlerini kapatın.
  • HTTPS kullanımını zorunlu hale getirin.
  • Güvenlik başlıklarını ekleyin.
  • Dosya ve dizin izinlerini sınırlandırın.
  • Yönetim panellerini IP veya VPN ile sınırlandırın.
  • Log ve alarm mekanizması kurun.

24. Uygulamalı Güvenli Laboratuvar

  1. Kendi yerel web sunucunuzu başlatın.
  2. Nikto kurulumunu doğrulayın.
  3. Temel taramayı başlatın.
  4. Özel User-Agent kullanın.
  5. Sonucu HTML raporuna kaydedin.
  6. Nginx veya Apache loglarını inceleyin.
  7. Eksik başlıkları curl ile doğrulayın.
  8. Sunucu yapılandırmasını düzeltin.
  9. Nikto taramasını yeniden çalıştırın.
  10. Önceki ve sonraki raporları karşılaştırın.

25. Sık Karşılaşılan Hatalar

nikto komutu bulunamadı

bash
sudo apt update
sudo apt install nikto -y

Connection refused

Web sunucusunun çalıştığını, doğru IP ve portu kullandığınızı kontrol edin.

SSL connection error

HTTPS portunu, sertifika yapılandırmasını ve -ssl seçeneğini kontrol edin.

Çok fazla yanlış pozitif

Her bulguyu curl, tarayıcı, sunucu yapılandırması ve loglarla manuel doğrulayın.

26. Komut Özeti

İşlem Komut
Temel tarama nikto -h http://127.0.0.1
Belirli port nikto -h 192.168.56.101 -p 8080
HTTPS tarama nikto -h alanadiniz.com -p 443 -ssl
Virtual host -vhost lab.example.local
HTML rapor -Format html -output rapor.html
Özel User-Agent -useragent "Kemal-Lab-Nikto"

27. Sonuç

Bu dokümanda Nikto kurulumu, temel web sunucusu taraması, port ve HTTPS seçenekleri, virtual host kullanımı, raporlama, bulgu yorumlama ve sunucu sertleştirme adımları ele alındı.

Nikto en iyi şekilde, kendi web sunucunuzu hızlıca kontrol etmek ve ardından bulguları manuel olarak doğrulamak için kullanılmalıdır.

© 2026 Kemal Tokmak — Gerçek Deneyimler, Gerçek Dokümantasyon