Derinlemesine Yolculuk:Terminal Üzerinde Apache Log İncelemesi

Merhaba arkadaşlar öncelikle bu blog yazım da siz değerli okurlarıma terminal üzerinden Apache Access Log dosyasının içerisindeki logları incelemeye çalışacağım. Keyifli okumalar diliyorum.

Derinlemesine Yolculuk:Terminal Üzerinde Apache Log İncelemesi

İlk olarak log dosyasını yapısını öğrenmek için log dosyasının head ve tail komutu kullanarak okuyabiliriz.

'head' komutu bize dosya içerisindeki ilk 10 satırı getiremektedir.

'tail' komutu ise bize son 10 satırı getirmekle beraber –n parametresi ile istediğimiz satır sayısında ekrana çıktı yazdırabiliriz.

Canlı bir sistem logunu okumak istersek –f parametresi ile tail komutu anlık güncellemeler yaparak yeni oluşan logları görebilmemize imkan sağlayabilir.

'cat' komutu ile de dosyanın içerisinde bulunan verilerin tamamını okuyabiliriz.

Yukarıda ki görsellerde de gördüğümüz üzere logların yapısını bilgi alabiliriz.

Yukardaki çıktıların sonuçlarını log dosyamızı nasıl bölümlere ayracağımızı tespit etmek için kullanacağız. Loglarımızı biraz daha anlamlı hale getirmek bölümlere ayırıyoruz.

Bunu yapabilmek için linux üzerinde bulunan 'cut' komutunu kullanıyoruz. 'cut' komutu bir dosya içerisinde ki verileri istediğimiz gibi parçalara ayırma imkanı sağlar.

Komutumuz ile beraber parametre olarak  –d parametresi ile nasıl bölümleme yapmak istediğimizi belirtiyoruz örneğin “/” veya “-” gibi parametreler verebiliriz.

Bu örnekte  space“ (" ")  parametresini kullanıyorum.Bu parametre ile beraber aradığımız log bölümünü bulabilmek için –f parametresini kullanıyoruz ve komutumuz son hali aşağıda ki gibi oluyor

cat <log_dosyası> | cut –d “ ” –f 1 

Örnekte kullandığım komutta log dosyasının içerisinde bulunan IP adreslerini çekiyoruz.

Bu komutu çalıştırdığımızda bir sorun ile karşılaşıyoruz bir IP adresinin birden fazla kez tekrar ediyor.

Bu sorunu düzeltebilmek için sort komutunu kullanabiliriz.

Sort komutu IP’ler arasında eşleştirme yaparak ekranda daha düzenli halde görmemizi sağlıyor fakat linux işletim sistemi tekilleştirme işlemi gerçekleştiremez.

Linux işletim sistemi seçtiği satırdaki IP adresiyle sadece bir altındaki IP adresini karşılaştırarak sıralama yapar. Alt satırdaki diğer IP adresleriyle karşılaştırma yaparak sıraya koymuyor.

Bu sorunumuzun çözümü olarak karşılaştırma işlemi yapmak için ise uniq komutunu kullanıyoruz.

Bu iplerden kaç istek geldiğini sayması içinde ekstra olarak –c parametresini kullanıyoruz.

Böylece bize en çok istek atan IP'leri tespit edebiliriz. Komutumuzun son hali aşağıdaki gibi oluyor;

cat <log_dosyası> | cut –d “ ” –f 1 |sort |uniq –c

Bu işlemlerimizin sonucunda da bir sorun olduğunu gözlemliyoruz.

Sistem insani bir algortimayla değil makina algoritmalarıyla sıralama işemi yapıyor örnek veremek gerekirse 1 ve 100 gibi sayılar aynı sıralamada yer alıyor.

Bu durumu düzeltebilmek için son olarak sort –h parametresini ekliyoruz.

Bu parametre insani algoritma mantığıyla  sıralama yapmamızı sağlıyor

Bu işelmler ile beraber IP adreslerini unutmamak için kaydedebiliriz bunun için çıktıytı yönlendirerek;  ">>" operotörü ile bir txt dosyasına yazdırabiliriz.Komutumuzun son hali aşağıdaki gibi oluyor;

cat <log_dosyası> | cut –d “ ” –f 1 |sort |uniq –c |sort –h 

cat <log_dosyası> | cut –d “ ” –f 1 |sort |uniq –c |sort –h >> ip.txt

İşlemlerimizin devamında ise yukarıdaki komutta kullandığımız  cut komutunun -f parametre değerini değiştirerek en fazla istek gelen dizinleri tespit ediyoruz.

cat <log_dosyası>| cut –d “ ” –f 7 |sort | uniq –c |sort –h

İşlemleri yaptığımızda tespit ettiğimiz IP adresleri için grep komutu ile sadece belirlediğim IP adresinin gönderdiği istekleri kontrol ediyoruz.

cat <log_dosyası> | grep | cut –d “ ” –f 7

Böylelikle en çok istek atan ipleri sıralı bir şekilde elde ediyoruz.

Bu IP adreslerinin isteklerini kontrol etmeye başlıyoruz.

Log dosyasının içerisinden sadece bu dosyalara ait bilgileri alabilmek için grep komutunu kullanıyoruz.

Bu komut bizim istediğimiz kelimeyi terminal üzerinde istediğimiz şekilde aramamızı sağlayacaktır.

Bu arama için komutlarımızı şu şekilde tekrar değiştirip kullanıyoruz;

cat <log_dosyası> | grep | cut –d “ ” –f 7

Bu komut ile bu ip adresinin ulaşmaya çalıştığı dizinleri ve isteklerini kolay bir şekilde görebiliyoruz.

Bu komutu farklı şekillerde de kullanıp tüm IP adresleri için bu işlemin tespitini en çok istek atılan dizinleri tepsit edebiliriz.

Ben bu örnekte bir ip adresinin dizin taraması ve bazı saldırı denemeleri yaptığını tespit ediyorum.

Bu ip adresi ile ilgili bilgi toplamaya başlıyorum ve bu ip adresi ile ilgili whois komutu ile sorgu gerçekleştiriyorum.

Son olarak ip adresinin gerçek bir sisteme ait olduğunu intel bir işletim olduğunu mozilla üzerinden istek gönderildiğini sürüm bilgileri vb. gibi bilgileri elde ediyoruz.

Diğer ip adresleri için de whois sorgusunu bash script yardımıyla otomotize bir şekilde gerçekleştiriyorum.

İncelememi bitiriyorum . İyi çalışmalar dilerim.

I am studying Forensic Informatics Engineering at Firat University. I am a three-year student who actively enjoys working in communities, is compatible with teamwork, open to learning, participates in trainings and conferences, and takes an active part in community work. I have been interested in cybersecurity for more than 2 years and have been dealing with CTF and similar issues. I am interested in system analysis and log analysis. I am working in the pentest field and also improving myself in the network field.

Tepkiniz nedir?

like

dislike

funny