rsyslog; log kaydet ve gönder


Merhabalar,

Bu gönderide dışardan gelen bir logu ayrı bir dosyaya atıp aynı zamanda farklı bir sunucuya gönderme işlemini konu alacağız.

Durum şu bir istemciden rsyslog sunucusuna bir log geliyor. rsyslog sunucusu bunu alıp istemcinin ipsi ile belirlenmis bir dosyaya yazacak ve aynı zamanda bu log kaydını başka bir sunucuya gönderecek.

Malumunuzdur ki rsyslog istemci vs hepsi linux tabanlı ve rsyslog sunucusu 8.2+ üstü bir versiyona sahip.

İşlem oldukça basit ama bulması uygulaması sorun olabiliyor.

Rsyslog iki tür yazım dizisine sahip yeni sürüm yazım şekliyle alttaki yönergeleri eklediğimizde istediğimiz sonuca ulaşabiliriz. Yazım stili farklı geliyor olabilir dert etmeyin kopyalayın yapıştırın çalışır.

# sunucu modunda gelen loglari 514 portundan dinlemek icin bu yonergeleri ekle
module(load="imudp")
input(type="imudp" port="514" ruleset="RemoteDevice")

# Log dosyasina yazildiktan sonra bu gelen loglari yonlendirmek icin belirtilen yonergeleri ekle
ruleset(name="sendToLogserver") {
    action(type="omfwd" Target="10.10.10.50" Port="514")
}

# gelen loglari ip lere gore olusturdugun dosyalarda sakla
template(name="DynFile" type="string" string="/var/log/CLIENTS/system-%FROMHOST-IP%.log")

# RemoteDevice ile tagledigimiz disardan gelen loglari DynFile ile belirtilen yere yaz sonra call ile forward et sonrada islemi burada stop ile kes.<span 				data-mce-type="bookmark" 				id="mce_SELREST_start" 				data-mce-style="overflow:hidden;line-height:0" 				style="overflow:hidden;line-height:0" 			></span>
ruleset(name="RemoteDevice"){
       action(type="omfile" dynaFile="DynFile")
	call sendToLogserver
	stop
}

Not: bu yönergeleri GLOBAL DIRECTIVES adli bölümden önce ekleyiniz.

Reklamlar

pam_exec ile oturum açma işlemlerinde özel loglama


Elimizde bir uygulama var. Bu uygulama logları parçalayarak kendi işini görmekte. Fakat istedigi temel bir kaç bilgi var. Örneğin SSH bağlantısı yapıldığında log oluşacak fakat oluşan log da makinenin ip si bir anahtar kelime ve kullanıcı adına ihtiyaç var. Ya da masaüstüne oturum açıldığında benzer bilgilere ihtiyaç duyuluyor.

gel gör ki ssh logunun formatı kısıtlı ve belli ki her istenilen log aynı formatta olması mümkün değil. Formatı da geçtik içerikte farklı olabilir. Bizde naptık… Kendi logumuzu kendimiz basalım ve bunu en kolay olabilecek şekilde yapalım dedik.

Bu minvalde araştırma yaparken artık her bilgi bizi PAM a yönlendirmeye başladı. Eğer login logout olduğumda istediğim log u basabilirsem problem düzelecekti. Bizde öyle yaptık ve pam_exec ile bu işlemi gerçekleştirdik.

Linux /etc/pam.d klasörünün altına bakarsanız bir sürü pam desteği olan uygulama görürsünüz. Bizim ilgilendiğimiz uygulamalar SSH bağlantıları için “/etc/pam.d/sshd” ve Gnome masaüstü oturum açma uygulaması için ise “/etc/pam.d/gdm-password”

Mantık şu. Oturum(session) açıldığında “Authorization Success..” ve oturum kapatıldığında ise “Logout …” mesajı merkezi log sunucumuza gönderilecek.

Bu nedenle istediğimiz işlemleri gerçekleştiren bir betik yazdık aşağıdaki gibi.
Bu bash scriptini /etc/ altına .logsend diye kaydettik ve chmod +x ile çalıştırılabilir hale getirdik.

#!/bin/bash
logserver="10.20.30.65"
port="514"
host="`hostname`"
ip="`hostname -I`"
msg="<14>"

# Eger PAM aksiyon tipi close_session degilse basarili mesaji olustur. Eger open session degilse oturum kapatıldi mesaji olusturu ve bunu nc ile rsyslog sunucusuna gönder
if [ "$PAM_TYPE" != "close_session" ]; then
   msg+="Authorization Succeed, $PAM_SERVICE Session Started: User:$PAM_USER from
   RHost:$PAM_RHOST on Host:$host Ip:$ip"
elif [ "$PAM_TYPE" != "open_session" ]; then
   msg+="Logout, $PAM_SERVICE Session Closed: User:$PAM_USER from
   RHost:$PAM_RHOST on Host:$host Ip:$ip"
fi
echo "$msg" | nc -u -v -w 0.1 $logserver $port

Sonra gidip /etc/pam.d/sshd ve /etc/pam.d/gdm-password dosyalarına girip alttaki satırı ekledik.

session optional pam_exec.so stdout /etc/.logsend

Herhangi bir şeyi restart etmenize gerek yok. Test için 10.20.30.65 ip li makineye gidiniz ve alttaki komut ile gelen mesajlari görebilirsiniz(login logout olmayı unutmayın istemci makinede).

nc -l 514 -u

İyi Çalışmalar