Sözlük manası incelemek, denetlemek olan audit kelimesi, işletim sistemlerinde kullanıcı ve sistem aktivitelerinin kayıt altına tutulup ileriye dönük inceleme yapılabilmesine olanak sağlayan bir altyapıdır. Her işletim sisteminin kendine ait bir audit alt yapısı mevcuttur.
Audit logları Unix sistemlerde üzerinde yapılan (erişim,silme,yaratma vb.) gibi işlemlerin kayıt altına almaktadır. *nix sistemlerde özellikle güvenlik ile ilgili hangi kullanıcın hangi işlemleri ne zaman yaptığını kernel seviyesi dahil kayıt altına alan bir denetleme mekanizmasıdır. Bu loglar sayesinde cihazlarda oluşan kullanıcı aktiviteleri takip edilebilir ve gerektiği durumlarda aksiyon alınabilir.
Her audit işlemi işletim sistemi çekirdeğini meşgul edebilir. Bu yüzden audit yapılacak bileşenlerin dikkatli seçilmesi gerekmektedir. Linux audit sistemi aşağıdaki 4 bileşenden oluşur ;
1. Sistemlerde oluşan çekirdek olaylarının (syscall) toplanması ve de audit altyapısını kullanan kullanıcı programların loglaması için bir altyapı
2. Audit sisteminin yapılandırma dosyaları (/etc/audit/auditd.conf ve /etc/audit/auditd.rules)
3. Her bir audit olayının sistemde okunabilir halde durduğu dosya ( /var/log/audit/audit.log)
4. Binary olan audit loglarını incelemek için yardımcı programlar.
/etc/audit/auditd.conf dosyasında oluşan log dosyalarının rotasyon süresi, log dosyalarının boyutu gibi konfigürsayonlar yapılmaktadır.
/etc/audit/audit.rules dosyasında ise hangi eventlerin kayıt altına alınacağının konfigürsayonu yapılmaktadır.
Rsyslog 2004 yılında bir ağdaki Unix ve benzeri sistemlerden günlük iletileri toplamak amacı ile geliştirilmiş açık kaynak kodlu bir programdır. Rsyslog ile birden fazla Unix kaynaktan alınan log dosyalarının merkezi bir serverda (Rsyslog Server) toplanabilir. Rsyslog ile bir adet merkezi Rsyslog Server tanımlandıktan sonra diğer linux client sunuculardan yapılan konfigürasyonlar sayesinde tüm cihazların logları rsyslog server üzerinde tutulmaktadır.
Bu yazımda Centos 7.x versiyonundaki client makinelerden rsyslog server vasıtası ile log toplanmasını ve akabininde bu logların ArcSight entegresini göreceğiz.
Rsyslog Server Kurulumu
Bu merkezileştirme için öncelikle Rsyslog Server (Tüm sunuculardan gelecek logları toplayacağımız) sunucumuza rsyslog paketini indirmemiz gerekmektedir. yum install rsyslog komutu ile paketi indirebiliriz.
Paket kurulumu tamamlandıktan sonra /etc/rsyslog.conf dosyası içerisinde
UDP protokolü ile log alımı yapacak isek ;
$ModLoad imudp
$UDPServerRun 514
TCP protokolü ile log alımı yapacak isek ;
$ModLoad imtcp
$InputTCPServerRun 514
Satırlarının başındaki # karakteri silinmelidir. Çünkü # ibaresi konulduğunda bunu yorum satırı olarak algılamaktadır.
Dosya içerisinde iki protokolün de varsayılan olarak dinleyeceği port 514 olarak gelmektedir. İsteğe bağlı olarak bu portlar aynı dosya içerisinden değiştirilebilir.
Bu demo özelinde UDP 514 portunu kullanacağız.
Sonraki aşamada yine /etc/rsyslog.conf dosyası içerisinde toplanan logların Rsyslog Server üzerinde hangi dosya yolunda tutulacağını belirtmemiz gerekmektedir. Bunun için dosya içerisindeki GLOBAL DIRECTIVES ibaresinden önce şu satır girilmelidir;
$template RemoteLogs,”/var/log/%HOSTNAME%/%PROGRAMNAME%.log”
. ?RemoteLogs & ~
“/var/log/%HOSTNAME%/%PROGRAMNAME%.log” alanında logları tutmak istediğimiz alanı farklı bir path vererek değiştirebiliriz.
Bu işlemler sonrasında rsyslog servisi ayakta ise ;
“service rsyslog restart” komutu ile restart etmek gerekmektedir.
Rsyslog servisi ayakta değil ise;
“systemctl start rsyslog.service” ile servis aktif edilmelidir.
Servis çalışır hale geldikten sonra
“netstat -tulpn | grep rsyslog” ile kontrol sağlanabilir.
Rsyslog Server olarak belirlediğimiz cihaz üzerinde Firewall veya Selinux aktif ise;
Komutları ile firewall izinleri,
firewall-cmd –permanent –add-port=”VERMIŞ OLDUĞUMUZ PORT”/tcp
firewall-cmd –permanent –add-port=”VERMIŞ OLDUĞUMUZ PORT”/udp
firewall-cmd –reload
Komutları ile Selinux izinleri verilmelidir.
semanage -a -t syslogd_port_t -p udp “VERMIŞ OLDUĞUMUZ PORT”
semanage -a -t syslogd_port_t -p tcp “VERMIŞ OLDUĞUMUZ PORT”
Rsyslog Client Kurulumu
Rsyslog Server cihazımıza log gönderecek olan her makina için (Rsyslog Client) aşağıdaki adımlar uygulanmalıdır;
Client sunucumuz üzerinde de rsyslog servisinin kurulu olması gerekmektedir. yum install rsyslog
Paket kurulumu tamamlandıktan sonra /etc/rsyslog.conf dosyası içerisinde;
*. * @@remotehost:514
Satırında remote host gelecek olan yere Rsyslog Server ip veya hostname ini, 514 kısmına ise kullandığımız portu girmemiz gereklidir. Burada dikkat edilmesi gereken bir nokta da satır başında “@” UDP protokolünü, “@@” TCP protokolünü belirtmektedir.
Bu işlemler sonrasında rsyslog servisi ayakta ise ;
“service rsyslog restart” komutu ile restart etmek gerekmektedir.
Rsyslog servisi ayakta değil ise;
“systemctl start rsyslog.service” ile servis aktif edilmelidir.
Rsyslog Server cihazı üzerinde topladığımız tüm logları ArcSight üzerine alabilmek için Rsyslog Server cihazımızdan loglarının ArcSight Smart Connector e akışını gerçekleştirmemiz gerekmektedir. Bunun için ArcSight SmartConnector destekleyen bir platformda connector kurulumu gerçekleştiremiz gerekmektedir.
Desteklenen bir Windows makinesinde ArcSight SmartConnector kurulumu şu şekilde gerçekleşmektedir;
SmartConnector Setup dosyasını çalıştırıyoruz.
Ardından SmartConnector’ün kurulmasını istediğimiz dizini giriyoruz.
Core kurulum tamamlandıktan sonra yeni bir yükleme sekmesi açılmaktadır. Sekme açılmaz ise kurulumu yaptığımız path in altında current/bin içerisindeki runagentsetup çalıştırılarak ta bu ekrana erişilebilir. Örnek olarak linux sunucularda connector kurulumunda, current/bin altından runagentsetup dosyası çalıştırılması gereklidir.
Connector Tipi olarak Syslog Deamon u seçerek ilerliyoruz.
Sonrasında Syslog Connectorümüzün hangi port ve protokol u dinlemesi gerektiğini ve istersek belli iplerden gelen paketleri yakalamasını konfigüre ediyoruz.
Bu adımda ise toplanan logların hangi hedef makinelere iletileceğini belirliyoruz. Biz demomuzda ArcSight Logger a göndereceğiz.
Bu adımda SmartConnector ün hangi protokol ve portu dinleyeceğini belirtiyoruz.
Bu adımda topladığımız Linux Audit loglarını ArcSight ürün ailesindeki hangi hedefe göndereceğimiz belirtiyoruz. Bu demomuzda ArcSight Logger hedefini kullanıyor olacağız.
Logger IP-Hostname, Receiver bilgilerini giriyoruz.
Yeni gelen ekranda ise Connectorün servis ismini girmemiz gerekmektedir. Buradaki diğer alanlar isteğe bağlı olarak doldurulabilir.
Servis ismini girdikten sonra Logger ile SmartConnector arasındaki iletişimin güvenli bir şekilde sağlanabilmesi için sertifika alışverişi de tamamlandıktan sonra Exit seçeneği ile çıkıyoruz.
Connector kurulumu tamamlandıktan sonra servisini çalıştırıyoruz. Log kaybını engellemek amacı ile Connector servisi çalışır hale geldikten sonra Rsyslog Server cihazı ile arasındaki iletişimi sağlıyoruz. Bunun için Rsyslog Server cihazında /etc/rsyslog.conf dosyasına giderek buradaki
*. * @@remotehost:514 satırında remotehost yerine SmartConnector ün kurulu olduğu ip yi, UDP ise “@” TCP ise “@@” ve SmartConnectorün dinlediği portu belirtiyoruz.
Biz demomuzda kurmuş olduğumuz Connectorde de UDP 514 portunda çalıştırdığımız için bu alanı da şu şekilde düzenliyoruz.
Değişiklikleri tamamladıktan sonra
“service rsyslog restart” komutu ile servisi restart ediyoruz.
Rsyslog servisi çalışır hale geldikten sonra log akışımız başlayacaktır.
Birçok Linux cihazdan merkezileştirerek aldığımız tüm log dosyalarını ArcSight Logger üzerinde görüntüleyebilmekteyiz.
-