Takip et

Giriş: Neden Kimlik Doğrulama Günlüklerini İzlemeliyiz?

Giriş: Neden Kimlik Doğrulama Günlüklerini İzlemeliyiz? Bir Ubuntu sunucusunun güvenliğini sağlamanın en kritik yollarından biri, sistemin kimlik doğrulama günlüklerini düzenli olarak izlemektir.

Giriş: Neden Kimlik Doğrulama Günlüklerini İzlemeliyiz?

Bir Ubuntu sunucusunun güvenliğini sağlamanın en kritik yollarından biri, sistemin kimlik doğrulama günlüklerini düzenli olarak izlemektir. Kimlik doğrulama günlükleri, kullanıcıların sisteme giriş denemeleri, sudo komutlarının kullanımı, SSH bağlantıları ve diğer güvenlik açısından hassas etkinlikler hakkında değerli bilgiler içerir. Bu günlükler, potansiyel güvenlik ihlallerini, yetkisiz erişim denemelerini, kaba kuvvet saldırılarını ve hesap ele geçirme girişimlerini tespit etmek için ilk savunma hattıdır.

Bir saldırganın sisteme sızmaya çalıştığı veya sızdığı durumlarda, kimlik doğrulama günlükleri genellikle geride bıraktıkları izleri gösterir. Başarısız giriş denemelerinin sıklaşması, olağan dışı zamanlarda yapılan girişler veya bilinmeyen IP adreslerinden gelen bağlantılar gibi anormallikler, bir güvenlik tehdidinin işareti olabilir. Bu tür olayları zamanında tespit etmek, olası zararı en aza indirmek ve sisteme yönelik saldırıları durdurmak için hayati önem taşır. Ayrıca, bazı endüstri standartları ve mevzuatlar (örneğin GDPR, HIPAA) güvenlik denetimleri ve olay yanıtı için günlüklerin tutulmasını ve incelenmesini zorunlu kılar. Bu rehberde, Ubuntu sistemlerinde kimlik doğrulama günlüklerini nasıl etkin bir şekilde izleyeceğinizi, analiz edeceğinizi ve potansiyel tehditlere karşı nasıl önlem alacağınızı adım adım inceleyeceğiz.

Ubuntu’da Kimlik Doğrulama Günlüklerinin Temelleri

Ubuntu sistemlerinde kimlik doğrulama ile ilgili tüm olaylar belirli günlük dosyalarına kaydedilir. Bu dosyalar genellikle /var/log/ dizini altında bulunur ve sistemin rsyslog veya systemd-journald gibi günlükleme hizmetleri tarafından yönetilir.

Temel Günlük Dosyaları

* /var/log/auth.log: Bu dosya, tüm kimlik doğrulama ve yetkilendirme olaylarını kaydeder. Başarılı ve başarısız giriş denemeleri (yerel, SSH, FTP vb.), sudo komutlarının kullanımı, kullanıcı ekleme/silme ve diğer güvenlik olayları burada yer alır. Güvenlik izlemesi için en önemli günlük dosyalarından biridir.
* /var/log/syslog: Bu genel sistem günlüğü dosyası, sistemdeki çeşitli servislerden gelen mesajları içerir. auth.log dosyasında bulunan bilgilerin bir kısmı, özellikle daha genel bir bağlamda, syslog içinde de yer alabilir. Ancak, kimlik doğrulama odaklı izleme için auth.log daha spesifik ve kullanışlıdır.
* /var/log/kern.log: Çekirdek (kernel) ile ilgili mesajları içerir. Nadiren kimlik doğrulama bilgileri içerse de, sistemin düşük seviyeli işleyişi hakkında bilgi verebilir.
* journalctl (systemd günlükleri): Modern Ubuntu sürümleri, systemd’nin bir parçası olan journalctl‘yi kullanarak günlükleri ikili formatta tutar. Bu, geçmiş günlükleri ve sistemin belirli bir zamandaki durumunu sorgulamak için güçlü bir araçtır. journalctl ile auth.log benzeri bilgilere erişmek mümkündür.

Günlük Dosyalarının İçeriği

Kimlik doğrulama günlükleri, her olay için genellikle aşağıdaki bilgileri içerir:

* Tarih ve Saat: Olayın tam olarak ne zaman gerçekleştiği.
* Hostname: Olayın meydana geldiği sistemin adı.
* Uygulama/Servis: Olayı kaydeden uygulama veya servis (örn. sshd, sudo, login).
* İşlem Kimliği (PID): İlgili sürecin kimliği.
* Mesaj: Olayın açıklaması (örn. “Accepted password for user”, “Failed password for invalid user”, “pam_unix(sudo:session): session opened”).

Günlük Döngüsü (Log Rotation)

Günlük dosyaları zamanla çok büyük boyutlara ulaşabilir. Bunu önlemek için Ubuntu, logrotate hizmetini kullanır. logrotate, belirli bir boyuta veya zamana ulaştığında günlük dosyalarını otomatik olarak arşivler, sıkıştırır ve eski kopyalarını siler. Bu sayede disk alanı yönetimi sağlanır ve günlük dosyaları daha kolay okunabilir kalır. auth.log dosyası genellikle haftalık olarak döndürülür ve birkaç eski kopyası saklanır (örn. auth.log.1, auth.log.2.gz).

Kimlik Doğrulama Günlüklerini Manuel Olarak İnceleme

Günlük dosyalarını manuel olarak incelemek, belirli bir olayı araştırmak, şüpheli etkinlikleri hızlıca kontrol etmek veya sistemin genel güvenlik durumunu anlamak için temel bir beceridir. İşte bu amaçla kullanabileceğiniz bazı komutlar ve pratik örnekler:

Günlük Dosyalarını Görüntüleme

En temel komutlarla başlayalım:

* cat: Dosyanın tüm içeriğini ekrana basar. Büyük dosyalar için pratik değildir.

cat /var/log/auth.log

* less: Dosyanın içeriğini sayfa sayfa görüntülemenizi sağlar, arama yapma ve ileri/geri gitme imkanı sunar.

less /var/log/auth.log

* tail -f: Dosyanın sonunu gösterir ve yeni satırlar eklendikçe canlı olarak günceller. Gerçek zamanlı izleme için idealdir.

tail -f /var/log/auth.log

Bu komutu ayrı bir terminalde çalıştırarak, bir yandan sisteme giriş denemeleri yaparken veya sudo komutları kullanırken günlüklerin nasıl güncellendiğini görebilirsiniz.

Belirli Olayları Filtreleme (grep Kullanımı)

grep komutu, günlük dosyalarında belirli anahtar kelimeleri veya desenleri aramak için vazgeçilmez bir araçtır.

* Başarısız SSH Giriş Denemelerini Bulma:
Saldırganlar genellikle SSH üzerinden kaba kuvvet saldırıları düzenler. “Failed password” veya “Disconnected from invalid user” gibi mesajlar başarısız denemeleri gösterir.

grep "Failed password" /var/log/auth.log | less
    grep "Disconnected from invalid user" /var/log/auth.log | less

Belirli bir IP adresinden gelen başarısız denemeleri görmek için:

grep "Failed password" /var/log/auth.log | grep "from 192.168.1.100"

* Başarılı SSH Girişlerini Görüntüleme:
Sisteme kimlerin başarılı bir şekilde giriş yaptığını görmek önemlidir.

grep "Accepted password for" /var/log/auth.log | less
    grep "session opened for user" /var/log/auth.log | grep "sshd" | less

* sudo Komutu Kullanımını İzleme:
Hangi kullanıcıların sudo komutunu kullandığını ve hangi komutları çalıştırdığını görmek için:

grep "sudo" /var/log/auth.log | less

Bu, yetkisiz ayrıcalık yükseltme denemelerini veya olağan dışı sudo kullanımını tespit etmenize yardımcı olur.

* Kullanıcı Ekleme/Silme Olayları:
Yeni kullanıcıların veya grupların sisteme eklenmesi/silinmesi önemli güvenlik olaylarıdır.

grep "useradd" /var/log/auth.log
    grep "userdel" /var/log/auth.log
    grep "groupadd" /var/log/auth.log
    grep "groupdel" /var/log/auth.log

* PAM (Pluggable Authentication Modules) Hataları:
PAM, Linux’ta kimlik doğrulama mimarisinin temelidir. PAM hataları, kimlik doğrulama mekanizmalarındaki sorunlara işaret edebilir.

grep "PAM" /var/log/auth.log | grep "error"

Zaman Aralığına Göre Filtreleme

grep ile birlikte awk veya sed gibi araçlar kullanarak belirli bir tarih aralığındaki günlükleri filtreleyebilirsiniz. Ancak, daha basit bir yaklaşım, journalctl kullanmaktır.

* journalctl ile Belirli Zaman Aralığındaki Kimlik Doğrulama Günlüklerini Görüntüleme:
journalctl komutu, -u (unit) parametresiyle belirli bir servisin günlüklerini, --since ve --until parametreleriyle de belirli bir zaman aralığındaki günlükleri görüntülemenizi sağlar.

journalctl _SYSTEMD_UNIT=ssh.service --since "2023-10-26 00:00:00" --until "2023-10-26 23:59:59" | less
    journalctl _COMM=sshd --since "2 hours ago"

Sadece kimlik doğrulama ile ilgili mesajları görmek için:

journalctl -u systemd-logind.service --since "yesterday" | grep "session"

Veya doğrudan auth.log benzeri çıktı için:

journalctl _COMM=sshd --since "2023-10-01" | grep "Failed password"

Bu manuel inceleme teknikleri, anlık sorun giderme ve güvenlik denetimleri için temel bir başlangıç noktası sunar. Ancak büyük ölçekli sistemlerde veya sürekli izleme gereksinimlerinde otomatik araçlar daha verimli olacaktır.

Otomatik İzleme ve Uyarı Sistemleri Kurma

Manuel günlük incelemesi, anlık durumlar için faydalı olsa da, sürekli ve proaktif bir güvenlik duruşu için otomatik izleme ve uyarı sistemleri kurmak elzemdir. Bu araçlar, günlükleri otomatik olarak analiz eder, şüpheli etkinlikleri tespit eder ve yöneticilere bildirim gönderir.

1. Logwatch: Günlük Özet Raporları

Logwatch, sistem günlüklerini analiz eden ve size düzenli (genellikle günlük) bir özet raporu e-posta ile gönderen basit ama etkili bir araçtır. Kimlik doğrulama olayları da bu raporlarda yer alır.

* Kurulum:

sudo apt update
    sudo apt install logwatch

* Yapılandırma:
Logwatch’ın ana yapılandırma dosyası /etc/logwatch/conf/logwatch.conf‘tur. Buradan e-posta adresini, raporun detay seviyesini ve hangi servislerin izleneceğini ayarlayabilirsiniz.

# /etc/logwatch/conf/logwatch.conf dosyasında
    # Raporun gönderileceği e-posta adresi
    MailTo = your_email@example.com
    # Raporun detay seviyesi (Low, Med, High)
    Detail = High
    # Hangi servislerin dahil edileceğini belirtmek için (Auth'u ekleyin)
    # Service = "All" veya Service = "sshd" "auth"

* Çalıştırma ve Rapor Alma:
Logwatch genellikle cron tarafından günlük olarak çalıştırılır. Manuel olarak test etmek için:

sudo logwatch --output stdout --format text --range "yesterday" --service "auth" | less

Bu komut, dünkü kimlik doğrulama olaylarının bir özetini terminale yazdırır. E-posta yapılandırması doğruysa, günlük olarak gelen kutunuza bir rapor alırsınız.

2. Fail2ban: Kaba Kuvvet Saldırılarına Karşı Gerçek Zamanlı Koruma

Fail2ban, kaba kuvvet saldırılarına karşı en popüler ve etkili araçlardan biridir. Günlük dosyalarını gerçek zamanlı olarak izler ve belirli bir süre içinde çok sayıda başarısız giriş denemesi yapan IP adreslerini otomatik olarak güvenlik duvarında engeller.

* Kurulum:

sudo apt update
    sudo apt install fail2ban

* Yapılandırma:
Fail2ban’ın ana yapılandırma dosyası /etc/fail2ban/jail.conf‘tur, ancak güncellemelerde üzerine yazılmaması için /etc/fail2ban/jail.local dosyasını oluşturup düzenlemeniz önerilir.

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
    sudo nano /etc/fail2ban/jail.local

jail.local içinde aşağıdaki ayarları kontrol edebilirsiniz:

[DEFAULT]
    # Engellenen IP'lerin ne kadar süreyle yasaklanacağını saniye cinsinden belirtir (örn. 10 dakika)
    bantime = 600
    # Bir IP'nin yasaklanmadan önce kaç başarısız deneme yapabileceğini belirtir
    findtime = 600
    maxretry = 5
    # Yasaklanacak IP adreslerinin güvenlik duvarına eklenmesini sağlar
    banaction = iptables-multiport
    # Engellemeden muaf tutulacak IP adresleri (örneğin kendi IP adresiniz)
    ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24

    [sshd]
    enabled = true
    port = ssh
    logpath = %(sshd_log)s
    backend = %(sshd_backend)s

bantime, findtime, maxretry değerlerini kendi güvenlik politikanıza göre ayarlayabilirsiniz. [sshd] bölümünün enabled = true olduğundan emin olun.

* Hizmeti Yeniden Başlatma ve Durumunu Kontrol Etme:
Değişiklikleri uyguladıktan sonra Fail2ban hizmetini yeniden başlatın:

sudo systemctl restart fail2ban
    sudo systemctl status fail2ban

Hangi IP’lerin engellendiğini görmek için:

sudo fail2ban-client status sshd

3. Auditd: Çekirdek Seviyesi Denetim

Auditd (Linux Auditing System), çekirdek seviyesinde sistem etkinliklerini izlemek için güçlü bir araçtır. Dosya erişimleri, sistem çağrıları, komut yürütmeleri gibi olayları çok detaylı bir şekilde günlüğe kaydedebilir. Kimlik doğrulama günlükleriyle birlikte kullanıldığında, daha derinlemesine bir güvenlik görünürlüğü sağlar.

* Kurulum:

sudo apt update
    sudo apt install auditd audispd-plugins

* Kural Tanımlama:
Auditd kuralları /etc/audit/rules.d/ dizinindeki .conf dosyalarında tanımlanır. Örneğin, belirli bir kullanıcının sudo komutlarını izlemek veya hassas bir dosyaya erişimi denetlemek için bir kural oluşturabilirsiniz.

sudo nano /etc/audit/rules.d/sudo_commands.conf

İçeriği:

# Tüm sudo komutlarını izle
    -a always,exit -F arch=b64 -S execve -F euid=0 -k sudo_commands
    -a always,exit -F arch=b32 -S execve -F euid=0 -k sudo_commands

Bu kural, 64-bit ve 32-bit sistemlerde euid=0 (root) olarak çalıştırılan tüm execve (bir programı çalıştırma) sistem çağrılarını izler ve “sudo_commands” anahtarıyla işaretler.

Veya belirli bir dosyaya erişimi izlemek için:

-w /etc/shadow -p wa -k shadow_file_access

Bu kural, /etc/shadow dosyasına yazma veya öznitelik değiştirme (wa) girişimlerini izler.

* Kuralları Yükleme ve Hizmeti Yeniden Başlatma:
Kuralları kaydettikten sonra, auditd hizmetini yeniden başlatarak kuralların yüklenmesini sağlayın:

sudo systemctl restart auditd

* Günlükleri Görüntüleme:
Auditd günlükleri /var/log/audit/audit.log dosyasında bulunur. ausearch komutu ile bu günlükleri sorgulayabilirsiniz:

sudo ausearch -k sudo_commands | less
    sudo ausearch -k shadow_file_access --start yesterday

4. ELK Stack (Elasticsearch, Logstash, Kibana) / Graylog (Gelişmiş Çözümler)

Birden fazla sunucuyu izlemeniz gerektiğinde veya günlük verilerini daha derinlemesine analiz etmek, görselleştirmek ve uzun vadeli depolamak istediğinizde, merkezi günlük yönetimi çözümleri devreye girer. ELK Stack veya Graylog gibi araçlar, sunucularınızdan gelen tüm günlükleri tek bir merkezi konumda toplar, indeksler ve güçlü arama, filtreleme ve görselleştirme yetenekleri sunar. Bu çözümlerin kurulumu ve yapılandırması daha karmaşık olsa da, büyük ölçekli altyapılar için vazgeçilmezdir.

Bu otomatik sistemler, manuel günlük incelemesinin yükünü azaltırken, güvenlik olaylarına daha hızlı yanıt vermenizi ve sistemlerinizin genel güvenlik duruşunu güçlendirmenizi sağlar.

Sonuç ve Sıkça Sorulan Sorular (SSS)

Ubuntu sistemlerinde kimlik doğrulama günlüklerini izlemek, sunucularınızın güvenliğini sağlamanın temel taşlarından biridir. Bu rehberde, günlük dosyalarının nerede bulunduğunu, içerdikleri bilgileri, manuel olarak nasıl inceleneceğini ve Logwatch, Fail2ban ve Auditd gibi araçlarla otomatik izleme ve uyarı sistemlerinin nasıl kurulacağını ele aldık. Düzenli günlük incelemesi, şüpheli etkinlikleri zamanında tespit etme ve potansiyel güvenlik tehditlerine karşı proaktif önlemler alma konusunda size paha biçilmez bir avantaj sağlar. Güvenlik, sürekli bir süreçtir ve günlüklerin dikkatli bir şekilde izlenmesi, bu sürecin vazgeçilmez bir parçasıdır.

Sıkça Sorulan Sorular (SSS)

auth.log ve syslog arasındaki fark nedir?


auth.log dosyası, sisteme giriş denemeleri, sudo kullanımı, kullanıcı ekleme/silme gibi yalnızca kimlik doğrulama ve yetkilendirme ile ilgili olayları içerir. syslog ise sistemdeki çeşitli servislerden (çekirdek, uygulamalar, ağ hizmetleri vb.) gelen genel mesajları barındıran daha geniş kapsamlı bir günlük dosyasıdır. Kimlik doğrulama olayları bazen syslog‘da da bulunabilir, ancak auth.log bu tür olaylar için daha spesifik ve odaklanmış bir kaynaktır.

Günlükler ne kadar süreyle saklanır?


Günlük dosyalarının saklanma süresi logrotate yapılandırmasına bağlıdır. Varsayılan olarak, çoğu Ubuntu sisteminde günlükler haftalık olarak döndürülür ve genellikle 4 ila 7 eski sıkıştırılmış kopya saklanır. Bu, yaklaşık bir aylık geçmiş veriye erişebileceğiniz anlamına gelir. Bu ayarları /etc/logrotate.d/ dizinindeki ilgili yapılandırma dosyalarını (örn. rsyslog) düzenleyerek değiştirebilirsiniz.

Başarısız giriş denemeleri ne anlama gelir?


Bir veya iki başarısız giriş denemesi genellikle bir yazım hatası veya unutulan bir şifre olabilir. Ancak, kısa bir süre içinde çok sayıda başarısız giriş denemesi (özellikle farklı kullanıcı adları ve IP adreslerinden geliyorsa), bir kaba kuvvet saldırısı veya sözlük saldırısı girişimine işaret edebilir. Bu tür durumlar, Fail2ban gibi araçlarla otomatik olarak engellenmelidir.

fail2ban nasıl kurulur ve yapılandırılır?


Fail2ban’ı kurmak için sudo apt install fail2ban komutunu kullanın. Yapılandırmak için /etc/fail2ban/jail.local dosyasını oluşturun (genellikle jail.conf dosyasını kopyalayarak) ve bantime, findtime, maxretry gibi ayarları ve hangi servisleri korumak istediğinizi (örn. [sshd] bölümünü enabled = true yaparak) düzenleyin. Değişikliklerden sonra sudo systemctl restart fail2ban komutuyla hizmeti yeniden başlatın.

Günlük dosyaları çok büyürse ne yapmalıyım?


Günlük dosyalarının çok büyümesi, disk alanını tüketebilir ve performansı etkileyebilir. Bu durumu yönetmek için:
1. logrotate ayarlarını kontrol edin: /etc/logrotate.d/ dizinindeki ilgili yapılandırma dosyalarını inceleyin. rotate sayısı ve size parametreleri ile günlüklerin ne sıklıkta döndürüleceğini ve kaç kopyasının saklanacağını ayarlayabilirsiniz.
2. Gereksiz günlüklemeyi devre dışı bırakın: Bazı uygulamalar varsayılan olarak çok fazla bilgi günlüğe kaydedebilir. İhtiyaç duymadığınız detay seviyesini azaltmak için uygulama yapılandırmalarını kontrol edin.
3. Merkezi günlük yönetimi kullanın: Eğer birden fazla sunucunuz varsa veya günlük verilerini uzun süre saklamanız gerekiyorsa, ELK Stack veya Graylog gibi merkezi günlük çözümleri, günlükleri uzak bir sunucuya taşıyarak yerel disk alanını rahatlatır.
4. Disk alanını izleyin: df -h gibi komutlarla disk kullanımını düzenli olarak kontrol edin ve kritik eşiklere ulaşıldığında uyarı alacak bir izleme sistemi kurun.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Mobil sürümden çık