455 lines
9.1 KiB
Markdown
455 lines
9.1 KiB
Markdown
# 🔒 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.
|
||
|