VPS Güvenliği Neden Önemli?
VPS sunucunuz, siber suçluların sürekli hedefi altındadır. Güvenlik açıkları, veri kaybı, hizmet kesintisi ve mali kayıplara yol açabilir. Bu rehber, sunucunuzu güvende tutmak için gerekli tüm önlemleri kapsar.
⚠️ Kritik: Güvenlik önlemleri almak, isteğe bağlı değil zorunluluktur. Saldırılar sürekli gerçekleşmektedir!
1. SSH Güvenlik Sertleştirmesi
SSH, sunucunuza erişimin ana kapısıdır. Bu kapıyı güvenli hale getirmek kritik öneme sahiptir:
# SSH yapılandırma dosyasını düzenle
sudo nano /etc/ssh/sshd_config
# Güvenlik ayarları
Port 2222 # Varsayılan port değiştir
Protocol 2 # SSH2 protokolü kullan
PermitRootLogin no # Root girişini kapat
PasswordAuthentication no # Şifre girişini kapat
PubkeyAuthentication yes # Anahtar doğrulamayı aç
MaxAuthTries 3 # Maksimum deneme sayısı
ClientAliveInterval 300 # Bağlantı zaman aşımı
ClientAliveCountMax 2 # Maksimum boşta kalma
# Belirli kullanıcılara izin ver
AllowUsers yourusername
# SSH servisini yeniden başlat
sudo systemctl restart ssh
2. Güçlü Güvenlik Duvarı Yapılandırması
UFW (Uncomplicated Firewall) ile kapsamlı güvenlik duvarı kuralları oluşturun:
# UFW kurulumu ve temel ayarlar
sudo apt install ufw -y
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Gerekli portları aç
sudo ufw allow 2222/tcp # SSH (değiştirilen port)
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
# Belirli IP'den erişim
sudo ufw allow from 192.168.1.100 to any port 2222
# Rate limiting (DDoS koruması)
sudo ufw limit 2222/tcp
# UFW'yi aktifleştir
sudo ufw enable
sudo ufw status verbose
3. Fail2Ban Kurulumu
Brute force saldırılarına karşı otomatik koruma sağlar:
# Fail2ban kurulumu
sudo apt install fail2ban -y
# Yapılandırma dosyası oluştur
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
📄 Fail2Ban Yapılandırma Örneği
[DEFAULT]
bantime = 3600 # 1 saat ban
findtime = 600 # 10 dakika izleme
maxretry = 3 # 3 başarısız deneme
[sshd]
enabled = true
port = 2222 # SSH portunu değiştirdiyseniz
logpath = /var/log/auth.log
maxretry = 3
# Fail2ban'ı başlat
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
# Durum kontrolü
sudo fail2ban-client status
sudo fail2ban-client status sshd
4. Sistem Güncellemeleri
Güvenlik açıklarını kapatmak için düzenli güncellemeler kritiktir:
# Manuel güncelleme
sudo apt update && sudo apt upgrade -y
# Otomatik güvenlik güncellemeleri
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure -plow unattended-upgrades
# Yapılandırmayı düzenle
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
5. Kullanıcı Hesap Güvenliği
Güçlü parola politikaları ve kullanıcı yetkilendirmesi:
# Parola karmaşıklığı için libpam kurulumu
sudo apt install libpam-pwquality -y
# Parola politikasını düzenle
sudo nano /etc/security/pwquality.conf
# Örnek ayarlar:
minlen = 12 # Minimum 12 karakter
minclass = 3 # En az 3 farklı karakter türü
maxrepeat = 2 # Maksimum 2 tekrar eden karakter
6. Dosya ve Dizin İzinleri
Kritik dosyalar için doğru izinleri ayarlayın:
# SSH anahtarları için izinler
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
# Sistem yapılandırma dosyaları
sudo chmod 644 /etc/ssh/sshd_config
sudo chmod 640 /etc/shadow
# Web dizini izinleri
sudo chown -R www-data:www-data /var/www/
sudo find /var/www/ -type d -exec chmod 755 \;
sudo find /var/www/ -type f -exec chmod 644 \;
7. SSL/TLS Sertifikaları
Web trafiğinizi şifrelemek için SSL sertifikası kullanın:
# Let's Encrypt kurulumu
sudo apt install certbot python3-certbot-nginx -y
# SSL sertifikası al
sudo certbot --nginx -d yourdomain.com
# Otomatik yenileme
sudo crontab -e
# Aşağıdaki satırı ekleyin:
0 12 * * * /usr/bin/certbot renew --quiet
8. Log İzleme ve Analiz
Sistem loglarını düzenli olarak kontrol edin:
📊 Önemli Log Dosyaları
# Sistem logları
sudo tail -f /var/log/syslog
sudo tail -f /var/log/auth.log # SSH girişleri
sudo tail -f /var/log/fail2ban.log # Fail2ban logları
# Web sunucu logları
sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log
9. Rootkit ve Malware Taraması
Sistem bütünlüğünü korumak için düzenli taramalar yapın:
# ClamAV antivirus kurulumu
sudo apt install clamav clamav-daemon -y
sudo freshclam # Virus tanımlarını güncelle
# Rootkit tarayıcısı kurulumu
sudo apt install rkhunter chkrootkit -y
# Tarama komutları
sudo clamscan -r /home/ # Antivirus tarama
sudo rkhunter --check # Rootkit tarama
sudo chkrootkit # Alternatif rootkit tarama
10. Yedekleme ve Disaster Recovery
Güvenlik ihlali durumunda hızlı kurtarma için:
# Otomatik yedekleme scripti
sudo nano /usr/local/bin/backup.sh
#!/bin/bash
BACKUP_DIR="/backups/$(date +%Y%m%d)"
mkdir -p $BACKUP_DIR
# Önemli dosyaları yedekle
tar -czf $BACKUP_DIR/etc.tar.gz /etc/
tar -czf $BACKUP_DIR/var-www.tar.gz /var/www/
mysqldump --all-databases > $BACKUP_DIR/databases.sql
# Script'i çalıştırılabilir yap
sudo chmod +x /usr/local/bin/backup.sh
# Crontab'a ekle (her gün 02:00'da)
0 2 * * * /usr/local/bin/backup.sh
Güvenlik Kontrol Listesi
🔒 Güvenlik Kontrolleri
Temel Güvenlik
- ☐ SSH port değiştirildi
- ☐ Root girişi kapatıldı
- ☐ SSH anahtarları kullanılıyor
- ☐ Güvenlik duvarı aktif
- ☐ Fail2ban kuruldu
İleri Güvenlik
- ☐ SSL sertifikası aktif
- ☐ Otomatik güncellemeler açık
- ☐ Log izleme aktif
- ☐ Düzenli yedekleme yapılıyor
- ☐ Malware taraması aktif
Yaygın Güvenlik Tehditleri
🎯 Brute Force Saldırıları
Tehdit: SSH şifre kırma denemeleri
Koruma: Fail2ban, SSH anahtarları, port değişikliği
🦠 Malware ve Rootkit
Tehdit: Zararlı yazılım bulaşması
Koruma: Düzenli tarama, güncellemeler, dosya izinleri
⚡ DDoS Saldırıları
Tehdit: Hizmet engelleme saldırıları
Koruma: Rate limiting, CDN kullanımı, trafik izleme
Sonuç
VPS güvenliği, sürekli dikkat gerektiren bir süreçtir. Bu rehberdeki önlemleri uygulayarak sunucunuzu büyük ölçüde güvende tutabilirsiniz. Güvenlik, tek seferlik bir işlem değil, sürekli izleme ve güncelleme gerektiren bir disiplindir. Düzenli kontroller yapmayı ve güvenlik güncellemelerini takip etmeyi unutmayın.