1. Nginx Web Sunucusu Nedir?
Nginx, yüksek performanslı, ölçeklenebilir ve açık kaynaklı bir web sunucusudur. HTTP ve ters proxy hizmetleri sağlayan Nginx, statik içerik sunma, yük dengeleme ve güvenlik duvarı işlevleriyle yaygın olarak kullanılmaktadır. Düşük bellek tüketimi ve yüksek eşzamanlı bağlantı desteği ile büyük ölçekli sistemler için idealdir.
2. Nginx Log Kayıtları
Nginx, sunucuya gelen ve sunucudan çıkan tüm HTTP/S isteklerini ve sunucu durumunu log dosyalarında saklar. Bu log kayıtları, performans analizi, hata ayıklama ve güvenlik izleme için kullanılır.
2.1. Nginx Log Türleri
Nginx tarafından üretilen başlıca log türleri şunlardır:
a) Access Log (Erişim Günlüğü)
Bu log, istemcilerin web sunucusuna yaptığı tüm HTTP isteklerini kaydeder. Erişim logları, hangi sayfalara ne zaman erişildiğini, hangi IP adreslerinden istek geldiğini ve hangi tarayıcıların kullanıldığını analiz etmek için kullanılır.
Örnek Access Log Kaydı:
192.168.1.1 - - [21/Mar/2025:14:55:36 +0000] "GET /index.html HTTP/1.1" 200 512 "https://google.com" "Mozilla/5.0 (Windows NT 10.0; Win64)"
Açıklama:
- 192.168.1.1: İstemci IP adresi
- [21/Mar/2025:14:55:36 +0000]: İstek zamanı
- “GET /index.html HTTP/1.1”: HTTP metodu ve istenen kaynak
- 200: HTTP yanıt kodu (başarılı istek)
- 512: Yanıtın bayt cinsinden boyutu
- “https://google.com“: Yönlendiren site (Referer)
- “Mozilla/5.0”: Kullanıcı tarayıcı bilgisi (User-Agent)
b) Error Log (Hata Günlüğü)
Sunucuda meydana gelen hataları kaydeder. Hata logları, sistemin düzgün çalışıp çalışmadığını ve olası hata nedenlerini analiz etmek için kullanılır.
Örnek Error Log Kaydı:
2025/03/21 15:22:10 [error] 12345#0: *56789 open() "/var/www/html/missing.html" failed (2: No such file or directory), client: 192.168.1.10, server: example.com, request: "GET /missing.html HTTP/1.1", host: "example.com"
Açıklama:
- 2025/03/21 15:22:10: Zaman damgası
- [error]: Hata seviyesi
- 12345#0: İşlem ve çalışan sürecin kimliği
- open() failed (2: No such file or directory): Hata mesajı
- client: 192.168.1.10: Hata alan istemcinin IP adresi
- server: example.com: Sunucu adı
- request: “GET /missing.html HTTP/1.1”: İstemcinin yaptığı istek
c) SSL Logları
HTTPS üzerinden yapılan bağlantıların detaylarını kaydeder. Şifreleme algoritmaları ve bağlantı protokolleri hakkında bilgi sağlar.
Örnek SSL Log Kaydı:
2025/03/21 14:55:36 [info] 5678#0: *123 SSL: TLSv1.3, cipher AES256-GCM-SHA384, client: 192.168.1.5, server: example.com
d) Yetkilendirme ve Güvenlik Logları
Web sunucusuna yapılan yetkilendirme girişimlerini kaydeder. Özellikle güvenlik ihlalleri ve yetkisiz erişim girişimleri için önemlidir.
2025/03/21 14:30:10 [warn] 9876#0: *9999 failed login attempt for user admin from 192.168.1.15
3. Nginx Log Yapılandırması
Nginx log formatı log_format ve access_log direktifleri ile yapılandırılabilir.
3.1. Varsayılan Nginx Log Formatları
Varsayılan Access Log Formatı:
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" "$http_user_agent"';
access_log /var/log/nginx/access.log main;
Özel Log Formatı Oluşturma:
log_format custom '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" "$http_user_agent"';
access_log /var/log/nginx/custom.log custom;
4. Nginx Log Analizi
4.1. Komut Satırı ile Log Analizi
En Çok Ziyaret Edilen Sayfaları Görüntüleme:
awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10
En Çok İstek Gönderen IP’ler:
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10
404 Hatalarını Analiz Etme:
grep " 404 " /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr
4.2. Log Analiz Araçları
GoAccess:
sudo apt install goaccess
goaccess /var/log/nginx/access.log --log-format=COMBINED -o report.html
ELK Stack (Elasticsearch, Logstash, Kibana):
sudo apt install elasticsearch logstash kibana
5. Nginx Logları ile Güvenlik İzleme
DDoS Saldırılarını Tespit Etme:
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -20
Brute Force Saldırılarını Görüntüleme:
grep "POST /wp-login.php" /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -10
Sonuç
Nginx web sunucusu logları, performans ve güvenlik açısından kritik bir kaynaktır. Doğru analiz edildiğinde, olası tehditleri tespit etmek, trafik akışını incelemek ve sistem sorunlarını belirlemek için kullanılabilir. Log yönetimi ve analizi, sistem güvenliği ve sağlıklı çalışması için düzenli olarak yapılmalıdır.