Linux Bash Aktivitelerinin Loglanması
Linux sunucularınızın güvenliği için kullanıcıların Bash kabuğunda yapmış olduğu hareketlerin yani çalıştırılan komutların kayıt altına alınmasını isteyebilirsiniz. Hatta sadece kayıt altına almak ile kalmayıp bu logları bir SIEM/Syslog sunucusuna da gönderebilirsiniz. Normalde her kullanıcının kendisine ait bir dizini olur ve genelde /home/kullaniciadi olarak otomatik olarak oluşturulur. Bu dizin altında zaten çalıştırılan komutlar .bash_history dosyasında tutulmaktadır. Fakat günün sonunda bu girdiler yeterli olmayacaktır. Aşağıdaki adımları uygulayarak bütün kullanıcıların çalıştırdığı komutlar tek bir log dosyası içinde /var/log dizini altında tutulacaktır.
Yapılandırma ayarlarına geçmeden önce çalışma yapılacak her dosyanın bir yedeğini almanızı tavsiye ediyorum.
Yapılandırma Ayarları
Yapılacak değişikliklerin bütün kullanıcılarda aktif olması için aşağıdaki dosyayı düzenleme modunda açıyoruz.
sudo -e /etc/bash.bashrc
Ve aşağıdaki satırı bash.bashrc dosyasının en sonuna ekleyip kayıt edip dosyadan çıkıyoruz.
export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'
Yeni bir dosyayla “local6” için log kaydı oluşturuyoruz. Böyle bir dosya olmadığı için dosyanın içinde herhangi bir girdi bulunmayacaktır.
sudo -e /etc/rsyslog.d/bash.conf
bash.conf dosyasının içine aşağıdaki satırı ekleyip kayıt ettikten sonra dosyadan çıkalım.
local6.* /var/log/komutlar.log
Log rotasyonu için aşağıdaki dosya üzerinde düzenleme yapmamız gerekmektedir.
sudo -e /etc/logrotate.d/rsyslog
Dosyayı açtığımızda bazı log dosyaları için hali hazırda rotasyonunun tanımlandığını göreceğiz.
/var/log/mail.warn /var/log/mail.err [...] /var/log/message
Aşağıdaki satırı /var/log/message satırının hemen altına ekleyip kayıt edebilirsiniz.
/var/log/komutlar.log
Son olarak yapılan değişikliklerin geçerli olması için rsyslog servisi yeniden başlatılmalıdır.
sudo service rsyslog restart
Sunucu üzerinde bir kaç komut çalıştıralım ve tail -f /var/log/komutlar.log dosyasının içeriğini kontrol edelim.
[email protected]:/var/log# tail -f komutlar.log Dec 27 20:05:24 ubuntu-4gb-fsn1-1 root: root [22111]: cat komutlar.log [0] Dec 27 20:35:56 ubuntu-4gb-fsn1-1 root: root [22111]: cat komutlar.log [0] Dec 27 20:35:57 ubuntu-4gb-fsn1-1 root: message repeated 2 times: [ root [22111]: cat komutlar.log [0]] Dec 27 22:16:40 ubuntu-4gb-fsn1-1 root: root [22469]: exit [0] Dec 27 22:16:50 ubuntu-4gb-fsn1-1 root: root [22469]: cd /var/log [0] Dec 27 22:17:22 ubuntu-4gb-fsn1-1 root: root [22469]: tail -f komutlar.log [130] Dec 27 22:17:24 ubuntu-4gb-fsn1-1 root: root [22469]: ifconfig [0] Dec 27 22:17:33 ubuntu-4gb-fsn1-1 root: root [22469]: cat /etc/ssh/sshd_config [0] Dec 27 22:17:35 ubuntu-4gb-fsn1-1 root: message repeated 10 times: [ root [22469]: cat /etc/ssh/sshd_config [0]] Dec 27 22:17:35 ubuntu-4gb-fsn1-1 root: root [22469]: clear [0]
Görüldüğü üzere yapılandırmamızda herhangi bir sorun gözükmemektedir. Çalıştırmış olduğum her komutu komutlar.log dosyasında görüntüleyebilmekteyim.
Dilerseniz ilgili log dosyasında bulunan kayıtlar SIEM / Syslog sunucusuna da gönderebilir. Çalıştırılmasını sakıncalı bulduğunuz komutlar için alarm kuralları hazırlayabilirsiniz. Bu sayede Linux sistemleriniz üzerinde farkındalığınız artmış olacaktır.
Ayrıca SSH bağlantılarını daha güvenli hale getirmek isterseniz önceden yazmış olduğum aşağıdaki yazılara göz atabilirsiniz.
SSH (Secure Shell) Güvenliği için Sıkılaştırma (Hardening)
İki Faktörlü Kimlik Doğrulama (2FA) ile SSH Güvenliği