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:
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ı,
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
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ı,
