Debian Sunucu Güvenliği Saldırı Yiyen Birinin Uyguladığı 8 Katmanlı Koruma

İlk Debian sunucumu kurduğumda “güvenlik” denilince aklıma sadece bir şifre koymak geliyordu. Sonra sunucuma bir sabah erişemedim biri brute-force ile girmiş ve sunucuyu mining botnet’ine dahil etmişti. CPU yüzde 100 çalışıyordu, elektrik faturası beni aşmıştı. O günden beri Debian sunucu güvenliğini adım adım, katman katman uyguluyorum.
Debian, güvenlik açısından en iyi Linux dağıtımlarından biri. Ama kurulumdan sonra varsayılan ayarlarla bırakırsanız, açık bir kapı gibi. İşte kendi sunucularımda uyguladığım güvenlik kontrol listesi.
Konu İçeriği
1. Sistemi Güncel Tutun
En basit ama en atlanan adım. Eğer sisteminiz güncel değilse, bilinen açıklarla karşı karşıyasınız demektir. Ben bu hatayı bir kez yaptım güncellemeyi erteledim ve 3 gün sonra o açıktan saldırı aldım.
Otomatik güvenlik güncellemelerini açın:
apt install unattended-upgrades
dpkg-reconfigure -plow unattended-upgrades
Bu ayar security güncellemelerini otomatik kurar. Normal güncellemeleri elle yapmaya devam edebilirsiniz ama kritik güvenlik yamaları otomatik gelmeli. Ben her sunucumda ilk kurduğum şey bu.
2. SSH Güvenliği En Kritik Adım
SSH, sunucunuza giriş kapısıdır. Bu kapıyı sağlamlaştırmazsanız, gerisi anlamı yok.

Root Girişini Kapatın
/etc/ssh/sshd_config dosyasında PermitRootLogin no yapın. Root ile doğrudan giriş yapmak en büyük güvenlik zafiyeti. Önce normal kullanıcı ile girin, sonra sudo ile root yetkisi alın.
SSH Key Authentication
Şifre ile giriş yapmayı kapatın, sadece SSH key ile giriş izni verin. Bu, brute-force saldırılarını tamamen etkisiz hale getirir çünkü 2048 bitlik bir key’i tahmin etmek milyarlarca yıl sürer. PasswordAuthentication no satırını sshd_config’a ekleyin.
SSH Portunu Değiştirin
Varsayılan port 22. Tüm bot’lar bu portu tarar. 2222 veya 5022 gibi bir porta taşıyın. Bu basit değişiklik otomatik taramaların yüzde 90’ını engeller. Ama port security by obscurity’dir tek başına yeterli değil, diğer önlemlerle birlikte kullanın.
3. Firewall UFW ile Basit Ama Etkili
UFW (Uncomplicated Firewall) ile sadece gerekli portları açın:
ufw default deny incoming
ufw default allow outgoing
ufw allow 2222/tcp (SSH portunuz)
ufw allow 80/tcp (HTTP)
ufw allow 443/tcp (HTTPS)
ufw enable
Bu kurallar ile sadece web trafiği ve SSH gelir, geri kalan her şey engellenir. Ben her sunucuda bu temel kuralları kullanıyorum. Gereksiz port açık bırakmak davetiye çıkarmaktır.
4. Fail2Ban Otomatik Saldırı Engelleme
Fail2Ban, log dosyalarını izleyip şüpheli aktivite tespit ettiğinde otomatik IP engelleme yapar. SSH için 3 başarısız deneme = 24 saat ban kuralı uyguluyorum:
apt install fail2ban
/etc/fail2ban/jail.local dosyasında:
[sshd]
enabled = true
maxretry = 3
bantime = 86400
Kurulumdan sonra sunucumun loglarını kontrol ettim ilk 24 saatte 200’den fazla IP banlanmıştı. Hepsi bot’tu. Fail2Ban olmasaydı bu bot’lar günlerce şifre denemeye devam edecekti.

5. Kullanıcı ve Yetki Yönetimi
Sunucuda sadece gerekli kullanıcılar olsun. Her kullanıcı için ayrı hesap, minimum yetki. sudo grubuna sadece güvenilir kişileri ekleyin. Kimin ne yaptığını görmek için /var/log/auth.log dosyasını düzenli kontrol edin.
Ayrıca chmod ve chown ile dosya izinlerini doğru ayarlayın. Web dosyaları www-data kullanıcısına ait olmalı, configuration dosyaları sadece root tarafından okunabilir olmalı.
6. Gereksiz Servisleri Kapatın
Sunucuda çalışmayan servis saldırı yüzü oluşturmaz. ss -tulpn komutuyla dinlenen portları kontrol edin ve tanımadığınız servisleri araştırın. Kullanmadığınız her servisi kapatın. Ben bir sunucuda Bluetooth servisinin çalıştığını gördüm sunucuda Bluetooth ne işi var? Kapattım.
7. Monitoring ve Alerting
Sorunu erken fark etmek çözmenin yarısıdır. Ben şu araçları kullanıyorum:
- Prometheus + Grafana: CPU, RAM, disk, network metriklerini gerçek zamanlı izleme. Dashboard ile her şey tek ekranda.
- Uptime Robot: Site erişilebilirliğini 5 dakikada bir kontrol. Down olursa anında Telegram bildirimi.
- Logwatch: Günlük log özeti e-posta ile gelir. Anormallikleri hemen fark edersiniz.
- Lynis: Güvenlik audit aracı. Çalıştırınca “şu ayarınız zayıf, şunu düzeltin” diye rapor verir. Ayda bir çalıştırıyorum.
8. Otomatik Yedekleme
Güvenlik sadece saldırıları engellemek değil felaket durumunda kurtulmak da. Ben her sunucumda günlük otomatik yedek alıyorum. Yedekler farklı bir lokasyondaki sunucuya kopyalanıyor. Rsync + cron job ile basit ama güvenilir bir sistem.
Bir kez yedek sayesinde 2 saatlik bir configuration hatasını 10 dakikada geri aldım. Yedek yoksaaymış olacaktım. O günden beri “yedek var mı?” sorusunu kendime her gün soruyorum.
CrowdSec ile Yeni Nesil Koruma
Fail2Ban’ın modern alternatifi CrowdSec’i keşfettikten sonra tüm sunucularıma geçtim. Fail2Ban’dan farkı: sadece kendi sunucunuzu değil, tüm CrowdSec topluluğunun verdiği tehdit istihbaratını kullanıyor. Bir IP Türkiye’deki bir sunucuda kötü niyetli tespit edildiyse, o IP dünya çapındaki tüm CrowdSec kullanıcıları için otomatik banlanıyor.
Kurulum basit: curl -s https://install.crowdsec.net | bash ve ardından cs-firewall-bouncer’ı kurun. İlk gün benim sunucumda 50 IP banlandı hepsi CrowdSec topluluğundan gelen tehdit verisiydi. Bu Fail2Ban ile tek başına yakalayamayacağım bir koruma katmanı.
Güvenlik Kontrol Listesi Her Ay
Ben her ayın ilk pazartesi günü şu kontrolleri yapıyorum:
- Lynis audit:
lynis audit systemçalıştırıp raporu kontrol edin. - Açık port taraması:
ss -tulpnile dinlenen portları kontrol edin, tanımadığınız varsa araştırın. - Kullanıcı kontrolü:
cat /etc/passwdile tanımadığınız kullanıcı var mı bakın. - Cron job kontrolü:
crontab -lve /etc/cron.d/ dizinini kontrol edin. Zararlı cron job’lar yaygın bir arka kapı yöntemi. - Log kontrolü: /var/log/auth.log ve /var/log/syslog’da anormallik var mı.
- Disk kullanımı:
df -hile disk doluluğunu kontrol edin. %90’ın üstü tehlikeli. - Yedek testi: Yedeklerin düzgün alındığını ve geri yüklenebilir olduğunu test edin. Alıp test etmezseniz yedek sayılmaz.
Bu kontroller toplam 30-40 dakika sürer ama sizi büyük felaketlerden korur. Ben bir kez cron job kontrolünde mining script’i buldum bir haftadır arka planda çalışıyormuş. Erkenden tespit etmeseydim sunucu kaynakları tükenene kadar farkına varamazdım.
Sonuç
Debian sunucu güvenliği tek bir ayar değil, katmanlı bir yaklaşım. Güncelleme + SSH koruması + firewall + Fail2Ban + monitoring + yedekleme. Her katman ayrı bir güvenlik halkası. Bir halka kırılsa bile diğerleri sizi korur.
Ben bu adımları uyguladıktan sonra hiçbir saldırıda başarılı olamadılar. Ama hâlâ ayda bir kontrol ediyorum güvenlik bir süreç, bir kural değil. Dikkatli olun, güncel kalın, izlemeye devam edin.


