Linux sunucum hacklendi mi? Şüpheli kullanıcı, işlem ve bağlantı kontrolü
Sunucuda açıklanamayan yüksek işlemci kullanımı, servis sağlayıcıdan gelen "sunucunuzdan saldırı yapılıyor" e-postası ya da tanımadığın dosyalar... Bunlar bir şeylerin ters gittiğini gösterebilir. Aşağıdaki kontroller durumu anlamana yardım eder.
Önemli: Sunucu gerçekten ele geçirildiyse, saldırgan
ps,ls,netstatgibi komutları değiştirmiş olabilir (rootkit). Bu kontroller "temiz" dese bile kesin güvence vermez. Şüphe güçlüyse en doğru yol aşağıdaki "Ne yapmalı?" bölümüdür.
1. Kim giriş yapmış?
who # şu anda bağlı olanlar
last -n 30 # son başarılı girişler
sudo lastb -n 30 # son başarısız girişler
SSH günlükleri:
# Debian / Ubuntu
sudo grep "Accepted" /var/log/auth.log | tail -n 30
# RHEL / Rocky / Alma
sudo grep "Accepted" /var/log/secure | tail -n 30
# systemd günlüğünden
sudo journalctl -u ssh -u sshd --since "7 days ago" | grep Accepted
Tanımadığın bir IP'den, beklemediğin bir saatte başarılı giriş var mı? Accepted password görüyorsan şifreyle giriş hâlâ açık demektir.
2. Yeni kullanıcı ve SSH anahtarı eklenmiş mi?
awk -F: '$3 == 0 {print $1}' /etc/passwd # UID 0 olan (root yetkili) hesaplar
awk -F: '$7 !~ /(nologin|false)$/ {print $1, $7}' /etc/passwd # kabuk erişimi olan hesaplar
sudo cat /root/.ssh/authorized_keys
sudo find /home -name authorized_keys -exec ls -l {} \; -exec cat {} \;
root dışında UID'si 0 olan bir hesap ya da tanımadığın bir SSH anahtarı ciddi bir işarettir.
3. Ne çalışıyor?
ps auxf --sort=-%cpu | head -n 20
top
Dikkat edilecekler:
- Sürekli yüksek CPU kullanan,
kworker,systemd-xxxgibi sistem adlarını taklit eden ama yolu garip olan işlemler (kripto madenciliği yazılımlarının tipik davranışı). /tmp,/var/tmp,/dev/shmaltından çalışan programlar.
Bir işlemin gerçek dosyasını görmek için:
sudo ls -l /proc/<PID>/exe
Sonuçta (deleted) yazıyorsa program kendini diskten silmiş ama çalışmaya devam ediyordur. Bu çok şüphelidir.
4. Kimlerle konuşuyor?
sudo ss -tupn # kurulu bağlantılar ve sahibi olan işlem
sudo ss -tulpn # dinlenen portlar
Kurmadığın bir servisin dinlediği bir port, ya da yabancı bir IP'nin 3333, 4444, 5555 gibi portlarına sürekli bağlantı (madencilik havuzları ve uzaktan kontrol araçlarında sık görülür) araştırılmalıdır.
5. Kalıcılık: her açılışta ne çalışıyor?
for u in $(cut -d: -f1 /etc/passwd); do sudo crontab -l -u "$u" 2>/dev/null | sed "s/^/$u: /"; done
ls -la /etc/cron.d /etc/cron.daily /etc/cron.hourly
systemctl list-unit-files --type=service --state=enabled
ls -la /etc/systemd/system/
Ayrıca ~/.bashrc, ~/.profile ve /etc/rc.local dosyalarının sonuna eklenmiş komutlara bak.
6. Son değişen dosyalar
sudo find /etc /usr/bin /usr/sbin /tmp /var/tmp /dev/shm -mtime -3 -type f 2>/dev/null
Web sunucusu varsa web kök dizininde son günlerde değişmiş .php dosyaları da önemli bir ipucudur (web shell):
sudo find /var/www -name "*.php" -mtime -7 -type f
rkhunter ve chkrootkit gibi araçlar ek ipucu verebilir ama yanlış alarm da üretirler. Sonuçlarını tek başına kanıt sayma.
Ne yapmalı?
Sunucunun ele geçirildiğinden şüpheleniyorsan:
- Ağdan ayır veya güvenlik duvarında sadece kendi IP'ne izin ver. Sunucuyu kapatma; bellekteki ipuçları kaybolur. Mümkünse sağlayıcının panelinden anlık görüntü (snapshot) al.
- Bütün gizli bilgileri temiz bir cihazdan değiştir: SSH anahtarları, veritabanı şifreleri, API anahtarları,
.envdosyasındaki her şey. - Sunucuyu temizlemeye çalışmak yerine yeniden kur. Saldırganın neleri değiştirdiğini kesin bilemezsin. Yeni bir sunucu kur, uygulamayı kaynak koddan dağıt, veriyi saldırıdan önceki temiz bir yedekten geri yükle.
- Giriş noktasını bul ve kapat: Güncellenmemiş bir eklenti mi, zayıf SSH şifresi mi, açık bırakılmış bir yönetim paneli mi? Bulamazsan aynı şey yeni sunucuda da olur.
- Kişisel veri sızmış olabilirse yasal bildirim yükümlülüklerini (KVKK) değerlendir.
Önlem için forumdaki "Yeni Linux sunucuda ilk güvenlik adımları" rehberi iyi bir başlangıç noktası.