Rsyslog ile Kullanıcıların Bash History Bilgilerinin Log Sunucusuna Yönelendirilmesi



This content originally appeared on DEV Community and was authored by Doğukan Eren

1- Rsyslog Paketinin Kurulması

Log paylaşımı yapması istenen linux sunucuda rsyslog paketinin kurulu olup olamdığını kontrol edelim, yoksa kuralım.

Debian sistemler için:

apt install rsyslog

RPM tabanlı sistemler için

yum install rsyslog

2- Rsyslog Yapılandırmasının Yapılaması

Standart rsyslog kurulumunda yapılandırma bilgileri /etc/rsyslog.conf içinde ve /etc/rsyslog.d/ klasörünün altında .conf uzantılı dosyaların içinde yer almaktadır.

Kullanıcıların komut geçmişlerine erişmek ve yönlendirmek için birkaç konfigürasyonu yapılandırma dosyasına eklememiz gerekmektedir.

$ModLoad imfile
$InputFileName /home/*/.bash_history
$InputFileTag bash_history
$InputFileFacility local0
$InputRunFileMonitor

local0.* @<hedep-ip>:<hedep-port>

InputFileName alanı yönlendireilecek dosya veya logu ifade etmektedir ve wildcard kullanarak tüm kulanıcıların geçmiş bilgilerini kendi ev dizinlerinin altında tutan dosya olan .bash_history dosyasının içeriğini aktarmış olacağız.

Mevcut konfigürasyon TCP olarak yönlendirme yapmak üzerine ayarladık. Sonda yazdığımız @ yerine @@ olacak şekilde biçimlendirerek UDP olarak yönlendirme yapabiliriz.

Bu aşamada rsyslog servisi kullanıcıların home dizinini okumak isteyecek ancak yetkisi olamdığı için başarısız olacaktır.

/etc/rsyslog.conf dosyası içinde bulunan aşağıdaki alanları bu şekilde değiştirerek veya mevcut servis kullanıcısının kullanıcılarım ev dizinine ve geçmiş dosyasına erişim izni vererek sorun giderilebilir.

$FileOwner root
$FileGroup root
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$PrivDropToUser root
$PrivDropToGroup root
  1. Servisi Yeniden Başlatma ve Kontrol Sağlanması
systemctl restart rsyslog

Kontrol etmek için de log sunucunuzun loglarını kontrol edebliirsiniz.

Not: Log sunucunuzun logları dinlediği porta log yönlendirecek olan sunucunuzun ağ olarak erişimi olması gerekmektedir, bunun kontrolünü tcp için aşağıdaki şekilde gerçekleştirebilirsiniz.

telnet <log_sunucu_ip>:<port>

UDP için ise

nc -vzu <log_sunucusu> <port>

Ek Bilgi

Log sunucunuz yok ise bir sunucuya rsyslog paketini kurup aşağıdaki gibi konfigürasyonu /etc/rsyslog.conf içine kaydedip servisi yeniden başlatıp test işlemini gerçekleştirebilirsiniz.

module(load="imudp")
input(type="imudp" port="514")

$AllowedSender UDP, <sender ip adresi>

$template histor,"/tmp/test"
*.* ?test


This content originally appeared on DEV Community and was authored by Doğukan Eren