9.1 KiB
9.1 KiB
🔒 Güvenlik Rehberi
Oltalama Test Yönetim Paneli için güvenlik en iyi uygulamaları ve önerileri.
🎯 Temel Güvenlik Prensipleri
1. Admin Kullanıcı Güvenliği
Güçlü Şifre Kullanımı
Minimum Gereksinimler:
- En az 8 karakter
- En az 1 büyük harf
- En az 1 küçük harf
- En az 1 rakam
- Önerilen: En az 1 özel karakter (!@#$%^&*)
Önerilen Şifre Uzunluğu: 12+ karakter
Güçlü Şifre Örnekleri:
- ✅
S3cur3P@ssw0rd! - ✅
MyT3st#2025!Pass - ✅
Phish1ng$Test@2025
Zayıf Şifreler (KULLANMAYIN):
- ❌
admin123 - ❌
password - ❌
12345678 - ❌
qwerty123
Şifre Yönetimi
# Şifre değiştirme (90 günde bir önerilir)
cd /opt/oltalama
node scripts/change-password.js
# Yeni admin kullanıcısı ekleme
node scripts/create-admin.js
Varsayılan Kullanıcı
- ⚠️ ÖNEMLİ: Sistem varsayılan kullanıcı ile gelmiyor
- ✅ Kurulum sırasında güvenli bir kullanıcı oluşturmanız gerekir
- ✅ Şifreniz bcrypt ile hash'lenmiş olarak saklanır
2. Sunucu Güvenliği
Firewall Konfigürasyonu
# UFW kurulumu
sudo apt install ufw
# Gerekli portları aç
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
# Uygulama portlarını kapat (reverse proxy kullanın)
sudo ufw deny 3000/tcp # Backend
sudo ufw deny 4173/tcp # Frontend
# Firewall'ı aktifleştir
sudo ufw enable
# Durumu kontrol et
sudo ufw status
SSH Güvenliği
# /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no # SSH key kullanın
PubkeyAuthentication yes
Port 22 # Veya özel bir port
# SSH servisini yeniden başlat
sudo systemctl restart sshd
Fail2Ban Kurulumu
# Fail2Ban kurulumu
sudo apt install fail2ban
# Konfigürasyon
sudo nano /etc/fail2ban/jail.local
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5
[sshd]
enabled = true
port = 22
logpath = /var/log/auth.log
[nginx-http-auth]
enabled = true
filter = nginx-http-auth
port = http,https
logpath = /var/log/nginx/error.log
# Fail2Ban'ı başlat
sudo systemctl restart fail2ban
sudo systemctl enable fail2ban
# Durumu kontrol et
sudo fail2ban-client status
3. SSL/TLS Sertifikası
Let's Encrypt ile Ücretsiz SSL
# Certbot kurulumu
sudo apt install certbot python3-certbot-nginx
# Sertifika oluşturma
sudo certbot --nginx -d yourdomain.com
# Otomatik yenileme testi
sudo certbot renew --dry-run
SSL Konfigürasyonu
Minimum TLS Versiyonu: TLSv1.2 ve TLSv1.3
# Nginx SSL ayarları
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers HIGH:!aNULL:!MD5;
# HSTS header
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
4. Database Güvenliği
Dosya İzinleri
# Database dosya izinleri
sudo chmod 600 /opt/oltalama/backend/database/oltalama.db
sudo chown www-data:www-data /opt/oltalama/backend/database/oltalama.db
# Backup dizini izinleri
sudo chmod 700 /opt/oltalama/backups
sudo chown www-data:www-data /opt/oltalama/backups
Düzenli Yedekleme
# Otomatik yedekleme scripti
# /opt/oltalama/backup.sh
#!/bin/bash
BACKUP_DIR="/opt/oltalama/backups"
DB_PATH="/opt/oltalama/backend/database/oltalama.db"
DATE=$(date +%Y%m%d-%H%M%S)
# Yedek al
cp $DB_PATH "$BACKUP_DIR/oltalama-$DATE.db"
# Eski yedekleri sil (30 günden eski)
find $BACKUP_DIR -name "oltalama-*.db" -mtime +30 -delete
# Backup'ı şifrele (opsiyonel)
gpg --symmetric --cipher-algo AES256 "$BACKUP_DIR/oltalama-$DATE.db"
rm "$BACKUP_DIR/oltalama-$DATE.db"
# Crontab ekle
crontab -e
# Ekle: Her gün saat 03:00'te yedek al
0 3 * * * /opt/oltalama/backup.sh >> /var/log/oltalama/backup.log 2>&1
5. Uygulama Güvenliği
Çevre Değişkenleri
# .env dosya izinleri
sudo chmod 600 /opt/oltalama/backend/.env
sudo chmod 600 /opt/oltalama/frontend/.env
# Sahibi ayarla
sudo chown www-data:www-data /opt/oltalama/backend/.env
sudo chown www-data:www-data /opt/oltalama/frontend/.env
Session Secret
# Güçlü session secret oluştur
node -e "console.log(require('crypto').randomBytes(64).toString('hex'))"
# .env dosyasına ekle
SESSION_SECRET=uzun-rastgele-gizli-anahtar-buraya
Rate Limiting
Uygulama zaten rate limiting kullanıyor:
- Login endpoint: 5 istek / dakika
- API endpoints: 100 istek / 15 dakika
Security Headers
Uygulama otomatik olarak şu güvenlik başlıklarını ekliyor:
X-Content-Type-Options: nosniffX-Frame-Options: SAMEORIGINX-XSS-Protection: 1; mode=blockStrict-Transport-Security(HTTPS ile)
6. Gmail Güvenliği
App Password Kullanımı
✅ Doğru: Gmail App Password kullanın ❌ Yanlış: Normal Gmail şifresi kullanmayın
App Password Oluşturma:
- Google Hesabı → Güvenlik
- 2 Adımlı Doğrulama'yı aktifleştir
- Uygulama Şifreleri → Mail
- Oluşturulan şifreyi panele girin
Güvenlik İpuçları:
- App Password'ü asla paylaşmayın
- Düzenli olarak değiştirin (6 ayda bir)
- Kullanılmayan app password'leri silin
7. Telegram Bot Güvenliği
Bot Token Güvenliği
# .env dosyasında saklayın
TELEGRAM_BOT_TOKEN=1234567890:ABCdefGHIjklMNOpqrsTUVwxyz
# Asla git'e commit etmeyin
echo ".env" >> .gitignore
Chat ID Doğrulama
# Sadece belirli chat ID'lere bildirim gönderin
# Bot'u sadece bilinen kişilerle paylaşın
8. Log Yönetimi
Log Dosyalarını Koruma
# Log dizini izinleri
sudo chmod 750 /var/log/oltalama
sudo chown www-data:www-data /var/log/oltalama
# Log dosyaları izinleri
sudo chmod 640 /var/log/oltalama/*.log
Log Rotation
# /etc/logrotate.d/oltalama
/var/log/oltalama/*.log {
daily
rotate 30
compress
delaycompress
missingok
notifempty
create 0640 www-data www-data
sharedscripts
postrotate
pm2 reloadLogs
endscript
}
Hassas Bilgileri Loglamayın
- ❌ Şifreler
- ❌ Session token'lar
- ❌ API keys
- ❌ Kredi kartı bilgileri
9. Düzenli Güncellemeler
Sistem Güncellemeleri
# Sistem paketlerini güncelle
sudo apt update && sudo apt upgrade -y
# Güvenlik güncellemelerini otomatik yap
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
Uygulama Güncellemeleri
# Backend dependencies
cd /opt/oltalama/backend
npm audit
npm audit fix
# Frontend dependencies
cd /opt/oltalama/frontend
npm audit
npm audit fix
# PM2 güncelleme
sudo npm update -g pm2
pm2 update
10. Monitoring ve Alerting
PM2 Monitoring
# PM2 status
pm2 status
# Memory ve CPU kullanımı
pm2 monit
# Error logları izle
pm2 logs --err
Sistem Monitoring
# Disk kullanımı
df -h
# Memory kullanımı
free -h
# CPU kullanımı
top
# Network bağlantıları
sudo netstat -tulpn
🚨 Güvenlik Kontrol Listesi
Kurulum Sonrası
- Güçlü admin şifresi oluşturuldu
- .env dosya izinleri ayarlandı (600)
- Database izinleri ayarlandı (600)
- Firewall yapılandırıldı
- SSL sertifikası kuruldu
- Fail2Ban kuruldu
- SSH key-based auth aktif
- Otomatik yedekleme ayarlandı
- Log rotation yapılandırıldı
Aylık Kontroller
- Sistem güncellemeleri yapıldı
- npm audit çalıştırıldı
- Loglar gözden geçirildi
- Yedekler test edildi
- Disk kullanımı kontrol edildi
Üç Aylık Kontroller
- Admin şifresi değiştirildi
- Gmail App Password yenilendi
- Kullanılmayan kullanıcılar silindi
- SSL sertifikası kontrol edildi
Yıllık Kontroller
- Tam sistem denetimi yapıldı
- Güvenlik politikaları gözden geçirildi
- Yedekleme stratejisi gözden geçirildi
🔍 Güvenlik Olaylarına Müdahale
Şüpheli Aktivite Tespiti
# Son giriş denemeleri
sudo tail -100 /var/log/auth.log
# Fail2Ban ban listesi
sudo fail2ban-client status sshd
# Nginx access logları
sudo tail -100 /var/log/nginx/oltalama-access.log
# Uygulama error logları
pm2 logs --err --lines 100
Güvenlik İhlali Durumunda
-
Hemen:
- Tüm admin şifrelerini değiştir
- Gmail App Password'ü yenile
- Telegram Bot Token'ı yenile
- Session secret'ı değiştir ve tüm servisleri yeniden başlat
-
Kısa Vadede:
- Tüm logları yedekle
- Şüpheli IP adreslerini banla
- Sistem taraması yap
-
Uzun Vadede:
- Güvenlik politikalarını gözden geçir
- İhlal raporunu hazırla
- Ek güvenlik önlemleri al
📚 Ek Kaynaklar
Son Güncelleme: 2025-11-10
Versiyon: 1.0.0
⚠️ UYARI: Bu sistem sadece yasal ve etik phishing testleri için kullanılmalıdır. Kötü niyetli kullanım yasaktır ve suçtur.