Güvenlik yalnız “virüs var mı?” sorusu değildir. Saldırı yüzeyi, servis sağlığı, firewall, kimlik doğrulama, güncelleme, dosya bütünlüğü, kalıcılık mekanizmaları ve log sürekliliği birlikte değerlendirilmelidir.
Önce sunucunun mevcut durumunu salt okunur komutlarla kaydedin. Ardından kritik bulguları iş etkisine göre sıralayın: kapalı firewall, yetkisiz erişim ve aktif zararlı süreç önce; bakım ve logrotate hataları sonra ele alınır.
Yetkisiz root erişimi, aktif web shell, bilinmeyen outbound bağlantı, kapalı koruma katmanı.
Güncellenmemiş güvenlik paketi, eski executable, başarısız temel servis, yazılabilir yapılandırma.
Gereksiz açık port, zayıf SSH ayarı, başarısız cron veya logrotate, eksik izleme.
Bildirim gürültüsü, kullanılmayan servis, dokümantasyon ve bakım iyileştirmesi.
| Katman | Kontrol | Başarı ölçütü |
|---|---|---|
| İşletim sistemi | Sürüm, kernel, paket ve EOL | Desteklenen sürüm ve güncel güvenlik paketleri |
| Firewall | CSF/nftables/firewalld ve giriş kuralları | Tek, belgeli ve aktif politika |
| SSH | Root, parola, anahtar ve başarısız giriş | Sınırlı erişim, MFA/VPN veya güvenilir IP |
| cPanel | Security Advisor, RPM ve servisler | Kritik/yüksek bulgular kapalı |
| Web | Dosya değişimi, izin, WAF ve malware | Yetkisiz değişiklik ve çalıştırılabilir upload yok |
| Otomasyon | Cron, timer, queue ve backup | Tanımlı sahiplik, çıktı ve hata bildirimi |
| Log | Rotation, bütünlük ve saklama | Kesintisiz, yazma izinleri güvenli kayıt |
Komutların büyük bölümü mevcut durumu okur. dnf check-update paket kurmaz; yalnız güncelleme durumunu bildirir.
date -Is
hostnamectl
uptime
cat /etc/os-release
/usr/local/cpanel/cpanel -V
uname -a
df -h
df -i
free -hsystemctl --failed --no-pager
systemctl list-units --type=service --state=failed --no-pager
find /proc -maxdepth 2 -name exe -type l -ls 2>/dev/null | grep deleted
lsof -nP +L1ss -lntup
systemctl status firewalld nftables iptables --no-pager
csf -l
systemctl status lfd --no-pagersshd -T | grep -E 'permitrootlogin|passwordauthentication|pubkeyauthentication|maxauthtries'
last -ai | head -n 50
lastb -ai | head -n 50
tail -n 300 /var/log/securecrontab -l
find /etc/cron* /var/spool/cron -type f -ls 2>/dev/null
systemctl list-timers --all --no-pager
grep -RnsE 'curl|wget|bash -c|base64|/tmp|/dev/shm' /etc/cron* /var/spool/cron 2>/dev/null/usr/local/cpanel/scripts/check_cpanel_rpms
/usr/local/cpanel/scripts/upcp-running
dnf check-update || true
rpm -Vafind /etc/logrotate.d -maxdepth 1 -type f -printf '%m %u:%g %p\n'
logrotate -d /etc/logrotate.conf
journalctl -u logrotate --since '7 days ago' --no-pagerfind /home -xdev -type f -name '*.php' -mtime -7 -ls
grep -RIlE --include='*.php' 'eval[[:space:]]*\(|base64_decode[[:space:]]*\(|shell_exec[[:space:]]*\(' /home/*/public_html 2>/dev/null
clamscan -ri --infected /home 2>/dev/null/usr/local/cpanel/scripts/check_security_advice_changes
/usr/local/cpanel/scripts/check_cpanel_rpms
tail -n 200 /usr/local/cpanel/logs/login_log
tail -n 200 /usr/local/cpanel/logs/error_log“10 process running outdated executables” uyarısı doğrudan saldırı kanıtı değildir. Önce PID’ler ps, systemctl status PID ve readlink /proc/PID/exe ile eşleştirilir. Güncelleme sonrası silinmiş eski binary kullanılıyorsa ilgili servis kontrollü yeniden başlatılır veya bakım penceresinde reboot planlanır.
“Sunucuda izlenmeyen hizmet var” uyarısında hizmetin gerçekten aktif olması gerekip gerekmediği belirlenir. Kullanılmayan servis yalnız bildirimden gizlenmez; paket ve iş bağımlılığı doğrulandıktan sonra kaldırılır veya belgeli şekilde kapatılır.
CSF ve LFD kapalı mesajı alındığında önce başka bir güvenlik ürününün firewall görevini üstlenip üstlenmediği kontrol edilir. Çakışan iki firewall politikası SSH erişimini kesebilir. Hiçbir koruma aktif değilse SSH portu ve mevcut oturum güvence altına alınarak müdahale edilir.
Logrotate’ın “writable by group or others” diyerek bir yapılandırmayı yok sayması izin problemidir ve düzeltilmelidir. “file size changed while zipping” aktif yazılan logun sıkıştırılmasına işaret eder; delaycompress gibi uygulamaya uygun politika gerekir. Olmayan log dosyası için missingok veya artık kullanılmayan stanza değerlendirilir.
Cron çıktısında DNS hatası, desteklenmeyen ürün veya devre dışı güvenlik servisi görülüyorsa yalnız e-posta susturulmaz. Görevin hâlâ gerekli olup olmadığı, binary kaynağı ve başarılı son çalışma zamanı doğrulanır.
Hayır. Yararlı bir başlangıçtır ancak uygulama dosyaları, cron, dış bağlantılar, logrotate, üçüncü taraf güvenlik ürünleri ve iş yükü bağlamı ayrıca incelenmelidir.
Hayır. Önce portu hangi servis ve iş gereksiniminin kullandığı belirlenir. Gereksiz port kapatılır; gerekli port kaynak IP, kimlik doğrulama ve firewall kurallarıyla sınırlandırılır.
Tek başına hayır. Güncelleme sonrası eski binary kullanan servisleri gösterebilir. PID, executable yolu, paket ve servis eşleştirilmelidir.
Başka doğrulanmış bir firewall ve brute-force koruması yoksa risk yüksektir. Çakışma kontrolü yapmadan körlemesine birden fazla firewall etkinleştirilmemelidir.
Grup veya diğer kullanıcılarca yazılabilen logrotate yapılandırması güvenlik riskidir. Eksik log ve aktif dosya sıkıştırma uyarıları da günlük sürekliliğini bozabilir.
Kritik uyarılar anında; temel güvenlik kontrolü haftalık, geniş kapsamlı denetim aylık ve her büyük güncelleme/değişiklik sonrasında yapılmalıdır.