images (1).webp

Selamlar arkadaşlar,

Geçen gece tam uykuya dalmışım, telefon zır zır çalıyor. “Hayırdır inşallah” dedim, baktım sunucu alarm veriyor. Kalktım PC’nin başına, bir baktım sisteme binlerce başarısız giriş denemesi var. Biri kafayı takmış, brute force ile şifreleri kırmaya çalışıyor. Peki ben bunu nasıl şak diye anladım? Tabii ki loglar sayesinde. O gece harbiden anladım ki bu loglar hayat kurtarıyor, arkadaşlar.

Bayağıdır aklımdaydı aslında böyle bir konu açmak. Tecrübelerimi aktarayım istedim. Hatalarımdan ders çıkarın ki siz de aynı çukura düşmeyin.
:)

Bölüm 1: Log Nedir ve Neden Bu Kadar Önemli ?

Log'un Olayı Ne?
Basitçe anlatayım; log, sistemde kuş uçsa kaydını tutan defterdir. Kim girdi, kaçta girdi, ne halt yedi, hangi dosyayı mıncıkladı... Hepsi burada yazar. Hani dükkanlarda güvenlik kamerası olur ya, onun görüntü değil de metin kaydeden versiyonunu düşünün. İşte log bu babacım.

Neden Önemli?
Bakın bi saldırı yediğinizde iki şeyi yapmanız lazım: 1. Saldırıyı durdur, 2. Mevzuyu anla. Saldırıyı durdurdun diyelim, peki herif nereden girdi? İçeride ne kadar hasar bıraktı? Arkada backdoor bıraktı mı? Bunların cevabı sadece loglarda var.

Log tutmuyorsanız veya düzgün yapılandırmadıysanız, zifiri karanlıkta el yordamıyla yol bulmaya çalışırsınız öyle diyim. Ben bunu çok acı bi şekilde öğrendim zamanında. Bi keresinde "disk doluyor yeaaa" diye gittim logları sildim. İki hafta sonra bi olay patladı, geriye dönük inceleme yapmam lazım ama log yok Elimiz boş döndük tabi. O günden beri log rotasyonu yaparım ama asla toptan silmem. Kulağınıza küpe olsun.


Bölüm 2: Hangi Log Nerede? Temel Konumlar

Şimdi gelelim fasulyenin faydalarına. Linux ve Windows tarafında işler biraz farklı yürüyor.
Linux'ta Kritik Log Dosyaları
Genelde /var/log altında toplanır bunlar. Benim ilk baktıklarım şunlar:
-/var/log/auth.log veya secure: Burası çok öneml. SSH girişleri, sudo kullanımları, patlayan şifre denemeleri burada. Saldırı var mı diye ilk buraya bakarım.

-/var/log/syslog veya messages: Sistemin genel günlüğü. Servis durdu mu, kernel bi şey mi dedi, hepsi burada.

-/var/log/apache2 veya /var/log/nginx: Web sunucusu kullanıyorsanız burası da çok önemli. access.log kimin girdiğini, error.log hataları yazar.

-/var/log/kern.log: Kernel seviyesinde olaylar. Donanım sıkıntısı falan varsa buraya düşer.

-/var/log/cron: Zamanlanmış görevler. Hackerlar genelde kalıcı olmak için buraya cron job eklemeyi sever, gözden kaçırmayın.

Windows Tarafı
Windowsçular bilir, Event Viewer kullanılır. Üç ana başlık var: Security, System ve Application.

Ben genelde PowerShell kullanıyorum log çekmek için, arayüz bazen bayabiliyor. Şu komut hayat kurtarır:
Kod:
Get-EventLog -LogName Security -Newest 100 | Where-Object {$_.EventID -eq 4625}
Bu ne yapıyor? Son 100 güvenlik olayını alıyor, içinden başarısız girişleri süzüp getiriyor.

Bölüm 3: Saldırı Türleri ve Log İmzaları (Nasıl Yakalarız?)

Geldik en heyecanlı kısma. Saldırıları loglardan nasıl tanırız?
1. Brute Force Saldırıları
En sık gördüğüm olay. Elemanlar scripti dayıyor, binlerce parola deniyorlar. Logda şöyle bi manzara olur:
Kod:
Dec 19 03:14:22 server sshd[12345]: Failed password for root from 192.168.1.100 port 54321 ssh2
Dec 19 03:14:23 server sshd[12346]: Failed password for root from 192.168.1.100 port 54322 ssh2
Dec 19 03:14:24 server sshd[12347]: Failed password for root from 192.168.1.100 port 54323 ssh2
Dec 19 03:14:25 server sshd[12348]: Failed password for admin from 192.168.1.100 port 54324 ssh2
Görüyor musunuz? Aynı IP, saniyeler içinde takır takır deniyor. Kullanıcı adları değişiyor falan.
Tespit için şu tek satırlık canavarı kullanıyorum:
Kod:
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -rn | head -20
Bu komut hangi IP kaç kere başarısız deneme yapmış listeler. 100'ü geçen varsa geçmiş olsun, saldırı altındasınız.

2. SQL Injection Denemeleri
Web sunucu loglarında şöyle garip şeyler görürsünüz:
Kod:
192.168.1.50 - - [19/Dec/2025:10:15:33] "GET /page?id=1' OR '1'='1 HTTP/1.1" 200 4523
192.168.1.50 - - [19/Dec/2025:10:15:34] "GET /page?id=1; DROP TABLE users-- HTTP/1.1" 500 1234
URL'de tek tırnaklar, OR 1=1, UNION SELECT falan uçuşuyorsa, biri veritabanınızı deşmeye çalışıyor demektir. 500 hatası dönmesi de genelde injection'ın tuttuğuna veya sistemi zorladığına işarettir.

3. Directory Traversal
Kod:
192.168.1.60 - - [19/Dec/2025:11:20:15] "GET /../../../../etc/passwd HTTP/1.1" 400 0
192.168.1.60 - - [19/Dec/2025:11:20:16] "GET /..%2F..%2F..%2Fetc/passwd HTTP/1.1" 400 0
Şu ../ veya bunun şifreli hali %2F ifadesini görüyorsanız, biri sistem dosyalarına erişmeye çalışıyor. Ben bunu gördüğüm IP'yi direk bloklarım, acımam.

4. Web Shell Yükleme
Kod:
192.168.1.70 - - [19/Dec/2025:14:30:22] "POST /upload.php HTTP/1.1" 200 45
192.168.1.70 - - [19/Dec/2025:14:30:25] "GET /uploads/shell.php?cmd=id HTTP/1.1" 200 123
Bakın burası çokomelli. Önce bi POST isteğiyle dosya yüklüyor, sonra o dosyaya ?cmd= ile parametre geçiyor. Klasik web shell taktiği. Bunu görürseniz sistem büyük ihtimalle pwned olmuştur.

5. Privilege Escalation (Yetki Yükseltme)
Kod:
Dec 19 15:45:12 server sudo: unauthorized_user : user NOT in sudoers ; TTY=pts/0 ; PWD=/home/user ; COMMAND=/bin/bash
Dec 19 15:46:33 server kernel: [UFW BLOCK] IN=eth0 OUT= MAC=... SRC=192.168.1.100 DST=192.168.1.1 PROTO=TCP DPT=22
Yetkisi olmayan bi kullanıcı sudo yapmaya çalışıyorsa veya içeriden garip port taramaları bloklanıyorsa, içeride bi köstebek veya ele geçirilmiş bi hesap olabilir.


Bölüm 4: Gerçek Zamanlı İzleme Araçları (Gözümüz Kulağımız)

Fail2Ban: Otomatik Savunma
Fail2Ban benim en yakın dostumdur valla. Logları izler, hatayı yakalar, IP'yi banlar. Mis.
Kurulum basit:
Kod:
sudo apt install fail2ban
SSH koruması için /etc/fail2ban/jail.local dosyasına şunu yazın yeter:
Kod:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600
Meali şu: 10 dakika içinde 3 kere yanlış giren IP'yi 1 saat banla. Basit ama çok etkili.

GoAccess: Görsel Sevenlere
Web loglarını siyah ekrandan okumak zor geliyorsa GoAccess kurun, terminalde renkli menkli dashboard yapıyor.
Kod:
sudo apt install goaccess
goaccess /var/log/nginx/access.log -c
Bunu çalıştırınca hangi sayfa hit alıyor, kim giriyor, hata kodları falan hepsi önünde.

ELK Stack: Büyük Oyuncular İçin
Elasticsearch, Logstash, Kibana... Eğer sisteminiz büyükse bu şart arkadaşlar. Tüm logları tek yere toplar, grafik çizer, arama yaptırır. Kurulumu biraz kanser edebilir (Logstash configleri falan) ama kurunca dünya var mış diyorsunuz.

Logstash için basit bi config örneği vereyim (auth.log için):
Kod:
input {
  file {
    path => "/var/log/auth.log"
    type => "auth"
  }
}
filter {
  grok {
    match => { "message" => "%{SYSLOGTIMESTAMP:timestamp} %{HOSTNAME:hostname} %{WORD:program}\[%{NUMBER:pid}\]: %{GREEDYDATA:message}" }
  }
}
output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "security-logs-%{+YYYY.MM.dd}"
  }
}

Bölüm 5: Log Analizi İçin Pratik Komutlar (Kopyala-Yapıştır)

Bunlar benim elim kolum, sürekli kullandığım tek satırlık komutlar.
-Son başarısız SSH girişleri:
Kod:
grep "Failed password" /var/log/auth.log | tail -50

-Belirli bi IP ne halt etmiş:
Kod:
grep "192.168.1.100" /var/log/auth.log

-Bugün kim sudo kullanmış:
Kod:
grep "$(date +%b\ %d)" /var/log/auth.log | grep "sudo"

 -Web sunucusunu en çok darlayan IP'ler:
Kod:
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20

 -404 hataları (biri siteyi tarıyor olabilr):
Kod:
awk '$9 == 404 {print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20

-Belli saat aralığına bakmak:
Kod:
awk '$4 >= "[19/Dec/2025:10:00" && $4 <= "[19/Dec/2025:12:00"' /var/log/nginx/access.log

AWK ile biraz şov yapalım:

AWK log analizinde mükemmeldir.
- Saat bazında yoğunluk: awk '{print $4}' /var/log/nginx/access.log | cut -d: -f2 | sort | uniq -c

-Response kodları (200, 404, 500 vs): awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn

-Ortalama boyut: awk '{sum+=$10; count++} END {print sum/count}' /var/log/nginx/access.log


Bölüm 6: Alarm ve Bildirim Sistemi Kurma

Sürekli ekrana bakacak halimiz yok ya, bırakın scriptler baksın.
Basit Bash Script (E-posta için)
Bunu cron'a atın saat başı çalışsın.
Kod:
#!/bin/bash
THRESHOLD=50
LOG_FILE="/var/log/auth.log"
ALERT_EMAIL="[email protected]"

# Son 1 saatteki falsolu girişleri say
FAILED_COUNT=$(grep "Failed password" $LOG_FILE | grep "$(date -d '1 hour ago' '+%b %d %H')" | wc -l)

if [ $FAILED_COUNT -gt $THRESHOLD ]; then
    echo "UYARI: Son 1 saatte $FAILED_COUNT başarısız giriş denemesi!" | mail -s "Güvenlik Uyarısı" $ALERT_EMAIL
fi
Cron ayarı: 0 * * * *
/path/to/security_check.sh

Telegram Botu (Benim Tercihim)
Mail artık yavaş kalıyor ve kullanışsız bana kalırsa, ben Telegram kullanıyorum.
Kod:
#!/bin/bash
BOT_TOKEN="your_bot_token"
CHAT_ID="your_chat_id"
MESSAGE="$1"

curl -s -X POST "https://api.telegram.org/bot$BOT_TOKEN/sendMessage" \
    -d chat_id="$CHAT_ID" \
    -d text="$MESSAGE" \
    -d parse_mode="HTML"
Yukarıdaki alarm scriptinden mail yerine bu fonksiyonu çağırın. Gece telefon titreyince hemen anlıyorum mevzuyu. :D


Bölüm 7: Log Yönetimi Tavsiyeleri

Log Rotasyonu: Loglar diski doldurmasın. /etc/logrotate.d/ altından ayar çekin.
Kod:
/var/log/auth.log {
    weekly
    rotate 52
    compress
    delaycompress
    missingok
    notifempty
    create 640 root adm
}
Bu ayar: Haftalık döndür, 1 yıl (52 hafta) sakla, sıkıştır demek.

Merkezi Loglama: Birden çok sunucu varsa rsyslog ile hepsini tek sunucuya atın.

  • Gönderen: *.* @@logserver.example.com:514
  • Alan: module(load="imtcp") input(type="imtcp" port="514")

Log Bütünlüğü: Hacker girerse ilk iş logları siler. O yüzden logları başka sunucuya atmak şart. Hatta paranoyaksanız hash'ini alın değiştirilmiş mi diye.

Bölüm 8: Gerçek Olay Analizi - Adım Adım

Geçen bi sunucuda CPU %100'e yapışmış inmiyor. Dedim hayırdır coin mi kazıyoruz birader?
Hemen top komutuyla baktım, garip isimli bi process var işlemciyi sömüren.
Adım 1: Durumu anla.
top, ps aux | head -20, netstat -tulpn komutlarını yapıştırdım. Garip bi process var, ismi masum duruyor ama işlemciyi sömürüyor.

Adım 2: Auth loglarına koş.
grep "Accepted" /var/log/auth.log | tail -20 dedim.
Hoppala! Alakasız bi saatte, Çin'den bi IP'den SSH girişi var.

Adım 3: Ne yapmış bu eleman?
grep "username" /var/log/auth.log ve last username ile baktım. Hesap ele geçirilmiş.

Adım 4: Bash history temizlememiş mi?
cat /home/username/.bash_history

Enayiye bak :D, crypto miner indirmiş wget ile.

Adım 5: Nereye bağlanıyor?
netstat -an | grep ESTABLISHED
Dışarıda bi mining havuzuna bağlantı var.

Adım 6: Operasyon.
Process'i kill ettim, hesabı kilitledim, SSH keyleri sıfırladım, firewall'u kapattım. Sonra incelemek için imajını aldım makinenin.


Bölüm 9: Sık Yapılan Hatalar (Yapmayın!)

-Loglara Bakmamak: Kurup bırakmayın. Saldırı olmuş aylar sonra ruhunuz duyuyor. Otomatik alarm kurun bari. :D

-Yetersiz Log: Özellikle web uygulamalarında detaylı logu açın. Olay olunca "keşke açsaydım" demek kurtarmıyor.

-Erken Silmek: "Yerim yok" diye 1 haftalık log tutmayın. En az 90 gün, ideali 1 yıl kalsın.

-Saat Ayarı (NTP): Sunucuların saati tutmazsa logları birleştiremezsiniz. NTP kurun mutlaka. sudo apt install ntp

-Tek Kaynağa Güvenmek: Sadece auth log yetmez. Database, web, app hepsine bakın.


Bölüm 10: Araçlar Listesi

Log Analizi:
●GoAccess (Görselci)
●Graylog (Merkezi yönetim)
●Splunk (Parası olan enterprise abiler için)
●ELK Stack (Güçlü ve açık kaynak)
Saldırı Tespiti:
●Fail2Ban (Olmazsa olmaz)
●OSSEC (Host tabanlı)
●Suricata (Network tabanlı)
●Wazuh (OSSEC'in daha modern hali, tavsiye ederim)
Forensic:
●Autopsy, Volatility, The Sleuth Kit (Bunlar biraz ileri seviye)

Yardımcılar:
●jq (JSON logları okumak için birebir)
●multitail (Aynı anda çok log izlemek için)
●lnav (Renkli menkli log gezgini)


Kopya kağıdı:




Ne Arıyorsun?Nereye BakKomut
SSH brute force/var/log/auth.loggrep "Failed password" auth.log
Başarılı girişler/var/log/auth.loggrep "Accepted" auth.log
Sudo kullanımı/var/log/auth.loggrep "sudo" auth.log
Web taramasıaccess.logawk '$9 == 404' access.log
SQL injectionaccess.loggrep -E "(union...
Sistem hataları/var/log/sysloggrep -i error syslog

Arkadaşlar bu iş "kurdum bitti" işi değil. Savunma sürekli bi süreç.
Başta karışık gelebilir, "bu kadar loga nasıl bakıcam" diyebilirsiniz. Ufak başlayın. Önce auth.log takibi yapın, Fail2Ban kurun. Sonra web loglarına geçersiniz. Yavaş yavaş oturur her şey, saygılar. 🤗


MERAKLISINA TEKNİK VE REFERANS KAYNAKLARLAR:

Arkadaşlar, yukarıda anlattıklarım tecrübe ama bu işin bir de kitabı, okulu var. "Ben bu işi derinlemesine öğreneceğim", "Sektöre gireceğim" diyenler için kaynaklar.

1. Kutsal Kitaplar(Standartlar ve Rehberler)
Bu işin raconunu kesen abiler bunlar. Biraz dili ağırdır ama işin anayasası burasıdır.
  • NIST SP 800-92 (Guide to Computer Security Log Management): Arkadaşlar bu işin İncil'i budur. Amerikan Standartlar Enstitüsü yazmış. "Hangi log ne kadar saklanmalı, ne loglanmalı?" sorusunun cevabı burada. (PDF'i internette ücretsiz, biraz uzun ama.)
  • OWASP Logging Cheat Sheet: Web güvenliği diyince akla OWASP gelir. Geliştirici arkadaşlar için "Uygulamanın neresine log koyayım?" rehberi. Mutlaka bakın.
  • SANS Institute Whitepapers: SANS bu işin Harvard'ı. "Log Analysis" diye aratın, binlerce makale var. Özellikle "Detecting Incidents with Log Analysis" temalı makaleleri efsanedir.
2. Duvara Asmalık Kopya Kağıtları
Ezber yapmaya gerek yok, bunları indirin, masanızın yanına asın.

  • SANS Linux Command Line Cheat Sheet: grep, awk, sed komutlarını unutanlar için hayat kurtarır.
  • SQL Injection Prevention Cheat Sheet: Yukarıda anlattığım SQL açıklarını kapatmak için rehber.
  • Regex101.com: Kaynak değil ama araç. Log parse ederken Regex (Düzenli İfadeler) yazmanız gerekecek ve saç baş yolacaksınız. Bu site yazdığınız regex'i anlık test eder, ne yaptığını açıklar. Benim elim ayağım.

3. Tool'ların Resmi Dökümanları
Hani "Read The F*cking Manual" derler ya, heh işte o. Blog yazıları eskiyebilir ama buralar hep güncel.


  • Fail2Ban Wiki: GitHub sayfalarındaki wiki çok sağlamdır. Hangi jail nasıl yazılır, regex nasıl test edilir her şey var.
  • Elastic (ELK) Documentation: Derya deniz. Kibana'da query (sorgu) nasıl yazılır, Logstash filtreleri nasıl kurulur? Başka yere bakmaya gerek yok.
  • GoAccess Man Page: Terminalde man goaccess yazmak yerine sitesindeki interaktif demoya ve dökümana bakın, çok pratik.
4. Pratik Yapma Siteleri (Eller Kirlensin)
Okumakla olmuyor, klavyeyi eskitmek lazım.

  • Blue Team Labs Online (BTLO): Savunma tarafı (Blue Team) için harika senaryolar var. "Şu log dosyasını indir, saldırganı bul" diyor. Tam dedektifçilik oyunu :D
  • TryHackMe - SOC Level 1 Path: Buradaki eğitim yolu sıfırdan alır, log analizine, SIEM kullanımına kadar götürür. Ücretli kısımları var ama değer.
  • Hack The Box (Sherlocks): Yeni çıktı sayılır. Sadece savunma ve forensic (adli bilişim) üzerine senaryolar. Baya terletir ama çok şey öğretir.
5. Takip Edilesi Topluluklar

  • Reddit r/sysadmin ve r/netsec: Dünya genelindeki sistemciler burada ağlıyor veya çözüm paylaşıyor :) Gündemi takip etmek için birebir.
  • Twitter (X) InfoSec Camiası: Florian Roth (@cyb3rops) abimizi takip edin. Kendisi YARA kurallarının ve log analizinin piri sayılır. Paylaştığı tool'lar efsane.
Arkadaşlar kaynaklar genelde İngilizce. "İngilizcem yok" demeyin, Google Translate eklentisiyle de olsa okuyun. Bu mesleğin dili İngilizce maalesef.

Link veremiyorum (reklam olmasın diye) ama isimleri Google'a yazdığınız an en tepede çıkacaktır hepsi. Kolay gelsin.
 
Son düzenleyen: Moderatör: