RHEL 7'de Sistem Günlükleri Nasıl Yönetilir (Yapılandırın, Döndürün ve Veritabanına Aktarın) - Bölüm 5


RHEL 7 sistemlerinizi güvende tutmak için, günlük dosyalarını inceleyerek bu tür sistemlerde gerçekleşen tüm etkinlikleri nasıl izleyeceğinizi bilmeniz gerekir. Böylece, herhangi bir olağandışı veya potansiyel olarak kötü amaçlı etkinliği tespit edebilecek ve sistem sorunlarını giderebilecek veya başka bir uygun eylemi gerçekleştirebileceksiniz.

RHEL 7'de, rsyslogd arka plan programı sistem günlüğe kaydetme işleminden sorumludur ve yapılandırmasını /etc/rsyslog.conf adresinden okur (bu dosya, tüm sistem günlükleri için varsayılan konumu belirtir) ve varsa /etc/rsyslog.d içindeki dosyalardan.

Rsyslogd Yapılandırması

Başlangıç için rsyslog.conf dosyasını hızlı bir şekilde incelemek yararlı olacaktır. Bu dosya 3 ana bölüme ayrılmıştır: Modüller (rsyslog modüler bir tasarım izlediği için), Global yönergeler (rsyslogd arka plan programının genel özelliklerini ayarlamak için kullanılır) ve >Kurallar'a tıklayın. Muhtemelen tahmin edeceğiniz gibi, bu son bölüm neyin günlüğe kaydedildiğini veya gösterildiğini (seçici olarak da bilinir) ve nerede olduğunu gösterir ve bu makale boyunca odak noktamız olacaktır.

rsyslog.conf dosyasındaki tipik bir satır aşağıdaki gibidir:

Yukarıdaki resimde, bir seçicinin noktalı virgülle ayrılmış bir veya daha fazla Tesis:Öncelik çiftinden oluştuğunu görebiliriz; burada Tesis mesajın türünü açıklar (görmek için RFC 3164'teki bölüm 4.1.1'e bakın). rsyslog için mevcut olanakların tam listesi) ve Öncelik, aşağıdaki açıklayıcı kelimelerden biri olabilecek ciddiyetini belirtir:

  1. hata ayıklama
  2. bilgi
  3. fark etme
  4. uyarı
  5. hata
  6. kritik
  7. uyarı
  8. ortaya çıkmak

Kendi başına bir öncelik olmasa da, yok anahtar kelimesi verilen tesisin hiçbirinde öncelik olmadığı anlamına gelir.

Not: Belirli bir öncelik, bu öncelik ve üzeri tüm iletilerin günlüğe kaydedilmesi gerektiğini belirtir. Bu nedenle, yukarıdaki örnekteki satır, rsyslogd arka plan programına, mail, 'e ait olanlar hariç, öncelikli bilgi veya daha yüksek (tesisten bağımsız olarak) tüm iletileri günlüğe kaydetmesi talimatını verir. authpriv ve cron hizmetlerini (bu tesislerden gelen hiçbir mesaj dikkate alınmayacaktır) /var/log/messages'e aktarın.

Ayrıca, hepsine aynı önceliği uygulamak için iki nokta işaretini kullanarak birden fazla tesisi gruplandırabilirsiniz. Böylece satır:

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

Olarak yeniden yazılabilir

*.info;mail,authpriv,cron.none                /var/log/messages

Başka bir deyişle, mail, authpriv ve cron olanakları gruplandırılır ve none anahtar kelimesi uygulanır. üçü.

Özel bir günlük dosyası oluşturma

Tüm daemon mesajlarını /var/log/tecmint.log'a kaydetmek için aşağıdaki satırı rsyslog.conf'a veya ayrı bir dosyaya (yönetimi daha kolay) eklememiz gerekir ) /etc/rsyslog.d içinde:

daemon.*    /var/log/tecmint.log

Arka plan programını yeniden başlatalım (hizmet adının d ile bitmediğine dikkat edin):

systemctl restart rsyslog

Ve iki rastgele arka plan programını yeniden başlatmadan önce ve sonra özel günlüğümüzün içeriğini kontrol edin:

Kendi kendine çalışma alıştırması olarak, olanaklar ve öncelikler üzerinde oynamanızı ve ek mesajları mevcut günlük dosyalarına kaydetmenizi veya önceki örnekte olduğu gibi yenilerini oluşturmanızı öneririm.

Logrotate kullanarak Günlükleri Döndürme

Günlük dosyalarının sonsuza kadar büyümesini önlemek amacıyla, günlükleri döndürmek, sıkıştırmak, kaldırmak ve alternatif olarak postayla göndermek için logrotate yardımcı programı kullanılır, böylece çok sayıda günlük dosyası oluşturan sistemlerin yönetimi kolaylaştırılır.

Önerilen Okuma: Linux'ta Logrotate Kullanarak Günlük Döndürmeyi Kurma ve Yönetme

Logrotate günlük olarak bir cron işi (/etc/cron.daily/logrotate) olarak çalışır ve yapılandırmasını /etc/logrotate adresinden okur .conf'dan ve varsa /etc/logrotate.d'de bulunan dosyalardan.

rsyslog örneğinde olduğu gibi, belirli hizmetlere ilişkin ayarları ana dosyaya ekleyebilseniz bile, her biri için ayrı yapılandırma dosyaları oluşturmak, ayarlarınızı daha iyi düzenlemenize yardımcı olacaktır.

Tipik bir logrotate.conf'a bir göz atalım:

Yukarıdaki örnekte, logrotate, /var/loh/wtmp için aşağıdaki işlemleri gerçekleştirecektir: Yalnızca ayda bir kez döndürme girişiminde bulunun, ancak yalnızca dosya en az < Strong>1 MB boyutunda, ardından izinlerin 0664 olarak ayarlandığı ve sahipliğin kullanıcı köküne ve utmp grubuna verildiği yepyeni bir günlük dosyası oluşturun. Daha sonra, döndürme yönergesinde belirtildiği gibi yalnızca bir arşivlenmiş günlüğü tutun:

Şimdi /etc/logrotate.d/httpd'de bulunan başka bir örneği ele alalım:

logrotate ayarları hakkında daha fazla bilgiyi man sayfalarında bulabilirsiniz (man logrotate ve man logrotate.conf). Okuma kolaylığınız için her iki dosya da bu makaleyle birlikte PDF formatında sağlanmıştır.

Bir sistem mühendisi olarak, /var'ın ayrı bir bölümde /< bulunup bulunmadığına bağlı olarak günlüklerin ne kadar süreyle ve hangi formatta saklanacağına karar vermek büyük ölçüde size kalmıştır. mantıksal hacim. Aksi takdirde, depolama alanından tasarruf etmek için eski günlükleri kaldırmayı gerçekten düşünebilirsiniz. Öte yandan, şirketinizin veya müşterinizin iç politikalarına göre gelecekteki güvenlik denetimleri için birden fazla günlük tutmak zorunda kalabilirsiniz.

Günlükleri Veritabanına Kaydetme

Elbette günlükleri incelemek (grep ve düzenli ifadeler gibi araçların yardımıyla bile) oldukça sıkıcı bir iş haline gelebilir. Bu nedenle, rsyslog bunları bir veritabanına aktarmamıza olanak tanır (OTB destekli RDBMS, MySQL, MariaDB, PostgreSQL ve Oracle'ı içerir.

Eğitimin bu bölümü, MariaDB sunucusunu ve istemcisini, günlüklerin yönetildiği aynı RHEL 7 kutusuna zaten yüklediğinizi varsayar:

yum update && yum install mariadb mariadb-server mariadb-client rsyslog-mysql
systemctl enable mariadb && systemctl start mariadb

Ardından, kök kullanıcı için parolayı ve diğer güvenlik hususlarını ayarlamak için mysql_secure_installation yardımcı programını kullanın:

Not: Günlük iletilerini veritabanına eklemek için MariaDB kök kullanıcısını kullanmak istemiyorsanız, başka bir kullanıcı hesabı yapılandırabilirsiniz. böyle yaparak. Bunun nasıl yapılacağının açıklanması bu eğitimin kapsamı dışındadır ancak MariaDB bilgi tabanında ayrıntılı olarak açıklanmaktadır. Bu derste basitlik açısından root hesabını kullanacağız.

Ardından GitHub'dan createDB.sql komut dosyasını indirin ve veritabanı sunucunuza aktarın:

mysql -u root -p < createDB.sql

Son olarak /etc/rsyslog.conf dosyasına aşağıdaki satırları ekleyin:

$ModLoad ommysql
$ActionOmmysqlServerPort 3306
*.* :ommysql:localhost,Syslog,root,YourPasswordHere

rsyslog'u ve veritabanı sunucusunu yeniden başlatın:

systemctl restart rsyslog 
systemctl restart mariadb

SQL sözdizimini kullanarak Günlükleri sorgulama

Şimdi günlükleri değiştirecek bazı görevleri gerçekleştirin (örneğin, hizmetleri durdurmak ve başlatmak gibi), ardından DB sunucunuzda oturum açın ve günlükleri görüntülemek ve aramak için standart SQL komutlarını kullanın:

USE Syslog;
SELECT ReceivedAt, Message FROM SystemEvents;

Özet

Bu yazımızda sistem günlüğünün nasıl ayarlanacağını, günlüklerin nasıl döndürüleceğini ve daha kolay arama için mesajların bir veritabanına nasıl yönlendirileceğini anlattık. Bu becerilerin RHCE sınavına hazırlanırken ve günlük sorumluluklarınızda da yardımcı olacağını umuyoruz.

Her zaman olduğu gibi geri bildirimleriniz memnuniyetle karşılanacaktır. Bize ulaşmak için aşağıdaki formu kullanmaktan çekinmeyin.