Linux: logwatch (8) quá ồn ào. Làm thế nào tôi có thể kiểm soát mức độ tiếng ồn?


30

Các hệ thống Linux của chúng tôi chạy tiện ích logwatch (8) theo mặc định. Trên hệ thống RedHat / CentOS / SL, Logwatch được gọi bởi /etc/cron.daily/cronjob, sau đó gửi email hàng ngày với kết quả. Những email này có một chủ đề như:

Subject: Logwatch for $HOSTNAME

Vấn đề là theo mặc định, các email hàng ngày này quá ồn và chứa nhiều thông tin thừa (lỗi HTTP, sử dụng đĩa hàng ngày, v.v.) đã được theo dõi bởi các dịch vụ khác (Nagios, Cacti, syslog trung tâm, v.v.). Đối với 100 hệ thống, tải email là không thể chịu được. Mọi người bỏ qua các email, điều đó có nghĩa là chúng tôi có thể bỏ lỡ các sự cố được logwatch chọn.

Làm cách nào tôi có thể giảm lượng tiếng ồn do logwatch tạo ra, nhưng vẫn sử dụng logwatch để thông báo cho chúng tôi về các vấn đề quan trọng?

Tôi sẽ đăng câu trả lời của riêng tôi dưới đây, nhưng tôi muốn xem những gì người khác đã làm.

Lưu ý : Tôi có một câu hỏi tương tự liên quan đến FreeBSD, tại FreeBSD: định kỳ (8) quá ồn. Làm thế nào tôi có thể kiểm soát mức độ tiếng ồn?

Câu trả lời:


39

Nhìn chung, tài liệu có sẵn cho Logwatch thiếu giải thích đầy đủ và thường quá mơ hồ. Tôi đã tổng hợp một số ví dụ hữu ích và đã giảm tiếng ồn của Logwatch hơn 95%.

Đây là những gì tôi đã tìm thấy.

Hãy nhớ rằng bạn có thể tìm thấy một số tài liệu về Logwatch tại /usr/share/doc/logwatch-*/HOWTO-Customize-LogWatchvà nó chứa một vài ví dụ hữu ích.

  1. Trên RHEL / CentOS / SL, cấu hình logwatch mặc định nằm dưới /usr/share/logwatch/default.conf/logwatch.conf

    Các cài đặt này có thể được ghi đè bằng cách đặt cấu hình cục bộ của bạn bên dưới /etc/logwatch/conf/logwatch.conf. Đặt phần sau vào tệp đó để báo cho logwatch bỏ qua hoàn toàn các dịch vụ như 'httpd' và kiểm tra sử dụng đĩa hàng ngày:

    # Don't spam about the following Services
    Service = "-http"
    Service = "-zz-disk_space"
    
  2. Đôi khi tôi không muốn tắt hoàn toàn logwatch cho một dịch vụ cụ thể, tôi chỉ muốn tinh chỉnh kết quả để làm cho chúng bớt ồn ào hơn. /usr/share/logwatch/default.conf/services/*.confchứa cấu hình mặc định cho các dịch vụ. Các tham số này có thể được ghi đè bằng cách đặt cấu hình cục bộ của bạn bên dưới /etc/logwatch/conf/services/$SERVICE.conf. Thật không may, khả năng của logwatch ở đây bị hạn chế và nhiều chương trình thực thi của logwatch chứa đầy Perl không có giấy tờ. Lựa chọn của bạn là thay thế tệp thực thi bằng thứ khác hoặc cố gắng ghi đè một số cài đặt bằng cách sử dụng /etc/logwatch/conf/services.

    Ví dụ: tôi có một máy quét bảo mật chạy quét trên mạng. Khi chạy thử, trình quét bảo mật tạo ra nhiều thông báo lỗi trong nhật ký ứng dụng. Tôi muốn logwatch bỏ qua lỗi từ máy quét bảo mật của mình, nhưng vẫn thông báo cho tôi về các cuộc tấn công từ các máy chủ khác. Điều này được đề cập chi tiết hơn tại Logwatch: Bỏ qua một số IP nhất định để kiểm tra SSH & PAM? . Để làm điều này, tôi đặt như sau /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 cũng cho phép bạn loại bỏ đầu ra từ các email của logwatch bằng cách đặt các biểu thức thông thường vào /etc/logwatch/conf/ignore.conf. HOWTO-Tùy chỉnh-LogWatch nói:

    ign.conf: Tệp này chỉ định các biểu thức chính quy, khi được khớp với đầu ra của logwatch, sẽ triệt tiêu dòng khớp, bất kể dịch vụ nào đang được thực thi.

    Tuy nhiên, tôi đã không gặp nhiều may mắn với điều này. Yêu cầu của tôi cần một tuyên bố có điều kiện, giống như 'Nếu có cảnh báo bảo mật do máy quét bảo mật của tôi, thì đừng in đầu ra. Nhưng nếu có cảnh báo bảo mật từ máy quét bảo mật của tôi từ một số kẻ xấu, thì hãy in các phần hữu ích-- Tiêu đề có nội dung "Đăng nhập thất bại từ:", IP của máy chủ xấu, nhưng không phải IP của máy quét. '

  4. Nip nó tại nguồn (Theo đề xuất của @ user48838). Các thông báo này đang được tạo bởi một số ứng dụng và sau đó Logwatch vui vẻ đưa ra kết quả cho bạn. Trong những trường hợp này, bạn có thể sửa đổi ứng dụng để đăng nhập ít hơn.

    Điều này không phải lúc nào cũng mong muốn, bởi vì đôi khi bạn muốn gửi nhật ký đầy đủ ở đâu đó (đến máy chủ nhật ký hệ thống trung tâm, máy chủ IDS trung tâm, Splunk, Nagios, v.v.), nhưng bạn không muốn logwatch gửi email cho bạn về điều này từ mỗi máy chủ, mỗi ngày.


Đây chính xác là những gì tôi đã làm, tuy nhiên nếu tôi nhớ lại một cách chính xác, có một số dịch vụ (tôi tin rằng phải làm gì đó với các từ chối email) không được phân tích cú pháp chính xác từ nhật ký và do đó được liệt kê trong một số loại "khác" và toàn bộ dòng từ nhật ký đã được gửi qua email. Điều này là vô cùng ồn ào. Do đó, tôi chỉ chỉnh sửa mã nguồn logwatch và thêm / thay đổi các bộ lọc tương ứng và cắt giảm 20kb mỗi email. Đây là một vài năm trước, vì vậy tôi chắc chắn rằng logwatch đã được cải thiện kể từ đó, nhưng tôi đã không cập nhật phiên bản của mình trong trường hợp không có.
Mike

5

Có - logwatch thường quá ồn ào. Bạn đã đề cập đến việc vô hiệu hóa hoàn toàn kiểm tra.

Nếu bạn không muốn làm điều đó, bạn phải ngăn một số sự kiện xuất hiện. Chẳng hạn - không thú vị nếu nagios kết nối qua ssh với hệ thống DMZ. Nhưng là thú vị nếu có thông tin đăng nhập khác thông qua ssh.

Chúng tôi sử dụng rsyslog thay vì ksyslogd (đầu tiên cài đặt rsyslog, sau đó xóa ksyslogd). Với rsyslog, bạn có thể tinh chỉnh những gì đi đến nhật ký và những gì không (ví dụ: xây dựng một biểu thức loại bỏ các tin nhắn từ sshd có chứa "nagios được kết nối"). Bằng cách đó, logwatch sẽ chỉ báo cáo thông tin hữu ích.

Một trường hợp khác có thể là xinetd - Tôi không muốn được thông báo về kết nối thành công - điều này có thể được cấu hình trong xinetd Itselv - mà không vô hiệu hóa kiểm tra logwatch cho xinetd.


3

Như một điểm thú vị, tôi đã làm theo tùy chọn 2 tạo thành câu trả lời của Stefan Lasiewski nhưng với mục đích của tôi, tôi chỉ muốn bao gồm các dòng cụ thể chứ không loại trừ tất cả tiếng ồn tôi không muốn.

Tôi đã cấu hình vsftpd vì vậy tôi đã tạo /etc/logwatch/conf/services/vsftpd.confvà thay vì sử dụng một cái gì đó giống như *Remove = testuserloại bỏ các hàng bao gồm văn bản testusertôi đã sử dụng dòng *OnlyContains = "testuser"chỉ trả về các hàng bao gồm văn bản đó.

2 script này hoạt động rất cơ bản bằng cách sử dụng grepgrep -v.

Sự khác biệt là bạn có thể sử dụng *Removebao nhiêu lần tùy ý nhưng với *OnlyContainsbạn phải sử dụng nó một lần nếu bạn muốn thứ gì đó hoặc thứ khác hoặc thứ khác. Vì vậy, đối với nhiều giá trị bạn làm*OnlyContains = "testuser|testuser2|testuser3"


1

Bạn đã xem xét việc chuyển các thông điệp trạng thái email đến một máy chủ danh sách, có thể là một thông báo có thể cung cấp các bản tóm tắt dựa trên các thuộc tính có thể lập trình về kích thước và / hoặc thời lượng / tuổi? Cách tiếp cận không làm giảm số lượng đăng nhập được gửi qua email, nhưng có thể kiểm soát số lượng email riêng lẻ bằng cách theo đợt để giảm tần suất gửi email.


Tôi có. Chúng tôi cũng đã xem xét một giải pháp chỉ syslog, nơi chúng tôi lọc ra một số tiếng ồn. Tuy nhiên, để đơn giản, chúng tôi muốn xem liệu có thể kiểm soát công cụ này tại nguồn không.
Stefan Lasiewski

1
Nếu bạn đang xem xét "cắt" nó tại nguồn và giảm thiểu bất kỳ rủi ro nào khi làm như vậy, thì bạn có thể xem xét việc giới hạn các nỗ lực điều chỉnh mức ghi nhật ký khi khả dụng.
dùng48838

0

Gần đây tôi cần phải giảm bớt đầu ra từ dịch vụ sshd. Một số phần khá dài và không thể kiểm soát được bằng cách đặt mức độ chi tiết.

Đây không phải là một giải pháp lý tưởng, nhưng tôi cố gắng ghi đè tập lệnh sshd bằng cách sao chép nó từ đây: /usr/share/logwatch/scripts/services/sshdtới đây:/etc/logwatch/scripts/services/sshd

Tất nhiên, bây giờ bạn phải theo kịp bất kỳ cập nhật nào cho tệp tập lệnh đó, nhưng nó cho phép bạn kiểm soát rất tốt đối với đầu ra là gì. Ngoài ra, tôi cho rằng bạn có thể dẫn đầu ra logwatchthông qua một công cụ như awkhoặc sedloại bỏ những gì bạn không muốn, nhưng điều đó dường như khó hơn với tôi.


0

Tôi đã có cùng một câu hỏi trên UNIX & Linux Stackexchange và đây là câu trả lời tôi đã sửa nó cho tôi:

Bạn có thể yêu cầu logwatch xem xét 7 ngày thay vì 1 ngày bằng cách thay đổi tham số Phạm vi trong logwatch.conf:

Range = between -7 days and -1 days

Bạn có thể yêu logwatchcầu chạy hàng tuần thay vì hàng ngày bằng cách di chuyển nó từ thư mục cron hàng tuần sang thư mục hàng ngày cron:

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

Cảm ơn @JeffSchaller

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.