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.
İç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:
# 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
# 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
# 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ü
# 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
# 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ü
# 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
# 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
# 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
# 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
# Şü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
# Şü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
# 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
# Şü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
# /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
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
# 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:
# 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:
- my.rexe.tr üzerinden destek talebi açın
- Olay zamanını ve tespit edilen belirtileri bildirin
- Forensic analiz sonuçlarını paylaşın
- 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.
İlgili Makaleler
SSH Bağlantı Sorunu: Sunucuya Bağlanamıyorum
SSH bağlantı sorunlarını çözme rehberi: Path.net firewall kuralları, Default Block, SSH portu için filtre kuralı oluşturma ve sorun giderme adımları.
RDP Bağlantı Sorunu: Windows Sunucuya Erişilemiyor
RDP bağlantı sorunlarını çözme rehberi: Path.net firewall kuralları, Default Block, RDP portu için filtre kuralı oluşturma ve sorun giderme adımları.
MTR Testi Nasıl Yapılır ve Destek Ekibine Gönderilir
WinMTR ve Linux MTR ile ağ testi yapma, ICMP filtre kuralı oluşturma ve sonuçları destek ekibine gönderme rehberi. Paket kaybı ve gecikme analizi.