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

9.1 KiB
Raw Permalink Blame History

🔒 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

# Ş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

# 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

# /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

# Fail2Ban kurulumu
sudo apt install fail2ban

# Konfigürasyon
sudo nano /etc/fail2ban/jail.local
[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
# 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

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

# 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

# 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"
# 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

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

# 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

# .env dosyasında saklayın
TELEGRAM_BOT_TOKEN=1234567890:ABCdefGHIjklMNOpqrsTUVwxyz

# Asla git'e commit etmeyin
echo ".env" >> .gitignore

Chat ID Doğrulama

# Sadece belirli chat ID'lere bildirim gönderin
# Bot'u sadece bilinen kişilerle paylaşın

8. Log Yönetimi

Log Dosyalarını Koruma

# 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

# /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

# 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

# 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

# PM2 status
pm2 status

# Memory ve CPU kullanımı
pm2 monit

# Error logları izle
pm2 logs --err

Sistem Monitoring

# 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

# 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


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.