Register Now

Login

Lost Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Login

Register Now

Canyoupwn.me ~

TR | Linux Bash Aktivitelerinin Loglanması

Linux sunucumuzda birden fazla kullanıcı erişim yetkisine sahip ise bütün kullanıcıların aktivite kaydını tutmak isteyebiliriz.

Evet  .bash_history altında kayıt ediliyor fakat yeteri kadar güvenli değil. Anında kayıt olmuyor ve sistem çöktüğünde ya da istenmeyen şekilde bash oturumu sona erese kayıtlara ulaşamayabiliriz.

Bash aktivite loglarını olası bir istenmeyen durum karşısında incelemek için log sunucumuza göndermemiz daha sağlıklı olacaktır ve önce kaydımızı alıp sonra yazdığımız komutun işletilmesini sağlayacağız.

 

Herhangi bir metin düzenleme editorü  ile /etc/bash.bashrc  açalım. Ben direk düzenleme modu ile açıyorum.

sudo -e /etc/bash.bashrc

Daha sonra aşağıdaki satırı ekleyelim.

export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'

Ve kayıt edip çıkalım.

Screenshot from 2016-09-01 15-02-26

 

Şİmdi log dosyasını kayıt yolunu ve dosya adını ayarlayalım. /etc/syslog.conf   herhangi bir metin editörü ile açalım.

sudo -e /etc/syslog.conf

Ve aşağıdaki satırı ekleyelim

 local6.*                /var/log/bashaktivite.log

 

Screenshot from 2016-09-01 15-37-09

Ve kayıt edelim çıkalım.

Log dosyamızın kullanıcıların müdahale etmesini engellemek için izinleri değiştirmeyi unutmayalım

sudo chattr +a /var/log/bashaktivite.log

Son olarak log servisimizi yeniden başlatalım.

systemctl restart rsyslog.service

Her şey tamam şimdi /var/log/bashaktivite.log log dosyamızı açarak kayıtları görebiliriz.

cat /var/log/bashaktivite.log

Screenshot from 2016-09-01 15-49-54

 

 

Komutu tanıyalım

logger -p local6.debug "CMDAUDIT EVENT! $(whoami):[$(id -u)]:[$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"

“PROMPT_COMMAND”   Adında ortam değikenimiz var. Bu değişken bash çıktısı vermeden önce işlemin yürütülmesini sağlıyor

RETRN_VAL=$?  Kodumuzu değişkene atıyoruz

$(whoami) işlemi yapan kullancı adı

[$$]  Mevcut shell PID. Eğer aynı kullanıcıya ait başka oturumlar varsa bunları ayırt edebiliriz.

$(history 1 | sed “s/^[ ]*[0-9]\+[ ]*//” )  Son çalıştırdığımız komutu sed ile index ve boşlukları silerek gösterir.

[$RETRN_VAL] Dönüş değerimiz.

Log dosyasını daha detaylı hale getirmek için loglanmasını istediğiniz değişkeni ekleyebilirsiniz.

 

Son olarak unutmadan sunucumuz kendi halinde değilse sürekli işlem yapıyorsak log dosyamız baya şişecektir bunun önüne geçmek için log rotate yapmamız gerek.

sudo -e /etc/logrotate.d/rsyslog

Açalım ve log dosyamızı buraya ekleyelim

Screenshot from 2016-09-01 16-28-03


About Gökay Atar

nothing

Follow Me