# 🔒 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 ```bash # Ş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 ```bash # 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 ```bash # /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 ```bash # Fail2Ban kurulumu sudo apt install fail2ban # Konfigürasyon sudo nano /etc/fail2ban/jail.local ``` ```ini [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 ``` ```bash # 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 ```bash # 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 # 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 ```bash # Database dosya izinleri sudo chmod 600 /opt/oltalama/backend/database/oltalama.db sudo chown oltalama:oltalama /opt/oltalama/backend/database/oltalama.db # Backup dizini izinleri sudo chmod 700 /opt/oltalama/backups sudo chown oltalama:oltalama /opt/oltalama/backups ``` #### Düzenli Yedekleme ```bash # 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" ``` ```bash # 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 ```bash # .env dosya izinleri sudo chmod 600 /opt/oltalama/backend/.env sudo chmod 600 /opt/oltalama/frontend/.env # Sahibi ayarla sudo chown oltalama:oltalama /opt/oltalama/backend/.env sudo chown oltalama:oltalama /opt/oltalama/frontend/.env ``` #### Session Secret ```bash # 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: nosniff` - `X-Frame-Options: SAMEORIGIN` - `X-XSS-Protection: 1; mode=block` - `Strict-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:** 1. Google Hesabı → Güvenlik 2. 2 Adımlı Doğrulama'yı aktifleştir 3. Uygulama Şifreleri → Mail 4. 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 ```bash # .env dosyasında saklayın TELEGRAM_BOT_TOKEN=1234567890:ABCdefGHIjklMNOpqrsTUVwxyz # Asla git'e commit etmeyin echo ".env" >> .gitignore ``` #### Chat ID Doğrulama ```bash # Sadece belirli chat ID'lere bildirim gönderin # Bot'u sadece bilinen kişilerle paylaşın ``` ### 8. Log Yönetimi #### Log Dosyalarını Koruma ```bash # Log dizini izinleri sudo chmod 750 /var/log/oltalama sudo chown oltalama:oltalama /var/log/oltalama # Log dosyaları izinleri sudo chmod 640 /var/log/oltalama/*.log ``` #### Log Rotation ```bash # /etc/logrotate.d/oltalama /var/log/oltalama/*.log { daily rotate 30 compress delaycompress missingok notifempty create 0640 oltalama oltalama 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 ```bash # 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 ```bash # 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 ```bash # PM2 status pm2 status # Memory ve CPU kullanımı pm2 monit # Error logları izle pm2 logs --err ``` #### Sistem Monitoring ```bash # 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 ```bash # 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 1. **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 2. **Kısa Vadede:** - Tüm logları yedekle - Şüpheli IP adreslerini banla - Sistem taraması yap 3. **Uzun Vadede:** - Güvenlik politikalarını gözden geçir - İhlal raporunu hazırla - Ek güvenlik önlemleri al ## 📚 Ek Kaynaklar - [OWASP Top 10](https://owasp.org/www-project-top-ten/) - [Node.js Security Best Practices](https://nodejs.org/en/docs/guides/security/) - [Express.js Security Best Practices](https://expressjs.com/en/advanced/best-practice-security.html) - [Nginx Security Tips](https://nginx.org/en/docs/http/ngx_http_ssl_module.html) --- **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.