Linux : logwatch (8)가 너무 시끄 럽습니다. 소음 수준을 어떻게 제어 할 수 있습니까?


30

Linux 시스템 은 기본적으로 logwatch (8) 유틸리티를 실행 합니다. RedHat / CentOS / SL 시스템에서 /etc/cron.daily/cronjob 이 Logwatch를 호출 한 다음 매일 이메일을 결과와 함께 보냅니다. 이 이메일에는 다음과 같은 제목이 있습니다.

Subject: Logwatch for $HOSTNAME

문제는 기본적으로 매일 이메일이 너무 시끄럽고 이미 다른 서비스 (Nagios, Cacti, 중앙 syslog 등)가 모니터링하는 불필요한 정보 (HTTP 오류, 일일 디스크 사용량 등)가 너무 많다는 것입니다. 100 시스템의 경우 이메일로드를 견딜 수 없습니다. 사람들은 이메일을 무시하므로 로그 워치에서 발생하는 문제를 놓칠 수 있습니다.

로그 워치에서 발생하는 노이즈의 양을 줄이려면 여전히 로그 워치를 사용하여 중요한 문제를 알려주는 방법은 무엇입니까?

아래에 내 답변을 게시하지만 다른 사람들이 한 일을보고 싶습니다.

참고 : FreeBSD에서 FreeBSD 에 대해 비슷한 질문 이 있습니다. periodic (8)이 너무 시끄 럽습니다. 소음 수준을 어떻게 제어 할 수 있습니까?

답변:


39

전반적으로, Logwatch에 대한 사용 가능한 문서는 적절한 설명이 부족하고 종종 너무 모호합니다. 몇 가지 유용한 예를 정리하여 Logwatch 노이즈를 95 % 이상 줄였습니다.

여기 내가 찾은 것이 있습니다.

에서 일부 Logwatch 설명서를 찾을 수 /usr/share/doc/logwatch-*/HOWTO-Customize-LogWatch있으며 몇 가지 유용한 예가 포함되어 있습니다.

  1. RHEL / CentOS / SL에서 기본 로그 워치 구성은 /usr/share/logwatch/default.conf/logwatch.conf

    이 설정은 로컬 구성을 아래에 배치하여 무시할 수 있습니다 /etc/logwatch/conf/logwatch.conf. 'httpd'와 같은 서비스 및 일일 디스크 사용량 확인과 같은 서비스를 완전히 무시하도록 logwatch에 지시하려면 다음 파일을 파일에 배치하십시오.

    # Don't spam about the following Services
    Service = "-http"
    Service = "-zz-disk_space"
    
  2. 때로는 특정 서비스에 대해 로그 감시를 완전히 비활성화하지 않으려 고, 노이즈가 적도록 결과를 미세 조정하고 싶습니다. /usr/share/logwatch/default.conf/services/*.conf서비스의 기본 구성을 포함합니다. 아래에 로컬 구성을 배치하여이 매개 변수를 대체 할 수 있습니다 /etc/logwatch/conf/services/$SERVICE.conf. 불행히도 여기서 logwatch의 기능은 제한적이며 많은 logwatch 실행 파일은 문서화되지 않은 Perl로 가득합니다. 실행 파일을 다른 것으로 바꾸거나를 사용하여 일부 설정을 재정의하려고합니다 /etc/logwatch/conf/services.

    예를 들어, 네트워크를 통해 스캔을 실행하는 보안 스캐너가 있습니다. 테스트가 실행되면 보안 스캐너는 응용 프로그램 로그에 많은 오류 메시지를 생성합니다. logwatch에서 보안 스캐너의 오류를 무시하고 싶지만 여전히 다른 호스트의 공격에 대해 알려주십시오. 자세한 내용은 Logwatch : SSH 및 PAM 검사를위한 특정 IP 무시? 에서 자세히 다루고 있습니다. . 이렇게하려면 다음을 아래에 배치하십시오 /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는 다음과 같이 말합니다.

    ignore.conf :이 파일은 logwatch 출력과 일치 할 때 실행중인 서비스에 관계없이 일치하는 행을 억제하는 정규식을 지정합니다.

    그러나 나는 이것으로 많은 운이 없었습니다. 요구 사항에는 '보안 스캐너로 인해 보안 경고가있는 경우 출력을 인쇄하지 마십시오'와 같은 조건문이 필요합니다. 그러나 내 보안 스캐너 일부 악의적 인 사람들로부터 보안 경고가 표시되면 유용한 부분을 인쇄하십시오.

  4. 소스에서 닙니다 (@ user48838에서 제안한대로). 이러한 메시지는 일부 응용 프로그램에서 생성 된 후 Logwatch가 결과를 행복하게 분산시킵니다. 이 경우 응용 프로그램을 수정하여 기록을 줄이십시오.

    때때로 전체 로그를 다른 곳 (중앙 syslog 서버, 중앙 IDS 서버, Splunk, Nagios 등)으로 보내길 원하지만 로그 워치에서 사용자에게 이메일을 보내지 않기를 원하기 때문에 항상 바람직하지는 않습니다. 모든 서버, 매일.


이것은 내가 정확히 한 일이지만, 올바르게 기억하면 로그에서 올바르게 구문 분석되지 않아 일종의 "기타"범주에 나열되는 일부 서비스 (이메일 거부와 관련이 있다고 생각합니다)와 로그의 전체 라인이 이메일로 전송되었습니다. 이것은 매우 시끄러웠다. 따라서 방금 로그 워치 소스 코드를 편집하고 각 필터를 추가 / 변경했으며 이메일 당 20kb를 줄였습니다. 이것은 몇 년 전 이었으므로 그 이후로 logwatch가 개선되었다고 확신하지만 아직 업데이트되지 않은 경우 내 버전을 업데이트하지 않았습니다.
Mike

5

예-로그 워치는 너무 시끄 럽습니다. 점검 비활성화를 이미 언급했습니다.

원하지 않으면 특정 이벤트가 나타나지 않도록해야합니다. 예를 들어, nagios가 ssh를 통해 DMZ 시스템에 연결하면 흥미롭지 않습니다. 그러나 ssh를 통한 다른 로그인이 있으면 흥미 롭습니다.

ksyslogd 대신 rsyslog를 사용합니다 (먼저 rsyslog를 설치 한 다음 ksyslogd를 제거하십시오). rsyslog를 사용하면 로그로가는 내용과 그렇지 않은 내용을 미세 조정할 수 있습니다 (예 : sshd 코인 테인 "nagios connected"에서 메시지를 삭제하는 표현식 작성). 그렇게하면 logwatch는 유용한 정보 만보고합니다.

또 다른 경우는 xinetd 일 수 있습니다. 성공적인 연결에 대해 알리고 싶지 않습니다. xinetd에 대한 logwatch-check를 비활성화하지 않고 xinetd itselv에서 구성 할 수 있습니다.


3

관심의 대상으로 Stefan Lasiewski 의 답변 2에서 옵션 2를 따랐 지만, 내가 원하지 않는 모든 노이즈를 배제하기보다는 특정 라인 만 포함하고 싶었습니다.

내가 만든 그래서 나는 vsftpd에를 구성하고 /etc/logwatch/conf/services/vsftpd.conf대신 같은 것을 사용하는 *Remove = testuser텍스트가 포함 된 행 제거하는 testuser내가 줄 사용 *OnlyContains = "testuser"해당 텍스트를 포함하는 행을 반환합니다.

이 두 스크립트는 기본적으로 grepand 를 사용하여 작동 grep -v합니다.

차이점은 *Remove원하는만큼 여러 번 사용할 수 있지만 *OnlyContains무언가 또는 다른 것을 원하면 한 번만 사용해야한다는 것입니다. 여러 값을 위해*OnlyContains = "testuser|testuser2|testuser3"


1

전자 메일 상태 메시지를 목록 서버로 퍼널 링하는 것을 고려 했습니까? 아마도 크기 및 / 또는 지속 시간 / 연령의 프로그래밍 가능한 속성을 기반으로 요약 정보를 제공 할 수있는 것일까 요? 이 방법을 사용하면 전자 메일로 전송되는 로깅 양이 줄어들지 않지만 전자 메일 처리 빈도를 줄이기 위해 일괄 처리를 통해 개별 전자 메일의 양을 제어 할 수 있습니다.


나는 가지고있다. 또한 일부 노이즈를 걸러내는 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 에 대해 동일한 질문이 있습니다. 했고 여기에 나를 대답이 있습니다.

다음에서 Range 매개 변수를 변경하여 logwatch에 1 일 대신 7 일을 보도록 지시 할 수 있습니다 logwatch.conf.

Range = between -7 days and -1 days

logwatch매주 cron 디렉토리에서 daily cron디렉토리 로 이동하여 매일 대신 매주 실행하도록 지정할 수 있습니다 .

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

@JeffSchaller에게 감사합니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.