Selamlar arkadaşlar bu yazımda sizlere Graylog üzerinde TLS seçenekleri aktif edilmiş bir Input oluşturacağım. Sonrasında Self-Signed sertifika oluşturup, Input’umuz ve NXLog programımıza ekleyeceğim. Bu sayede TLS ile log gönderimi sağlamış olacağız.
Bunları yaparken Graylog sunucunuzun hazır olduğunu varsayıyorum arkadaşlar.
NXLog’un dökümanlarından yararlanarak yaptım arkadaşlar sizde kontrol etmek isterseniz buraya tıklayarak ulaşabilirsiniz.
– İlk olarak Graylog üzerinde Input oluşturuyorum :
Graylog, Inputlar sayesinde logları toplar ve sisteminizde bulunan her Protokol ve Log Formatına göre ayrı Inputlar oluşturmanız gerekmektedir. Aşağıdaki adımları izleyerek GELF TCP bir Input oluşturacaksınız. Aynı şekilde Syslog UDP vb. Inputlarda oluşturabilirsiniz.
System / Inputs alanına tıklıyorum ve Inputs’u seçiyorum. Sonrasında açılır kutudan GELF TCP seçiyorum ve Launch new input tuşuna basıyorum.
Açılan pencerede Node alanı zaten yüklü olan bir adet node’um olduğundan dolayı varsayılan seçili. Title alanına TLS GELF TCP adını verdim. Bind address kısmını 0.0.0.0 olarak bıraktım ki tüm adreslerden log toplasın. Port kısmında ise numarasını 10500 yaptım ve Launch Input tuşuna tıklayarak kayıt ediyorum.
Input’umuz yukarıdaki gibi görünecektir. Oluşturma işlemi tamamlandı. Input içerisinde değişiklik yapmak isterseniz More Actions > Edit Input yolunu izlemelisiniz. Yazımın devamında bu kısmı kullanacağız o yüzden göstermek istedim.
– Self Signed Certificate Oluşturma :
İlk olarak Windows 11 kullandığım için OpenSSL’i msi olarak indireceğim. Buraya tıklayarak indirdiğim siteye ulaşabilirsiniz.
Bir Sertifika Yetkilisi (CA) sertifikasına ihtiyacımız olduğundan dolayı ilk olarak aşağıdaki kodları çalıştırılarak rootCA.key ve rootCA.pem dosyalarımızı oluştururuz.
Cmd ekranında ilk olarak cd komutu ile OpenSSL’in yüklü olduğu dosyaya gideriz ve ardından CA için gerekli dosyaları oluşturur ve bizden istenen bilgileri girerek işlemi bitiririz.
> cd C:\Program Files\OpenSSL-Win64\bin
> openssl genrsa -out C:\Users\Semih\Desktop\sertifikalar\rootCA.key 2048
> openssl req -x509 -new -nodes -key C:\Users\Semih\Desktop\sertifikalar\rootCA.key -sha256 -days 730 -out C:\Users\Semih\Desktop\sertifikalar\rootCA.pem
Dosyalarımı oluştururken istediğim klasöre oluşması için önlerine dosya path’ini yazdım. Sizde bu şekilde kullanabilirsiniz.
Bu aşağıda verdiğim kodları sertifikaları tamamlamak için hem Graylog serverınız için, hemde NXLog programınız için uygulayacak ve sertifikalarınızı oluşturacaksınız.
Aşağıdaki kodları adım adım çalıştırarak cihazlarımız için sertifika dosyası oluşturalım. Unutmayın bunları iki sertifika içinde yapacaksınız.
> openssl genrsa -out C:\Users\Semih\Desktop\sertifikalar\graylog.key 2048
> openssl req -new -key C:\Users\Semih\Desktop\sertifikalar\graylog.key -out C:\Users\Semih\Desktop\sertifikalar\graylog.csr
> openssl x509 -req -in C:\Users\Semih\Desktop\sertifikalar\graylog.csr -CA C:\Users\Semih\Desktop\sertifikalar\rootCA.pem -CAkey C:\Users\Semih\Desktop\sertifikalar\rootCA.key -CAcreateserial -out C:\Users\Semih\Desktop\sertifikalar\graylog.crt -days 500 -sha256
Kodlarımızı tamamen çalıştırdıktan sonra yukarıdaki şekilde olduğu gibi Graylog, NXLog ve RootCA dosyalarınızı oluşturmuş olacaksınız.
– Graylog’da Oluşturduğumuz Input’ta TLS Aktifleştireceğiz :
İlk olarak oluşturmuş olduğunuz sertifikaları Graylog sunucunuza atmalısınız. Ben bu işlemi yaparken WinScp programı ile dosyalarımı aktarıyorum bana bu yol basit geldiği için bu şekilde yapıyorum. Sizde WinScp kullanarak yapmak isterseniz buraya tıklayarak indirebilirsiniz.
Sertifikalar adında bir klasör oluşturdum, WinScp ile sertifikalarımı bu klasöre atıyorum. Daha sonra /etc/graylog/server yolu altında bir tls dosyası oluşturuyorum ve izinlerini -R ile 777 olarak ayarlıyorum. Daha sonra cp komudu ile bu klasöre sertifikalarımı kopyalıyorum.
> mkdir /etc/graylog/server/tls
> chmod -R 777 /etc/graylog/server/tls
> cp sertifikalar/* /etc/graylog/server/tls/
Daha sonra yukarıda yazdığım gibi Input’umuza gidip Edit Input yapıyorum.
TLS cert file, TLS private key file ve TLS Client Auth Trusted Certs alanları dosyalarınızın yollarını full path olarak yazmalısınız. Enable TLS kutucuğunu işaretlemeli, TLS key password alanını belirlediğiniz parola ile doldurmalısınız ve TLS client authentication alanını ise required olarak belirlemelisiniz.
Daha sonra Update Input ile kayıt etmelisiniz.
NOT : Graylog servis kullanıcısı oluşturmuş olduğumuz sertifikalara erişim için izini olmalıdır. Biz full yetki verdiğimiz için klasöre bu sorun olmayacaktır.
– NXLog TLS ayarlamaları :
İlk olarak aşağıdaki komutlar yardımıyla pathlerini yazdığım alanda certs adında klasör oluşturdum ve izinlerini belirledim. Daha sonra sertifikalarımı içerisine attım. Bu işlemleri ise Ubuntu 22.04 üzerinde yaptım. Tabi ki öncesinde NXLog cihazımda yüklüydü.
> mkdir /etc/nxlog/certs
> chmod -R 777 /etc/nxlog/certs
> cp certs/* /etc/nxlog/certs/
> ll /etc/nxlog/certs/
Artık Ubuntum içerisinde sertifika dosyalarım var.
Bu kısımda kendi conf. dosyamı düzenleme şeklimle ilgili yazacağım. NXLog conf dosyası /etc/nxlog/nxlog.conf yolundadır.
İlk olarak dosyamın içerisinde bulunan User alanından bahsedeceğim. Nxlog user’ı ile NXLog programımız çalışıyor ve Conf. dosyamın ileriki satırlarında göreceğiniz gibi Ubuntu içerisinde auth.log ve syslog dosyalarındaki logları Graylog’a atacağımdan dolayı bu dosyaların tam yollarına sorun yaşamamak adına aşağıdaki komutu çalıştırarak full izin veriyorum.
> chmod -R 777 /var/log/syslog
> chmod -R 777 /var/log/auth.log
Modules alanında ise Extension alanında xm_gelf ile logları gelf formatında alacağımı belirttim.
Input’lar ile auth.log ve syslog dosyalarımdan logları göndereceğimi belirttim
Output alanında ise module om_ssl yaparak ssl bağlantı sağlayacağımı, Host ve Port ile hangi Graylog servera hangi porttan logları göndereceğimi belirttim.
Sonrasında ise CertFile, CertKeyFile, KeyPass ve CAFile alanları ile sertifikalarımın yollarını belirttim. Bu kodları aşağıda da bulabilirsiniz.
########################################
# Modules #
########################################
<Extension _syslog>
Module xm_gelf
</Extension>
<Input in1>
Module im_file
File "/var/log/auth.log"
SavePos TRUE
ReadFromLast TRUE
</Input>
<Input in2>
Module im_file
File "/var/log/syslog"
SavePos TRUE
ReadFromLast TRUE
</Input>
<Processor buffer>
Module pm_buffer
MaxSize 512000
Type disk
</Processor>
<Output graylog_ssl>
Module om_ssl
Host 192.168.0.22
Port 10500
OutputType GELF_TCP
Exec $ShortMessage = $raw_event;
CertFile /etc/nxlog/certs/nxlog.crt
CertKeyFile /etc/nxlog/certs/nxlog.key
KeyPass Sistem123..
CAFile /etc/nxlog/certs/rootCA.pem
</Output>
Daha sonra Routes alanında ise hangi Output’a gönderileceğini seçiyorum. En sonda yazan graylog_ssl adı bizim Output ismimizdir.
########################################
# Routes #
########################################
# Route Definition
<Route 1>
Path in1,in2 => buffer => graylog_ssl
</Route>
– NXLog Conf. aktifleştirme :
Tüm işlemlerimizin ardından aşağıdaki komut ile NXLog programımıza restart atıyoruz.
> systemctl restart nxlog
> tail -f /var/log/nxlog/nxlog.log
Sonrasında ise nxlog program loglarımıda kontrol etmeye başladım. Burada gördüğünüz gibi syslog ve auth.log dosyalarında Permission denied hataları olduğundan dolayı bu dosyalara 777 full yetki vermiştim. En alt kısımda ise Successfully connected ile NXLog ve Graylog arasındaki sertifikalı bağlantının sağlandığını görebilirsiniz.
Daha sonra oluşturduğumuz Input’a gidebilir ve oradaki total gelen log’lar kısmının değiştiğini görebilir, ayrıca Show received messages alanına tıklayarak cihazlarınızdan gelen loglarıda görebilirsiniz.
KAYNAKLAR : Kaynak1 Kaynak2 Kaynak3
Bir yazımın daha sonuna geldik arkadaşlar. Umarım yararlı bir yaz olmuştur. Bana desteğinizi göstermek isterseniz YouTube üzerinde SistemDostu kanalıma abone olabilirsiniz. Ayrıca yorumlarınızı ve sorularınızıda yorumlar alanından bana iletebilirsiniz. Herkese kolaylıklar dilerim.