Linux: logwatch (8) มีเสียงดังเกินไป ฉันจะควบคุมระดับเสียงได้อย่างไร


30

ระบบ Linux ของเราใช้ยูทิลิตีlogwatch (8)ตามค่าเริ่มต้น ในระบบ RedHat / CentOS / SL Logwatch จะถูกเรียกโดย/etc/cron.daily/cronjob ซึ่งจะส่งอีเมลรายวันพร้อมผลลัพธ์ อีเมลเหล่านี้มีหัวเรื่องดังนี้:

Subject: Logwatch for $HOSTNAME

ปัญหาคือโดยค่าเริ่มต้นอีเมลรายวันเหล่านี้มีเสียงดังมากและมีข้อมูลที่ฟุ่มเฟือยจำนวนมาก (ข้อผิดพลาด HTTP, การใช้ดิสก์รายวัน ฯลฯ ) ซึ่งได้รับการตรวจสอบโดยบริการอื่น ๆ แล้ว (Nagios, Cacti, syslog ส่วนกลางเป็นต้น) สำหรับระบบ 100 รายการโหลดอีเมลไม่สามารถทนทานได้ ผู้คนเพิกเฉยต่ออีเมลซึ่งหมายความว่าเราอาจพลาดปัญหาที่เกิดขึ้นจากการรับชม

ฉันจะลดปริมาณเสียงที่เกิดจาก logwatch แต่ยังคงใช้ logwatch เพื่อแจ้งปัญหาที่สำคัญให้เราทราบได้อย่างไร

ฉันจะโพสต์คำตอบของฉันเองด้านล่าง แต่ฉันอยากจะเห็นสิ่งที่คนอื่นทำ

หมายเหตุ : ฉันมีคำถามที่คล้ายกันเกี่ยวกับ FreeBSD ที่FreeBSD: คาบ (8) ดังเกินไป ฉันจะควบคุมระดับเสียงได้อย่างไร

คำตอบ:


39

โดยรวมแล้วเอกสารที่มีให้สำหรับ Logwatch ไม่มีคำอธิบายที่เพียงพอและมักจะคลุมเครือเกินไป ฉันรวบรวมตัวอย่างที่เป็นประโยชน์มารวมกันและลดเสียง Logwatch ลงมากกว่า 95%

นี่คือสิ่งที่ฉันได้พบ

โปรดทราบว่าคุณสามารถค้นหาเอกสาร Logwatch ได้ที่/usr/share/doc/logwatch-*/HOWTO-Customize-LogWatchและมีตัวอย่างที่มีประโยชน์

  1. บน RHEL / CentOS / SL การกำหนดค่า logwatch เริ่มต้นอยู่ภายใต้ /usr/share/logwatch/default.conf/logwatch.conf

    /etc/logwatch/conf/logwatch.confตั้งค่าเหล่านี้สามารถแทนที่โดยการวางภายใต้การกำหนดค่าในท้องถิ่นของคุณ วางสิ่งต่อไปนี้ในไฟล์นั้นเพื่อบอก logwatch ให้ละเว้นบริการอย่างสมบูรณ์เช่น 'httpd' และการตรวจสอบการใช้งานดิสก์รายวัน:

    # Don't spam about the following Services
    Service = "-http"
    Service = "-zz-disk_space"
    
  2. บางครั้งฉันไม่ต้องการปิดใช้งาน logwatch สำหรับบริการบางอย่างโดยสมบูรณ์ฉันแค่ต้องการปรับผลลัพธ์เพื่อทำให้มีเสียงดังน้อยลง /usr/share/logwatch/default.conf/services/*.confมีการกำหนดค่าเริ่มต้นสำหรับบริการ /etc/logwatch/conf/services/$SERVICE.confพารามิเตอร์เหล่านี้สามารถจะถูกแทนที่โดยการวางภายใต้การกำหนดค่าในท้องถิ่นของคุณ น่าเสียดายที่ความสามารถของนาฬิกาข้อมือในที่นี้มี จำกัด และไฟล์บันทึกปฏิบัติการจำนวนมากนั้นเต็มไปด้วย Perl ที่ไม่มีเอกสาร /etc/logwatch/conf/servicesทางเลือกของคุณคือการเปลี่ยนการปฏิบัติการกับสิ่งอื่นหรือพยายามที่จะแทนที่การตั้งค่าโดยใช้

    ตัวอย่างเช่นฉันมีสแกนเนอร์ความปลอดภัยที่ใช้สแกนทั่วทั้งเครือข่าย ในขณะที่ทำการทดสอบเครื่องสแกนความปลอดภัยจะสร้างข้อความแสดงข้อผิดพลาดมากมายในบันทึกของแอปพลิเคชัน ฉันต้องการ logwatch เพื่อละเว้นข้อผิดพลาดจากสแกนเนอร์ความปลอดภัยของฉัน แต่ยังคงแจ้งให้ฉันทราบถึงการโจมตีจากโฮสต์อื่น ๆ ซึ่งจะกล่าวถึงรายละเอียดเพิ่มเติมที่Logwatch: ไม่สนใจ IP บางอย่างสำหรับการตรวจสอบ SSH & PAM หรือไม่ . เมื่อต้องการทำสิ่งนี้ฉันวางสิ่งต่อไปนี้ไว้ใต้/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 ยังช่วยให้คุณที่จะตัดออกเอาท์พุทจากอีเมล logwatch /etc/logwatch/conf/ignore.confโดยการวางแสดงผลปกติใน HOWTO-Customize-LogWatch พูดว่า:

    Ignition.conf: ไฟล์นี้ระบุการแสดงออกปกติที่เมื่อจับคู่กับผลลัพธ์ของ logwatch จะระงับสายการจับคู่โดยไม่คำนึงถึงบริการที่จะถูกดำเนินการ

    อย่างไรก็ตามฉันไม่ได้โชคดีอย่างนี้ ความต้องการของฉันต้องมีคำสั่งแบบมีเงื่อนไขซึ่งมีลักษณะเช่น 'หากมีคำเตือนด้านความปลอดภัยเนื่องจากเครื่องสแกนความปลอดภัยของฉันแล้วอย่าพิมพ์ผลลัพธ์ แต่ถ้ามีคำเตือนความปลอดภัยจากสแกนเนอร์รักษาความปลอดภัยของฉันและจากคนเลวบางส่วนให้พิมพ์ส่วนที่มีประโยชน์ - ส่วนหัวที่ระบุว่า "การเข้าสู่ระบบล้มเหลวจาก:", IP ของโฮสต์ที่ไม่ดี แต่ไม่ใช่ IP ของเครื่องสแกน '

  4. Nip ที่แหล่งที่มา (ตามที่แนะนำโดย @ user48838) แอปพลิเคชั่นบางส่วนกำลังสร้างข้อความเหล่านี้จากนั้น Logwatch จะส่งผลให้คุณอย่างมีความสุข ในกรณีเหล่านี้คุณสามารถปรับเปลี่ยนแอปพลิเคชันให้เข้าสู่ระบบน้อยลง

    สิ่งนี้ไม่เป็นที่ต้องการเสมอไปเพราะบางครั้งคุณต้องการให้มีการส่งบันทึกการทำงานแบบเต็ม (ไปยังเซิร์ฟเวอร์ Central syslog เซิร์ฟเวอร์ IDS กลาง, Splunk, Nagios ฯลฯ ) แต่คุณไม่ต้องการให้ logwatch ส่งอีเมลถึงคุณเกี่ยวกับเรื่องนี้ ทุกเซิร์ฟเวอร์ทุกวัน


นี่คือสิ่งที่ฉันทำ แต่ถ้าฉันจำได้อย่างถูกต้องมีบริการบางอย่าง (ฉันเชื่อว่ามีบางสิ่งที่เกี่ยวข้องกับการปฏิเสธอีเมล) ที่ไม่ได้รับการแยกวิเคราะห์อย่างถูกต้องจากบันทึกและดังนั้นจึงถูกระบุไว้ในหมวดหมู่ "อื่น ๆ " และ บรรทัดทั้งหมดจากบันทึกถูกส่งทางอีเมล มันมีเสียงดังมาก ฉันเพิ่งแก้ไขซอร์สโค้ด logwatch และเพิ่ม / เปลี่ยนแปลงตัวกรองตามลำดับและอาจลดได้ถึง 20kb ต่ออีเมล นี่คือไม่กี่ปีที่ผ่านมาดังนั้นฉันแน่ใจว่า logwatch ได้รับการปรับปรุงตั้งแต่นั้นมา แต่ฉันยังไม่ได้อัปเดตเวอร์ชันของฉันในกรณีที่มันไม่ได้
Mike

5

ใช่ - นาฬิกาล็อกเกอร์มักมีเสียงดังเกินไป คุณได้กล่าวถึงการปิดการใช้งานการตรวจสอบอย่างสมบูรณ์

หากคุณไม่ต้องการทำเช่นนั้นคุณต้องป้องกันไม่ให้เหตุการณ์บางอย่างปรากฏ ตัวอย่างเช่น - ไม่น่าสนใจถ้า nagios เชื่อมต่อผ่าน ssh กับระบบ DMZ แต่เป็นที่น่าสนใจหากมีการเข้าสู่ระบบอื่น ๆ ผ่านทาง ssh

เราใช้ rsyslog แทน ksyslogd (ติดตั้งครั้งแรก rsyslog จากนั้นลบ ksyslogd) ด้วย rsyslog คุณสามารถปรับแต่งสิ่งที่จะไปสู่บันทึกและสิ่งที่ไม่ได้ (เช่นสร้างนิพจน์ที่ส่งข้อความจาก sshd cointaining "nagios connected") ด้วยวิธีนี้ logwatch จะรายงานข้อมูลที่เป็นประโยชน์เท่านั้น

อีกกรณีหนึ่งอาจเป็น xinetd - ฉันไม่ต้องการรับข้อมูลเกี่ยวกับการเชื่อมต่อที่ประสบความสำเร็จ - นี่สามารถกำหนดค่าใน xinetd itselv - โดยไม่ต้องปิดการใช้งานการตรวจสอบ logwatch สำหรับ xinetd


3

เป็นจุดที่น่าสนใจฉันตามตัวเลือก 2 แบบฟอร์มคำตอบโดยStefan Lasiewskiแต่สำหรับวัตถุประสงค์ของฉันฉันต้องการเฉพาะบรรทัดที่เฉพาะเจาะจงมากกว่าแยกเสียงทั้งหมดที่ฉันไม่ต้องการ

ฉันกำลังกำหนดค่า vsftpd ดังนั้นฉันจึงสร้าง/etc/logwatch/conf/services/vsftpd.confและแทนที่จะใช้สิ่ง*Remove = testuserที่ลบแถวที่รวมข้อความที่testuserฉันใช้บรรทัด*OnlyContains = "testuser"ที่คืนค่าแถวรวมถึงข้อความนั้นเท่านั้น

เหล่านี้ 2 สคริปต์ทำงานมากโดยทั่วไปโดยใช้และgrepgrep -v

ความแตกต่างคือคุณสามารถใช้*Removeหลาย ๆ ครั้งตามที่คุณต้องการ แต่*OnlyContainsคุณต้องใช้มันครั้งเดียวถ้าคุณต้องการบางสิ่งบางอย่างหรืออย่างอื่นหรืออย่างอื่น ดังนั้นสำหรับหลายค่าที่คุณทำ*OnlyContains = "testuser|testuser2|testuser3"


1

คุณได้พิจารณาช่องทางข้อความสถานะอีเมลไปยัง listserver หรือไม่บางทีอาจเป็นข้อความที่สามารถให้ข้อมูลสรุปตามขนาดและ / หรือระยะเวลา / อายุที่ตั้งโปรแกรมได้ วิธีนี้ไม่ลดปริมาณการบันทึกที่ถูกส่งไปทางอีเมล แต่สามารถควบคุมปริมาณของอีเมลแต่ละรายการได้โดยการแบตช์เพื่อลดความถี่ในการส่งอีเมล


ฉันมี. นอกจากนี้เรายังพิจารณาโซลูชันที่เป็น syslog เท่านั้นซึ่งเรากรองเสียงบางส่วนออก อย่างไรก็ตามเพื่อความง่ายเราต้องการดูว่าเป็นไปได้ที่จะควบคุมสิ่งนี้ที่แหล่งที่มา
Stefan Lasiewski

1
หากคุณกำลังดูที่ "nipping" ที่แหล่งที่มาและลดความผิดพลาดใด ๆ ในการทำเช่นนั้นคุณอาจพิจารณาจำกัดความพยายามในการปรับระดับการบันทึกเมื่อมี
user48838

0

ฉันเพิ่งต้องการเงียบผลลัพธ์จากบริการ sshd บางส่วนมีความยาวและไม่สามารถควบคุมได้โดยการกำหนดระดับรายละเอียด

มันไม่ได้เป็นทางออกที่ดี แต่ฉันปิดบัง sshd สคริปต์ด้วยการคัดลอกจากที่นี่: /usr/share/logwatch/scripts/services/sshdมาที่นี่:/etc/logwatch/scripts/services/sshd

แน่นอนว่าตอนนี้คุณต้องติดตามการอัพเดทใด ๆ ของไฟล์สคริปต์นั้น แต่มันก็ช่วยให้คุณสามารถควบคุมสิ่งที่ส่งออกได้เป็นอย่างดี อีกทางหนึ่งฉันคิดว่าคุณสามารถส่งออกlogwatchผ่านเครื่องมือเช่นawkหรือsedตัดสิ่งที่คุณไม่ต้องการ แต่ที่ยากสำหรับฉัน


0

ฉันมีคำถามเดียวกัน UNIX & Linux Stackexchangeและนี่คือคำตอบที่ฉันแก้ไขให้ฉัน:

คุณสามารถบอกให้ logwatch ดู 7 วันแทน 1 วันโดยเปลี่ยนพารามิเตอร์ Range ในlogwatch.conf:

Range = between -7 days and -1 days

คุณสามารถบอกlogwatchให้เรียกใช้รายสัปดาห์แทนรายวันโดยย้ายจากไดเรกทอรี cron รายสัปดาห์ไปยังcronไดเรกทอรีรายวัน:

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

ขอบคุณ @JeffSchaller

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.