İçindekiler

    Yazıyı Dinle

    Hazır
    Tarayıcınızın yerleşik ses sentezi özelliğini kullanır.

    Yazı Boyutu

    Küçük Aa
    Normal Aa
    Büyük Aa
    Çok Büyük Aa

    Kaydet

    📑

    Bu makaleyi daha sonra okumak için kaydedin

    Linux Sunucu Güvenlik İhlali Sonrası Yeniden Kurulum

    Linux Sunucu Güvenlik İhlali Sonrası Yeniden Kurulum
    Yazıyı dinlemek için oynat butonuna tıklayın
    Kimse sunucusunun hacklenmesini düşünmek istemez. Ancak şüpheli trafik, değiştirilmiş dosyalar veya bilinmeyen kullanıcılar görürseniz, tahmin yürütmektense sistemi yeniden kurmak daha güvenlidir. Bu rehberde, bir güvenlik ihlali şüphesi durumunda Linux sunucunuzu nasıl güvenli bir şekilde yeniden kuracağınızı, saldırının nedenini nasıl araştıracağınızı ve yeni sistemi bir savaş alanına girmişçesine nasıl sertleştireceğinizi anlatacağım.

    🚨 İlk Fark Etme: Sunucunuz Gerçekten Compromise Edildi mi?

    Şüpheli Belirtiler

    Bir Linux sunucunun güvenliğinin ihlal edildiğini gösteren ana belirtiler şunlardır: Performans Anomalileri:
    • Açıklanamayan yüksek CPU veya memory kullanımı
    • Bilinmeyen süreçlerin çalışması
    • Anormal network trafiği
    Sistem Değişiklikleri:
    • Yetkilendirilmemiş kullanıcı hesapları
    • Değiştirilmiş sistem dosyaları
    • Web sayfalarının "Hacked" mesajlarıyla değiştirilmesi
    • Beklenmeyen cronjob'lar veya startup script'leri
    Güvenlik İhlali İşaretleri:
    • Logların silinmesi veya manipüle edilmesi
    • Bilinen malware imzaları
    • Şüpheli SSH bağlantıları
    • Rootkit belirtileri

    Hızlı Değerlendirme Komutları

    # Çalışan süreçleri kontrol et ps aux | head -20 ps -elf | grep -v "^\ > /tmp/suspicious_process_files.txt # Memory bilgileri cat /proc/meminfo > /tmp/meminfo.txt cat /proc/version > /tmp/kernel_version.txt 

    Log Analizi

    # Son sistem loglarını incele tail -n 1000 /var/log/syslog > /tmp/recent_syslog.txt tail -n 1000 /var/log/auth.log > /tmp/recent_auth.txt tail -n 1000 /var/log/apache2/access.log > /tmp/recent_web_access.txt # Şüpheli girişleri ara grep "Failed password" /var/log/auth.log | tail -50 grep "Accepted password" /var/log/auth.log | tail -20 grep "sudo:" /var/log/auth.log | tail -20 # Son değiştirilen dosyaları bul find / -type f -mtime -1 -ls 2>/dev/null | head -100 

    Rootkit Taraması

    # Chkrootkit ile tarama sudo chkrootkit > /tmp/chkrootkit_results.txt # Rkhunter ile tarama sudo rkhunter -c --sk > /tmp/rkhunter_results.txt # AIDE ile dosya bütünlüğü kontrolü sudo aide --check > /tmp/aide_results.txt 

    🔥 Nuclear Option: Tamamen Yeniden Kurulum

    1. Yedek Alma (Temiz Veriler İçin)

    # Sadece gerekli kullanıcı verilerini yedekle mkdir /tmp/backup_user_data cp -r /home/username/important_data /tmp/backup_user_data/ cp -r /var/www/html/uploaded_files /tmp/backup_user_data/ # Konfigürasyon dosyalarını güvenlik kontrolü ile yedekle cp /etc/apache2/sites-available/* /tmp/backup_configs/ cp /etc/mysql/mysql.conf.d/* /tmp/backup_configs/ 
    ⚠️ UYARI: Sadece temiz olduğundan emin olduğunuz dosyaları yedekleyin!

    2. Forensik İmaj Alma

    # Diskin forensik kopyasını al sudo dd if=/dev/sda of=/external/disk_image.img bs=4M status=progress sudo sha256sum /external/disk_image.img > /external/disk_image.sha256 

    3. Tamamen Yeni Kurulum

    Sistemi yeniden inşa etmek, sisteminiz üzerinde kontrole sahip olduğunuzdan emin olmanın tek yoludur Fiziksel Sunucu İçin:
    # UEFI firmware'i güncelle # BIOS ayarlarını sıfırla # Temiz işletim sistemi kur 
    Sanal Makine İçin:
    # Eski diski ayır # Yeni disk ekle # İşletim sistemini sıfırdan kur 

    🛡️ Yeni Sistem Sertleştirme

    Temel Güvenlik Yapılandırması

    # Sistemi güncelle sudo apt update && sudo apt upgrade -y # Gereksiz servisleri kapat sudo systemctl disable telnet sudo systemctl disable ftp sudo systemctl disable rsh # Firewall konfigürasyonu sudo ufw enable sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow ssh sudo ufw allow http sudo ufw allow https 

    SSH Sertleştirme

    # SSH konfigürasyonunu düzenle sudo nano /etc/ssh/sshd_config # Yapılacak değişiklikler: # PermitRootLogin no # PasswordAuthentication no # PubkeyAuthentication yes # Port 2222 (default port değiştir) # MaxAuthTries 3 # LoginGraceTime 30 # AllowUsers your_username sudo systemctl restart ssh 

    Otomatik Güvenlik Araçları

    # Fail2Ban kurulumu sudo apt install fail2ban -y # Fail2Ban konfigürasyonu sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local sudo nano /etc/fail2ban/jail.local # ClamAV antivirus kurulumu sudo apt install clamav clamav-daemon -y sudo freshclam sudo systemctl enable clamav-freshclam # AIDE dosya bütünlük izleme sudo apt install aide -y sudo aide --init sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db 

    Log İzleme ve SIEM

    # Rsyslog konfigürasyonu sudo nano /etc/rsyslog.conf # Logları merkezi sunucuya gönder # Auditd kurulumu sudo apt install auditd -y sudo systemctl enable auditd # Önemli dosyaları izleme altına al sudo auditctl -w /etc/passwd -p wa -k passwd_changes sudo auditctl -w /etc/shadow -p wa -k shadow_changes sudo auditctl -w /etc/sudoers -p wa -k sudoers_changes 

    🔍 Vulnerability Patching

    Sistem Güncellemeleri

    # Unattended upgrades kurulumu sudo apt install unattended-upgrades -y sudo dpkg-reconfigure -plow unattended-upgrades # Manual güvenlik güncellemeleri sudo apt list --upgradable sudo apt upgrade -y 

    Uygulama Güvenliği

    # Web server sertleştirme (Apache) sudo nano /etc/apache2/conf-available/security.conf # ServerTokens Prod # ServerSignature Off # PHP sertleştirme sudo nano /etc/php/7.4/apache2/php.ini # expose_php = Off # allow_url_fopen = Off # allow_url_include = Off # MySQL sertleştirme sudo mysql_secure_installation 

    📊 İzleme ve Alerting

    Sistem İzleme

    # Netdata kurulumu (gerçek zamanlı izleme) bash <(curl -Ss https://my-netdata.io/kickstart.sh) # OSSEC HIDS kurulumu wget -q -O - https://updates.atomicorp.com/installers/atomic | sudo bash sudo yum install ossec-hids ossec-hids-server 

    Log Analizi

    # Logwatch kurulumu sudo apt install logwatch -y # Fail2Ban notification konfigürasyonu sudo nano /etc/fail2ban/jail.local # action = %(action_mwl)s # mta = sendmail 

    🚀 Recovery ve Restore

    Veri Geri Yükleme

    # Temiz verileri geri yükle sudo rsync -av /backup/clean_data/ /var/www/html/ sudo chown -R www-data:www-data /var/www/html/ # Veritabanını geri yükle mysql -u root -p database_name < /backup/clean_database.sql 

    Servis Restorasyonu

    # Web servisi başlat sudo systemctl enable apache2 sudo systemctl start apache2 # Veritabanı servisi sudo systemctl enable mysql sudo systemctl start mysql # SSL sertifikalarını yenile sudo certbot renew --force-renewal 

    📝 Incident Response Dokümantasyonu

    Olay Raporu Şablonu

    # Güvenlik Olayı Raporu ## Olay Özeti - Tarih/Saat: - Etkilenen Sistem: - Saldırı Türü: - Etki Düzeyi: ## Keşif - İlk fark eden: - Keşif yöntemi: - İlk gözlemler: ## Analiz - Saldırı vektörü: - Kullanılan araçlar: - Zarar verilen dosyalar: - Çalınan veriler: ## Müdahale - Alınan önlemler: - Kullanılan araçlar: - Temizlik adımları: ## Kurtarma - Restore işlemleri: - Servis durumu: - Performans testi: ## Lessons Learned - Saldırının nedeni: - Alınacak önlemler: - Policy değişiklikleri: 

    🎯 Önleyici Tedbirler

    Düzenli Güvenlik Değerlendirmesi

    # Haftalık güvenlik taraması scripti #!/bin/bash # security_scan.sh echo "=== Güvenlik Taraması Başlıyor ===" date # Port taraması nmap -sS localhost # Rootkit kontrolü rkhunter -c --sk # Log analizi grep "Failed password" /var/log/auth.log | tail -10 # Disk kullanımı df -h # Çalışan servisler systemctl list-units --type=service --state=running echo "=== Tarama Tamamlandı ===" 

    Yedekleme Stratejisi

    #!/bin/bash # backup_script.sh BACKUP_DIR="/backup/$(date +%Y%m%d)" mkdir -p $BACKUP_DIR # Sistem konfigürasyonları tar -czf $BACKUP_DIR/etc_backup.tar.gz /etc/ # Kullanıcı verileri tar -czf $BACKUP_DIR/home_backup.tar.gz /home/ # Veritabanı yedekleme mysqldump --all-databases > $BACKUP_DIR/all_databases.sql # Web dosyaları tar -czf $BACKUP_DIR/web_backup.tar.gz /var/www/ # Yedekleri uzak sunucuya gönder rsync -av $BACKUP_DIR/ backup_server:/backups/ 

    🔧 Otomasyonla İyileştirme

    Ansible Playbook ile Otomatik Sertleştirme

    # security_hardening.yml --- - hosts: all become: yes tasks: - name: Update system packages apt: update_cache: yes upgrade: dist - name: Install security tools apt: name: - fail2ban - rkhunter - aide - clamav state: present - name: Configure SSH lineinfile: path: /etc/ssh/sshd_config regexp: "{{ item.regexp }}" line: "{{ item.line }}" with_items: - { regexp: '^PermitRootLogin', line: 'PermitRootLogin no' } - { regexp: '^PasswordAuthentication', line: 'PasswordAuthentication no' } notify: restart ssh - name: Configure firewall ufw: rule: "{{ item.rule }}" port: "{{ item.port }}" proto: "{{ item.proto }}" with_items: - { rule: 'allow', port: '22', proto: 'tcp' } - { rule: 'allow', port: '80', proto: 'tcp' } - { rule: 'allow', port: '443', proto: 'tcp' } handlers: - name: restart ssh service: name: ssh state: restarted 

    🎓 Sonuç ve Tavsiyeler

    Ana Çıkarımlar

    1. Hızlı Müdahale Kritiktir: Bir hacker sisteme girdiğinde, sistemde ne yaptığı hakkında hiçbir fikriniz olmaz - yeni SSH portları, yeni hesaplar, yeni paylaşımlar, Apache kurallarında ince değişiklikler ekleyebilir
    2. Tam Yeniden Kurulum En Güvenli Seçenektir: Sistemin tamamen temizlenmesi ve yeniden kurulması, kontrolün size ait olduğundan emin olmanın tek yoludur.
    3. Prevention > Reaction: Düzenli güncellemeler, güçlü kimlik doğrulama ve monitoring ile saldırıları önlemek, müdahale etmekten çok daha etkilidir.
    4. Dokümantasyon Vazgeçilmezdir: Her adımı belgeleyin, gelecekteki olaylardan ders çıkarın.

    Son Kontrol Listesi

    • Ağ trafiği izleme aktif
    • Otomatik yedekleme çalışıyor
    • Güvenlik güncellemeleri otomatik
    • IDS/IPS sistemleri aktif
    • Log analizi yapılıyor
    •  planı güncel
    • Takım eğitimi tamamlandı
    • Forensik araçlar hazır
    Unutmayın: Güvenlik ihlali sadece teknik bir sorun değildir, tüm şirketi etkileyebilir ve aldığınız aksiyonlar maliyetli olabilir. Bu yüzden doğru planlanmış, sistematik bir yaklaşım benimseyin ve asla tek başınıza hareket etmeyin. Linux sunucu güvenliği sürekli bir süreçtir. Bu rehberi temel alarak kendi incident response planınızı geliştirin ve düzenli olarak test edin. Çünkü saldırı "eğer" değil "ne zaman" sorusudur.
    Önceki Yazı Her Linux Sunucumda Uyguladığım 7 CIS Güvenlik Uygulaması
    Her Linux Sunucumda Uyguladığım 7 CIS Güvenlik Uygulaması

    Linux sunucu güvenliği konusunda 15+ yıllık deneyimim boyunca öğrendiğim ...

    Sonraki Yazı Windows Client DNS Sıralaması: Gerçekten Sıralı mı Çalışır?
    Windows Client DNS Sıralaması: Gerçekten Sıralı mı Çalışır?

    DNS (Domain Name System) çözümlemesi, modern bilgisayar ağlarının en kriti...