Linux: logwatch (8) çok gürültülü. Gürültü seviyesini nasıl kontrol edebilirim?


30

Linux sistemlerimiz varsayılan olarak logwatch (8) yardımcı programını çalıştırmaktadır . RedHat / CentOS / SL sisteminde, Logwatch /etc/cron.daily/cronjob tarafından çağrılır ve ardından sonuçlarla günlük bir e-posta gönderilir. Bu e-postaların şunun gibi bir konusu var

Subject: Logwatch for $HOSTNAME

Sorun, varsayılan olarak bu günlük e-postaların çok gürültülü olması ve zaten diğer servisler (Nagios, Cacti, merkezi syslog, vb.) Tarafından izlenen pek çok gereksiz bilgi (HTTP hataları, günlük disk kullanımı vb.) İçermesidir. 100 sistem için e-posta yükü dayanılmaz. İnsanlar e-postaları görmezden geliyor, bu da logwatch tarafından algılanan sorunları özleyebileceğimiz anlamına geliyor.

Logwatch tarafından oluşturulan gürültü miktarını nasıl azaltabilirim, ancak yine de bize önemli sorunları bildirmek için logwatch'ı kullanabilir miyim?

Aşağıda kendi cevabımı göndereceğim ancak başkalarının ne yaptığını görmek istiyorum.

Not : FreeBSD'de benzer bir sorum var, FreeBSD'de: periyodik (8) çok gürültülü. Gürültü seviyesini nasıl kontrol edebilirim?

Yanıtlar:


39

Genel olarak, Logwatch için mevcut belgeler yeterli açıklamadan yoksundur ve çoğu zaman çok belirsizdir. Bazı yararlı örnekleri bir araya getirdim ve Logwatch gürültüsünü% 95'in üzerinde düşürdüm.

İşte bulduğum şey.

Bazı Logwatch belgelerini bulabileceğinizi /usr/share/doc/logwatch-*/HOWTO-Customize-LogWatchve birkaç yararlı örnek içerdiğini unutmayın.

  1. RHEL / CentOS / SL’de, varsayılan logwatch yapılandırması /usr/share/logwatch/default.conf/logwatch.conf

    Yerel ayarlarınızı altına yerleştirerek bu ayarlar geçersiz kılınabilir /etc/logwatch/conf/logwatch.conf. Logwatch'a 'httpd' ve günlük disk kullanım kontrolleri gibi hizmetleri tamamen görmezden gelmesini söylemek için aşağıdaki dosyaya yerleştirin:

    # Don't spam about the following Services
    Service = "-http"
    Service = "-zz-disk_space"
    
  2. Bazen belirli bir hizmet için logwatch'ı tamamen devre dışı bırakmak istemiyorum, sonuçları daha az gürültülü yapmak için ince ayar yapmak istiyorum. /usr/share/logwatch/default.conf/services/*.confServisler için varsayılan konfigürasyonu içerir. Yerel konfigürasyonunuzu altına yerleştirerek bu parametreler geçersiz kılınabilir /etc/logwatch/conf/services/$SERVICE.conf. Ne yazık ki, logwatch'ın buradaki yeteneği sınırlıdır ve logwatch çalıştırılabilirlerinin çoğu belgesiz Perl ile doludur. Seçiminiz, yürütülebilir dosyayı başka bir şeyle değiştirmek veya kullanarak bazı ayarları geçersiz kılmaya çalışmaktır /etc/logwatch/conf/services.

    Örneğin, taramaları ağ üzerinden çalıştıran bir güvenlik tarayıcım var. Sınamalar çalışırken, güvenlik tarayıcısı uygulama günlüklerinde birçok hata mesajı oluşturur. Logwatch'ın güvenlik tarayıcılarımdaki hataları görmezden gelmesini istiyorum, ancak diğer ana bilgisayarlardan gelen saldırıları bildirmeme rağmen. Bu, Logwatch'da daha ayrıntılı olarak ele alınmaktadır: SSH ve PAM kontrolleri için belirli IP'leri yoksay? . Bunu yapmak için aşağıdakileri altına yerleştiririm /etc/logwatch/conf/services/sshd.conf:

    # Ignore these hosts
    *Remove = 192.168.100.1
    *Remove = X.Y.123.123
    # Ignore these usernames
    *Remove = testuser
    # Ignore other noise. Note that we need to escape the ()
    *Remove = "pam_succeed_if\(sshd:auth\): error retrieving information about user netscan.*
    

    "

  3. logwatch ayrıca düzenli ifadeleri yerleştirerek logwatch e-postalarından çıktı almanızı sağlar /etc/logwatch/conf/ignore.conf. NASIL-Özelleştir-LogWatch diyor ki:

    ignore.conf: Bu dosya, logwatch'ların çıktısı ile eşleştiğinde, hangi servisin yürütüldüğüne bakılmaksızın eşleşen satırı baskılayacak düzenli ifadeleri belirtir.

    Ancak bu konuda pek şansım olmadı. Gereksinimlerimin, 'Güvenlik tarayıcım nedeniyle güvenlik uyarıları varsa, o zaman çıktıyı yazdırmayın. Ancak, güvenlik tarayıcımdan ve bazı kötü adamlardan güvenlik uyarıları varsa , yararlı kısımları yazdırın. Kötü niyetli ana bilgisayarların IP'leri, ancak tarayıcıların IP'leri değil, "Oturum açma başarısız:" yazan başlık.

  4. Kaynağında kesin (@ user48838 tarafından önerildiği gibi). Bu mesajlar bazı uygulamalar tarafından üretiliyor ve ardından Logwatch sonuçları size mutlulukla yayıyor. Bu durumlarda, daha az oturum açmak için uygulamayı değiştirebilirsiniz.

    Bu her zaman arzu edilmez, çünkü bazen tam günlüklerin bir yere gönderilmesini istiyorsunuz (bir Central syslog sunucusuna, merkezi IDS sunucusuna, Splunk, Nagios, vb.), Ancak bu konuda size e-posta göndermek için logwatch istemezsiniz. Her sunucu, her gün.


Bu tam olarak yaptığım şeydi, ancak doğru şekilde hatırlarsam, kayıtlardan doğru şekilde ayrıştırılmayan ve bu nedenle bir tür "diğer" kategorisinde listelenen bazı hizmetler (e-posta reddetme ile ilgili bir şey olduğuna inanıyorum) ve Günlüklerdeki tüm satırlar e-posta ile gönderiliyordu. Bu son derece gürültülü oldu. Bu nedenle sadece logwatch kaynak kodunu değiştirdim ve ilgili filtreleri ekledim / değiştirdim ve e-posta başına muhtemelen 20 kb. Bu birkaç yıl önceydi, bu yüzden logwatch'ın o zamandan beri geliştiğinden eminim, ancak versiyonumun güncellenmemesi durumunda güncelleme yapmadım.
Mike,

5

Evet - logwatch genellikle çok gürültülüdür. Kontrolleri tamamen etkisiz hale getirmekten zaten bahsettin.

Bunu yapmak istemiyorsanız, belli olayların ortaya çıkmasını önlemek zorundasınız. Örneğin - nagios'un ssh ile DMZ sistemine bağlanması ilginç değil. Ancak, ssh aracılığıyla başka girişler varsa ilginçtir.

Ksyslogd yerine rsyslog kullanıyoruz (önce rsyslog'u kurun, sonra ksyslogd'u kaldırın). Rsyslog ile günlüklere neyin girip neyin girmeyeceğini ince ayar yapabilirsiniz (örneğin, sshd jetonlu "nagios bağlı" mesajlarını bırakan bir ifade oluşturun). Bu şekilde logwatch yalnızca yararlı bilgileri rapor eder.

Başka bir durum xinetd olabilir - başarılı bağlantılar hakkında bilgi almak istemiyorum - bu xinetd itselv biçiminde - xinetd için logwatch-check devre dışı bırakılmadan yapılandırılabilir.


3

Bir ilgi noktası olarak, seçenek 2'yi Stefan Lasiewski'nin cevabını kullanarak takip ettim, ancak amaçlarım için istemediğim tüm gürültüyü dışlamak yerine sadece belirli satırları dahil etmek istedim.

Oluşturduğum bu yüzden vsftpd yapılandırılması oldu /etc/logwatch/conf/services/vsftpd.confve bunun yerine böyle bir şey kullanmanın *Remove = testusermetni ekleyin satırları kaldırır hangi testuserçizgiyi kullanılan *OnlyContains = "testuser"yalnızca bu metin dahil satırları döndürür.

Bu 2 komut kullanarak çok temelde çalışmak grepve grep -v.

Aradaki fark, istediğiniz kadar kullanabilirsiniz *Remove, ancak *OnlyContainsbir şey ya da başka bir şey ya da başka bir şey istiyorsanız, yanınızda bir kez kullanmak zorunda olmanızdır. Yani yaptığınız birden fazla değer için*OnlyContains = "testuser|testuser2|testuser3"


1

E-posta durum iletilerini bir listeye, belki de boyut ve / veya süre / yaşın programlanabilir niteliklerine dayalı özetler sağlayabilecek bir huni olarak düşünmeyi düşündünüz mü? Bu yaklaşım e-postayla gönderilen günlüğe kaydetme miktarını azaltmaz, ancak e-posta sıklığını azaltmak için harmanlayarak tek tek e-postaların miktarını kontrol edebilir.


Sahibim. Ayrıca, bazı gürültüyü filtrelendiğimiz, yalnızca bir sistem günlüğü çözümü de düşündük. Ancak, sadelik için bu kaynakları kaynağında kontrol etmenin mümkün olup olmadığını görmek istedik.
Stefan Lasiewski

1
Eğer kaynağında “kıstırmayı” düşünüyorsunuz ve bunu yaparken herhangi bir aksaklığı en aza indirirseniz, o zaman mümkün olduğunda kayıt seviyelerini ayarlama çabalarını sınırlamayı düşünebilirsiniz.
user48838

0

Son zamanlarda sshd servisinin çıkışını kapatmam gerekiyordu. Bazı bölümler oldukça uzundu ve ayrıntı seviyesini ayarlayarak kontrol edilemedi.

Bu ideal bir çözüm değil, ancak sshd betiğini buradan kopyalayarak geçersiz kıldım : /usr/share/logwatch/scripts/services/sshdburaya:/etc/logwatch/scripts/services/sshd

Tabii ki, şimdi bu script dosyasındaki güncellemeleri takip etmek zorundasınız, ancak çıktıları üzerinde çok iyi bir kontrol sağlıyor. Alternatif olarak, çıktısını istediğiniz logwatchgibi çıkarmak awkveya sedistemediğiniz bir şeyi çıkarmak gibi bir araçtan geçirebilirsiniz , ama bu bana daha zor geldi.


0

Aynı soruyu UNIX ve Linux Stackexchange'te de yaptım ve işte benim için çözdüğüm cevap:

Size logwatch.conf: Range parametresini değiştirerek, logwatch'a 1 gün yerine 7 gün bakmasını söyleyebilirsiniz :

Range = between -7 days and -1 days

logwatchHaftalık cron dizininden günlük crondizine taşıyarak günlük yerine haftalık olarak çalışmasını söyleyebilirsiniz :

mv /etc/cron.daily/00logwatch /etc/cron.weekly/

@JeffSchaller sayesinde

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.