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.
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.
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:
sudo apt update
Nikto paketini yükleyin:
sudo apt install nikto -y
Sürüm bilgisini kontrol edin:
nikto -Version
5. Yardım Ekranı
Temel seçenekleri görmek için:
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:
nikto -h http://127.0.0.1
Yerel ağdaki size ait bir test sunucusu için:
nikto -h http://192.168.56.101
8. Belirli Portu Tarama
Web sunucusu standart dışı bir portta çalışıyorsa:
nikto -h 192.168.56.101 -p 8080
9. HTTPS Hedefini Tarama
Kendi HTTPS web sitenizi kontrol etmek için:
nikto -h https://alanadiniz.com
443 portunu açıkça belirtmek için:
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:
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:
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:
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:
nikto -h http://127.0.0.1 -output nikto-raporu.txt
14. HTML Raporu Kaydetme
HTML biçiminde rapor oluşturmak için:
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:
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.
19. Banner Bilgisini Azaltma
Sunucu sürüm bilgisini gizlemek saldırıyı engellemez, ancak gereksiz bilgi sızıntısını azaltır.
Nginx örneği:
server_tokens off;
Yapılandırma sonrası:
sudo nginx -t
sudo systemctl reload nginx
20. Sunucu Loglarını İzleme
Nginx erişim logu:
sudo tail -f /var/log/nginx/access.log
Apache erişim logu:
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.
- Bulgudaki URL veya başlığı inceleyin.
- Kendi tarayıcınız veya curl ile manuel kontrol yapın.
- Sunucu yapılandırmasını kontrol edin.
- İlgili logları inceleyin.
- Gerçek etkisini değerlendirin.
- 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:
curl -I https://alanadiniz.com
Belirli Host header ile yerel test:
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
- Kendi yerel web sunucunuzu başlatın.
- Nikto kurulumunu doğrulayın.
- Temel taramayı başlatın.
- Özel User-Agent kullanın.
- Sonucu HTML raporuna kaydedin.
- Nginx veya Apache loglarını inceleyin.
- Eksik başlıkları curl ile doğrulayın.
- Sunucu yapılandırmasını düzeltin.
- Nikto taramasını yeniden çalıştırın.
- Önceki ve sonraki raporları karşılaştırın.
25. Sık Karşılaşılan Hatalar
nikto komutu bulunamadı
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.