Domain support
This commit is contained in:
454
SECURITY.md
Normal file
454
SECURITY.md
Normal file
@@ -0,0 +1,454 @@
|
||||
# 🔒 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 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.
|
||||
|
||||
Reference in New Issue
Block a user