Linux'ta RSyslog ile Merkezi Günlük Sunucusu Nasıl Kurulur


Günlükler herhangi bir yazılım veya işletim sisteminin kritik bir bileşenidir. Günlükler genellikle amaçlanan şeye bağlı olarak kullanıcının eylemlerini, sistem olaylarını, ağ etkinliğini ve çok daha fazlasını kaydeder. Linux sistemlerinde en yaygın kullanılan günlük kaydı sistemlerinden biri rsyslog'dur.

Rsyslog, farklı kaynak türlerinden (sistemler/uygulamalar) verileri kabul eden ve bunları birden çok formatta çıkaran güçlü, güvenli ve yüksek performanslı bir günlük işleme sistemidir.

Sıradan bir syslog arka plan programından tam özellikli, kurumsal düzeyde bir günlük kaydı sistemine dönüştü. İstemci/sunucu modelinde tasarlanmıştır, dolayısıyla diğer sunucular, ağ cihazları ve uzak uygulamalar için istemci ve/veya merkezi kayıt sunucusu olarak yapılandırılabilir.

Test Ortamı

Bu kılavuzun amacı doğrultusunda aşağıdaki ana bilgisayarları kullanacağız:

  • Sunucu: 192.168.241.140
  • Müşteri: 172.31.21.58

Rsyslog Sunucusu Nasıl Kurulur ve Yapılandırılır

Çoğu Linux dağıtımı rsyslog paketi önceden yüklenmiş olarak gelir. Kurulu olmaması durumunda, gösterildiği gibi Linux paket yöneticisi aracınızı kullanarak kurabilirsiniz.

sudo yum update && yum install rsyslog 	#CentOS 7
sudo apt update && apt install rsyslog	#Ubuntu 16.04, 18.04

rsyslog yüklendikten sonra hizmeti şimdilik başlatmanız, önyükleme sırasında otomatik olarak başlatılmasını etkinleştirmeniz ve systemctl komutuyla durumunu kontrol etmeniz gerekir.

sudo systemctl start rsyslog
sudo systemctl enable rsyslog
sudo systemctl status rsyslog

Ana rsyslog yapılandırma dosyası /etc/rsyslog.conf konumunda bulunur; bu dosya, modülleri yükler, genel yönergeleri tanımlar, günlük mesajlarının işlenmesine ilişkin kuralları içerir ve ayrıca /etc içindeki tüm yapılandırma dosyalarını içerir. Çeşitli uygulamalar/hizmetler için /rsyslog.d/.

sudo vim /etc/rsyslog.conf

Varsayılan olarak rsyslog, systemd günlüğünden yapılandırılmış günlük iletilerini içe aktarmak ve sistem günlüğünü kabul etmek için imjournal ve imusock modüllerini kullanır. Unix soketleri aracılığıyla yerel sistemde çalışan uygulamalardan gelen mesajlar.

Rsyslog'u bir ağ/merkezi kayıt sunucusu olarak yapılandırmak için, uzak sistem günlüğü alımının yanı sıra uzaktan sistem günlüğü alımı için kullanacağı protokolü (UDP veya TCP veya her ikisi) ayarlamanız gerekir. dinlediği bağlantı noktası.

Daha hızlı ancak güvenilmez bir UDP bağlantısı kullanmak istiyorsanız aşağıdaki satırları arayın ve yorumlarını kaldırın (514 yerine dinlemesini istediğiniz bağlantı noktasını yazın, bu istemcilerin mesaj gönderdiği bağlantı noktası adresini eşleştirin, buna bir rsyslog istemcisini yapılandırırken daha fazla bakacağız).

$ModLoad imudp
$UDPServerRun 514

TCP bağlantısını (daha yavaş ama daha güvenilir) kullanmak için aşağıdaki satırları arayın ve yorumlarını kaldırın.

$ModLoad imtcp
$InputTCPServerRun 514

Bu durumda hem UDP hem de TCP bağlantılarını aynı anda kullanmak istiyoruz.

Daha sonra, uzak günlüklerin işlenmesine ilişkin kural kümesini aşağıdaki biçimde tanımlamanız gerekir.

facility.severity_level	destination (where to store log)

Nerede :

  • tesis: mesaj üreten süreç/uygulama türüdür; kimlik doğrulama, cron, arka plan programı, çekirdek, local0..local7'yi içerir. * kullanılması tüm olanaklar anlamına gelir.
  • severity_level: günlük mesajının türüdür: acil-0, uyarı-1, kritik-2, err-3, uyarı-4, bildirim-5, bilgi-6, hata ayıklama-7. * kullanılması, tüm önem düzeyleri anlamına gelir ve hiçbiri, herhangi bir önem düzeyi anlamına gelmez.
  • hedef: yerel dosya veya uzak rsyslog sunucusudur (IP:bağlantı noktası biçiminde tanımlanır).

RemoteLogs şablonunu kullanarak uzak ana bilgisayarlardan günlük toplamak için aşağıdaki kural kümesini kullanacağız. Bu kuralların, ekran görüntüsünde gösterildiği gibi, yerel mesajların işlenmesine ilişkin tüm kurallardan önce gelmesi gerektiğini unutmayın.

$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?RemoteLogs 
& ~

Yukarıdaki kural kümesine bakıldığında, ilk kuralın “$template RemoteLogs,”/var/log/%HOSTNAME%/%PROGRAMNAME%.log” ” olduğu görülür.

$template yönergesi, rsyslog arka plan programına, alınan tüm uzak mesajları toplayıp ana bilgisayar adınabağlı olarak /var/log altındaki farklı günlüklere yazmasını söyler. > (istemci makine adı) ve RemoteLogs şablonunda mevcut ayarlarla tanımlandığı şekilde mesajları oluşturan uzak istemci olanağı (program/uygulama).

İkinci satır “*.* ?RemoteLogs ”, RemoteLogs şablon yapılandırmasını kullanarak tüm önem düzeylerinde tüm tesislerden gelen mesajların kaydedilmesi anlamına gelir.

Son satır “& ~ ”, rsyslog'a, bir dosyaya yazıldıktan sonra mesajları işlemeyi durdurması talimatını verir. “& ~” karakterini eklemezseniz iletiler bunun yerine yerel dosyalara yazılır.

Kullanabileceğiniz başka birçok şablon vardır; daha fazla bilgi için rsyslog yapılandırma kılavuz sayfasına (man rsyslog.conf) bakın veya Rsyslog çevrimiçi belgelerine bakın.

Rsyslog sunucusunu yapılandırmak işte bu kadar. Yapılandırma dosyasını kaydedip kapatın. Son değişiklikleri uygulamak için rsyslog arka plan programını aşağıdaki komutla yeniden başlatın.

sudo systemctl restart rsyslog

Şimdi rsyslog ağ soketlerini doğrulayın. ss komutunu (veya aynı işaretlere sahip netstat) komutunu kullanın ve rsyslogd bağlantılarını filtrelemek için çıkışı grep'e yönlendirin.

sudo ss -tulnp | grep "rsyslog"

Daha sonra, CentOS 7'de, SELinux'u etkinleştirdiyseniz, ağ soketi türüne göre rsyslog trafiğine izin vermek için aşağıdaki komutları çalıştırın.

sudo semanage -a -t syslogd_port_t -p udp 514
sudo semanage -a -t syslogd_port_t -p tcp 514 

Sistemde güvenlik duvarı etkinse, çalıştırarak rsyslog sunucusuna her iki UDP/TCP bağlantısına izin vermek için 514 bağlantı noktasını açmanız gerekir.

------------- On CentOS ------------- 
sudo firewall-cmd --permanent --add-port=514/udp
sudo firewall-cmd --permanent --add-port=514/tcp
sudo firewall-cmd --reload

------------- On Ubuntu -------------
sudo ufw allow 514/udp
sudo ufw allow 514/tcp
sudo ufw reload 

RSyslog İstemcisini Günlükleri Rsyslog Sunucusuna Gönderecek Şekilde Yapılandırma

Şimdi istemci sisteminde aşağıdaki komutla rsyslog servisinin çalışıp çalışmadığını kontrol edin.

sudo systemctl status rsyslog

Yüklü değilse yükleyin ve hizmeti daha önce gösterildiği gibi başlatın.

sudo yum update && yum install rsyslog 	#CentOS 7
sudo apt update && apt install rsyslog	#Ubuntu 16.04, 18.04
sudo systemctl start rsyslog
sudo systemctl enable rsyslog
sudo systemctl status rsyslog

Rsyslog hizmeti çalışır duruma geldiğinde, varsayılan yapılandırmada değişiklik yapacağınız ana yapılandırma dosyasını açın.

sudo vim /etc/rsyslog.conf

Rsyslog arka plan programını bir günlük istemcisi gibi davranmaya ve yerel olarak oluşturulan tüm günlük mesajlarını uzak rsyslog sunucusuna iletmeye zorlamak için, aşağıdaki ekran görüntüsünde gösterildiği gibi bu iletme kuralını dosyanın sonuna ekleyin.

*. *  @@192.168.100.10:514

Yukarıdaki kural, tüm tesislerden ve tüm önem düzeylerinde mesajlar gönderecektir. Belirli bir tesisten (örneğin auth) mesaj göndermek için aşağıdaki kuralı kullanın.

auth. *  @@192.168.100.10:514

Değişiklikleri kaydedin ve yapılandırma dosyasını kapatın. Yukarıdaki ayarları uygulamak için rsyslog arka plan programını yeniden başlatın.

sudo systemctl restart rsyslog

RSyslog Sunucusunda Uzaktan Günlük Kaydı Nasıl İzlenir

Son adım, rsyslog'un gerçekten istemciden ileti alıp almadığını ve /var/log altında, anasistem adı/programadı.log biçiminde olup olmadığını doğrulamaktır.

Ana günlük dizininin uzun listelenmesi için ls komutunu çalıştırın ve ip-172.31.21.58 adında bir dizin (veya istemci makinenizin ana bilgisayar adı ne olursa olsun) olup olmadığını kontrol edin.

 
ls -l /var/log/

Dizin mevcutsa, çalıştırarak içindeki günlük dosyalarını kontrol edin.

sudo ls -l /var/log/ip-172-31-21-58/

Özet

Rsyslog, istemci/sunucu mimarisinde tasarlanmış, yüksek performanslı bir günlük işleme sistemidir. Rsyslog'u bu kılavuzda gösterildiği gibi merkezi/ağ günlük kaydı sunucusu ve istemci olarak kurup yapılandırabileceğinizi umuyoruz.

Daha fazla yardım için ilgili rsyslog kılavuz sayfalarına da başvurmak isteyebilirsiniz. Bize herhangi bir geri bildirimde bulunmaktan veya soru sormaktan çekinmeyin.