VPS güvenliği ihmal edildiğinde sunucunuz saatler içinde brute-force saldırılarının hedefi olur. IP’niz internet üzerinde görünür olur olmaz, bot ağları SSH portlarını taramaya başlar. Bu 15 maddelik kontrol listesi minimum güvenlik seviyesini sağlar; her maddeyi eksiksiz uygulamanız 6-9 saat sürer ama size aylarca uykusuz gecelerden koruma sağlar.
1. SSH Key
Parola girişini kapatın. Ed25519 formatında key oluşturun (RSA’dan daha güvenli ve hızlı). Public key sunucuda, private key sadece sizde. Passphrase mutlaka olsun.
2. Root Login Kapalı
PermitRootLogin no. Root için doğrudan giriş yerine sudo kullanan bir kullanıcı.
3. Farklı SSH Port
22 yerine random yüksek port (10000-65000 arası). Otomatik tarama trafiğinin %95’ini eler.
4. Firewall (UFW veya nftables)
Sadece 22 (veya değiştirdiğiniz SSH portu), 80, 443 açık olsun. MySQL, Redis, PostgreSQL vs dış dünyaya kapalı.
5. Fail2Ban
Brute-force denemelerini otomatik banlar. Nginx, SSH, WordPress login için ayrı jail’ler.
6. Otomatik Güvenlik Güncellemeleri
apt install unattended-upgrades
dpkg-reconfigure unattended-upgrades
Kritik güvenlik yamaları otomatik uygulanır.
7. Rootless Docker
Konteynerleri non-root user ile çalıştırın. Dockerfile’da USER app tanımlayın. Rootless Docker daemon opsiyonu da mevcut.
8. Log Rotation
logrotate düzenli çalıştığından emin olun. Disk dolduğunda sunucu servis dışı kalır.
9. Zamanlanmış Yedekleme
Restic, Borg veya cloud snapshot. En az bir kopya offsite. 3-2-1 kuralı: 3 kopya, 2 farklı medya, 1 offsite.
10. Monitoring
Netdata (kolay), Uptime Kuma (uptime), Grafana + Prometheus (kurumsal). Anomali alarmı Slack/Telegram’a düşsün.
11. Rate Limiting
Nginx limit_req ile brute-force ve DoS önleyin. Login endpoint’lerine 5 req/dakika kısıtı.
12. Cloudflare
Site trafiğini WAF ile filtreleyin. Bot Fight Mode + Rate Limit + Custom Rules. Origin IP’yi asla açığa çıkarmayın.
13. Az Servis (Minimum Attack Surface)
Kullanılmayan tüm servisleri kapatın: systemctl disable. Dinlenen portları düzenli denetleyin: ss -tulnp.
14. Kritik Portları Dinle
MySQL, Redis, PostgreSQL, MongoDB dış dünyaya açık olmasın. bind-address 127.0.0.1 veya Docker network.
15. Aylık Bakım Planı
- OS ve paket güncellemeleri.
- SSL sertifika süresi kontrol.
- Fail2Ban log inceleme.
- Kullanılmayan kullanıcı ve SSH key temizliği.
- Yedekleme restore testi.
- Aylık pen-test (küçük hedefli).
Bonus: Güvenlik Tarayıcıları
- Lynis - genel sistem denetimi.
- OpenVAS - açık port ve zafiyet taraması.
- Rkhunter - rootkit tespiti.
Sıkça Sorulan Sorular
Cloudflare tek başına yeterli mi?
Hayır. Origin sunucusunda da temel güvenlik önlemleri şart.
2FA nasıl kurulur?
Google Authenticator PAM modülü ile SSH’a ikinci faktör eklenebilir.
Sonuç
Bu 15 kontrol, sunucunuzu popüler saldırıların %95’inden korur. Güvenlik tek seferlik değil sürekli bir süreçtir. Her ay 30 dakikalık bakım rutini bulunmayan bir hafta sonu felaketinden çok daha ucuza gelir.