Files
balikci/SECURITY.md

455 lines
9.1 KiB
Markdown
Raw Normal View History

2025-11-10 20:01:41 +03:00
# 🔒 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ı
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 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
```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 www-data:www-data /opt/oltalama/backend/.env
sudo chown www-data:www-data /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 www-data:www-data /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 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
```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.