Ana içeriğe geç
Kategoriye Dön

Sunucu Hacklendi: Acil Müdahale ve Kurtarma

Sunucunuz hacklendiğinde yapılması gereken acil müdahale adımları: hack tespiti, izolasyon, forensic analiz ve temizleme rehberi.

Okuma süresi: 18 dk Sorun Giderme
hackgüvenlikforensicizolasyontemizlemekurtarmaacil müdahale

İçindekiler

Giriş

Sunucunuzun hacklendiğini fark etmek stresli bir durumdur, ancak doğru adımları izleyerek hasarı minimize edebilir ve sisteminizi kurtarabilirsiniz. Bu rehberde, hack tespitinden temizleme ve güvenlik sertleştirmesine kadar tüm süreçleri detaylı olarak anlatacağız.

Hack Belirtileri

Sunucunuzun hacklendiğini gösteren yaygın belirtiler:

  • Bilinmeyen süreçler veya servisler çalışıyor
  • Anormal CPU/RAM kullanımı (kripto madenciliği)
  • Bilinmeyen kullanıcı hesapları oluşturulmuş
  • SSH authorized_keys dosyasında bilinmeyen anahtarlar
  • Crontab'da bilinmeyen görevler
  • Değiştirilmiş sistem dosyaları
  • Anormal ağ trafiği (outbound)
  • Web sitesinde defacement veya yönlendirme
  • Spam e-posta gönderimi

Adım 1: Panik Yapmayın ve Belgelendirin

İlk ve en önemli adım sakin kalmak ve her şeyi belgelendirmektir:

hljs bash
# Mevcut durumu kaydet
date > /tmp/incident_$(date +%Y%m%d_%H%M%S).log
who >> /tmp/incident_*.log
w >> /tmp/incident_*.log
last -20 >> /tmp/incident_*.log
ps auxf >> /tmp/incident_*.log
netstat -tlnp >> /tmp/incident_*.log
ss -tlnp >> /tmp/incident_*.log

Sunucuyu hemen kapatmayın veya yeniden başlatmayın! Forensic kanıtlar kaybolabilir. Önce mevcut durumu belgelendirin.

Adım 2: İzolasyon

Saldırganın daha fazla hasar vermesini önlemek için sunucuyu izole edin:

Ağ İzolasyonu

hljs bash
# Tüm giden bağlantıları engelle (SSH hariç)
sudo iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A OUTPUT -j DROP

# Veya REXE Path Panel'den tüm kuralları kaldırın
# Bu, sunucuya sadece VNC/IPMI ile erişmenizi sağlar

Aktif Oturumları Sonlandırma

hljs bash
# Aktif SSH oturumlarını kontrol et
who
w

# Şüpheli oturumları sonlandır
sudo pkill -u şüpheli_kullanıcı

# Tüm SSH oturumlarını sonlandır (kendi oturumunuz hariç)
sudo pkill -9 -u root sshd

Adım 3: Forensic Analiz

Kullanıcı Hesapları Kontrolü

hljs bash
# Tüm kullanıcıları listele
cat /etc/passwd | grep -v nologin | grep -v false

# UID 0 (root yetkili) kullanıcıları kontrol et
awk -F: '($3 == 0) {print}' /etc/passwd

# Son oluşturulan kullanıcıları kontrol et
ls -lt /home/

# Sudo yetkili kullanıcılar
grep -v '^#' /etc/sudoers
ls -la /etc/sudoers.d/

# SSH authorized_keys kontrolü
for user_home in /home/*; do
    if [ -f "$user_home/.ssh/authorized_keys" ]; then
        echo "=== $user_home ==="
        cat "$user_home/.ssh/authorized_keys"
    fi
done
cat /root/.ssh/authorized_keys

Süreç Analizi

hljs bash
# Tüm çalışan süreçleri ağaç yapısında göster
ps auxf

# Şüpheli süreçleri ara
ps aux | grep -E '(mine|xmr|crypto|kinsing|kdevtmpfsi)'

# Yüksek CPU kullanan süreçler
top -b -n 1 | head -20

# Gizli süreçleri kontrol et
ls -la /proc/*/exe 2>/dev/null | grep deleted

# Süreç dosya yollarını kontrol et
ls -la /proc/[0-9]*/exe 2>/dev/null | grep -v '/usr\|/bin\|/sbin\|/lib'

Crontab Kontrolü

hljs bash
# Root crontab
crontab -l

# Tüm kullanıcıların crontab'ları
for user in $(cut -f1 -d: /etc/passwd); do
    crontab -l -u $user 2>/dev/null | grep -v '^#'
done

# Sistem cron dizinleri
ls -la /etc/cron.d/
ls -la /etc/cron.daily/
ls -la /etc/cron.hourly/
cat /etc/crontab

# Systemd timer'ları
systemctl list-timers --all

Ağ Bağlantıları Analizi

hljs bash
# Aktif bağlantıları kontrol et
ss -tanp
netstat -tanp

# Dışarıya bağlantı kuran süreçler
ss -tanp | grep ESTABLISHED | grep -v '127.0.0.1'

# Dinlenen portlar
ss -tlnp

# Şüpheli IP'lere bağlantılar
netstat -an | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -20

Dosya Sistemi Analizi

hljs bash
# Son 24 saatte değiştirilen dosyalar
find / -mtime -1 -type f -not -path '/proc/*' -not -path '/sys/*' 2>/dev/null

# Son 7 günde oluşturulan dosyalar
find / -ctime -7 -type f -not -path '/proc/*' -not -path '/sys/*' 2>/dev/null

# SUID/SGID dosyaları kontrol et
find / -perm -4000 -type f 2>/dev/null
find / -perm -2000 -type f 2>/dev/null

# /tmp ve /var/tmp'de şüpheli dosyalar
ls -la /tmp/
ls -la /var/tmp/
ls -la /dev/shm/

# Gizli dosyalar
find / -name ".*" -type f -not -path '/proc/*' -not -path '/sys/*' 2>/dev/null | head -50

Log Analizi

hljs bash
# SSH giriş denemeleri
grep 'Failed password' /var/log/auth.log | tail -50
grep 'Accepted' /var/log/auth.log | tail -50

# Başarılı SSH girişleri
last -20
lastlog

# Sistem logları
journalctl --since "24 hours ago" | grep -i -E '(error|warning|fail|denied)'

# Web sunucu logları
tail -100 /var/log/nginx/access.log
tail -100 /var/log/apache2/access.log

# Paket yöneticisi logları
cat /var/log/apt/history.log | tail -50
cat /var/log/yum.log | tail -50

Adım 4: Temizleme

Zararlı Süreçleri Durdurma

hljs bash
# Şüpheli süreçleri öldür
sudo kill -9 <PID>

# Kripto madenci süreçlerini bul ve öldür
sudo pkill -9 -f 'xmr\|mine\|crypto\|kinsing'

# Şüpheli servisleri devre dışı bırak
sudo systemctl stop şüpheli_servis
sudo systemctl disable şüpheli_servis

Zararlı Kullanıcıları Kaldırma

hljs bash
# Şüpheli kullanıcıyı kilitle
sudo usermod -L şüpheli_kullanıcı

# Kullanıcıyı sil
sudo userdel -r şüpheli_kullanıcı

# Root şifresini değiştir
sudo passwd root

# Tüm kullanıcı şifrelerini sıfırla
sudo passwd -e kullanıcı_adı

SSH Anahtarlarını Temizleme

hljs bash
# Tüm authorized_keys dosyalarını kontrol et ve temizle
find / -name authorized_keys -exec cat {} \;

# Sadece kendi anahtarınızı bırakın
echo "ssh-rsa SIZIN_ANAHTARINIZ" > /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys

Crontab Temizleme

hljs bash
# Şüpheli cron görevlerini sil
crontab -r  # Tüm crontab'ı sil
crontab -e  # Yeniden oluştur

# Sistem cron dizinlerini temizle
sudo rm -f /etc/cron.d/şüpheli_dosya

Adım 5: Güvenlik Sertleştirmesi

SSH Güvenliği

hljs bash
# /etc/ssh/sshd_config
Port 2222                          # Varsayılan portu değiştir
PermitRootLogin prohibit-password   # Root şifre girişini kapat
PasswordAuthentication no           # Şifre girişini kapat
MaxAuthTries 3                      # Maksimum deneme sayısı
AllowUsers kullanıcı_adı           # Sadece belirli kullanıcılar

# SSH servisini yeniden başlat
sudo systemctl restart sshd

Fail2ban Kurulumu

hljs bash
sudo apt install fail2ban -y

# /etc/fail2ban/jail.local
[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 3600
findtime = 600

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Sistem Güncelleme

hljs bash
# Tüm paketleri güncelle
sudo apt update && sudo apt upgrade -y

# Kernel güncellemesi
sudo apt dist-upgrade -y

# Otomatik güvenlik güncellemeleri
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure -plow unattended-upgrades

Adım 6: Yedekten Geri Yükleme (Gerekirse)

Eğer temizleme yeterli değilse, temiz bir kurulum yapmanız gerekebilir:

hljs bash
# 1. Önemli verileri yedekle
tar -czf /tmp/backup_data.tar.gz /var/www/ /etc/ /home/

# 2. REXE panelden sunucuyu yeniden kurun
# my.rexe.tr > Hizmetler > İşletim Sistemi Yeniden Kurulum

# 3. Temiz kurulum sonrası güvenlik sertleştirmesi yapın
# 4. Yedekten sadece veri dosyalarını geri yükleyin (yapılandırma dosyalarını DEĞİL)

Yedekten geri yükleme yaparken yapılandırma dosyalarını geri yüklemeyin! Saldırgan bu dosyalara arka kapı eklemiş olabilir. Yapılandırmaları sıfırdan oluşturun.

REXE Destek ile İletişim

Ciddi güvenlik ihlallerinde REXE destek ekibiyle iletişime geçin:

  1. my.rexe.tr üzerinden destek talebi açın
  2. Olay zamanını ve tespit edilen belirtileri bildirin
  3. Forensic analiz sonuçlarını paylaşın
  4. Gerekirse sunucu izolasyonu talep edin

Sonuç

Sunucu hack olaylarında hızlı ve sistematik müdahale kritik öneme sahiptir. Belgelendirme, izolasyon, forensic analiz, temizleme ve güvenlik sertleştirmesi adımlarını sırasıyla uygulayın. Gelecekte benzer olayları önlemek için düzenli güvenlik denetimleri yapın, güncellemeleri takip edin ve güçlü erişim kontrolleri uygulayın.