Files
balikci/SECURITY.md
salvacybersec f86cda2978 Domain support
2025-11-10 20:01:41 +03:00

455 lines
9.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🔒 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.