Konuyu Açan #1
Giriş
Sunucu güvenliği, özellikle SSH protokolü kullanırken, kritik öneme sahiptir. Güvenlik açıklarını tespit etmek ve olası zafiyetleri azaltmak adına düzenli denetim yapmak, sistem yöneticilerinin temel görevleri arasında yer alır. Bu nedenle, otomatik SSH güvenlik denetimi sağlayan bir script geliştirmek, zaman kazandırırken güvenlik seviyesini de artırabilir. Aşağıda, temel SSH güvenlik unsurlarını kontrol eden, detaylı ve genişletilebilir bir denetim scripti yer almaktadır.

Scriptin Temel İşlevleri
  • SSH konfigürasyon dosyasındaki (genellikle /etc/ssh/sshd_config) kritik ayarları okuma ve raporlama
  • Güvenli olmayan SSH portlarını tespit etme (varsayılan 22 yerine farklı portlar kullanılması önerilir)
  • root kullanıcısının doğrudan SSH ile giriş iznini kontrol etme
  • Parola tabanlı girişlerin kapatılmış olup olmadığını denetleme
  • Anahtar tabanlı girişlerin aktif olup olmadığını doğrulama
  • SSH servisi en güncel güvenlik standartlarına uygun mu, kontrol etme (örneğin, güçlü cipher ve algoritma kullanımı)

    Scriptin Çalışma Mantığı ve Örnek Kod
    Script, bash dilinde yazılmıştır ve temel Linux komutlarıyla SSH ayarlarını ve durumu denetler. İşte ana bölümlerden oluşan örnek kod:

    KOD
    1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950bash
    #!/bin/bash
    
    [b]SSH Konfigürasyon dosya yolu[/b]
    SSHD_CONF="/etc/ssh/sshd_config"
    
    echo "SSH Güvenlik Denetimi Başlıyor..."
    
    [b]1. SSH Port Kontrolü[/b]
    PORT=$(grep "^#*Port" $SSHD_CONF | awk '{print $2}')
    if [ "$PORT" != "22" ] && [ "$PORT" != "" ]; then
      echo "[İYİ] Güvenli olmayan port: $PORT"
    else
      echo "[UYARI] Standart olmayan port kullanılmıyor veya port bulunamadı."
    fi
    
    [b]2. Root Giriş Kontrolü[/b]
    ROOT_LOGIN=$(grep "^#*PermitRootLogin" $SSHD_CONF | awk '{print $2}')
    if [ "$ROOT_LOGIN" == "yes" ]; then
      echo "[İYİ] root kullanıcısının doğrudan girişine izin veriliyor."
    else
      echo "[UYARI] root girişine izin kapatılmış veya ayar bulunamadı."
    fi
    
    [b]3. Parola ile giriş[/b]
    PASSWORD_AUTH=$(grep "^#*PasswordAuthentication" $SSHD_CONF | awk '{print $2}')
    if [ "$PASSWORD_AUTH" == "no" ]; then
      echo "[İYİ] Parola tabanlı giriş kapatılmış."
    else
      echo "[UYARI] Parola tabanlı giriş açık veya ayar bulunamadı."
    fi
    
    [b]4. Anahtar giriş durumu[/b]
    PUBKEY_AUTH=$(grep "^#*PubkeyAuthentication" $SSHD_CONF | awk '{print $2}')
    if [ "$PUBKEY_AUTH" == "yes" ]; then
      echo "[İYİ] Anahtar tabanlı giriş aktif."
    else
      echo "[UYARI] Anahtar tabanlı giriş kapalı veya ayar bulunamadı."
    fi
    
    [b]5. SSH servisi durumu[/b]
    systemctl status sshd | grep "active (running)" > /dev/null
    if [ $? -eq 0 ]; then
      echo "[İYİ] SSH servisi aktif ve çalışıyor."
    else
      echo "[HATA] SSH servisi çalışmıyor."
    fi
    
    echo "Denetim tamamlandı."
    
    


    Sonuç ve Geliştirme
    Bu script temel bir denetim sağlar ve ihtiyaçlara göre genişletilebilir. Örneğin, cipher ve algoritma denetimi, log analizi veya otomatik yapılandırma önerileri eklenebilir. Güvenlik politikalarınıza uygun düzenli aralıklarla çalıştırmak, sisteminizin zafiyetlerini zamanında tespit etmenize yardımcı olur. Ayrıca, scripti cron görevleriyle otomatik hale getirmek, manuel kontrol ihtiyacını azaltır.

    Bunun yanı sıra, sistem güvenliği sadece konfigürasyonla sınırlı değildir; düzenli güncellemeler, erişim kontrolleri ve izleme araçlarıyla desteklenmelidir. Güçlü ve güncel bir SSH yapılandırması,
  • Yanıt vermek için giriş yapmış olmalısınız.

    0 alıntı seçildi