BIND 쿼리 로깅에서 특정 클라이언트를 제외할 수 있나요?

BIND 쿼리 로깅에서 특정 클라이언트를 제외할 수 있나요?

일부 BIND DNS 서버를 종료하는 것을 고려하고 있습니다. 어떤 클라이언트가 이 서버에 접속하고 있는지 확인하기 위해 쿼리 로깅을 켰습니다. 대부분의 항목은 세 명의 알려진 범인에게서 나옵니다. 이 기록을 없애고 싶습니다. BIND 내에서 이를 수행할 수 있는 방법이 있습니까?

in-BIND 메소드를 찾을 수 없어서 제가 생각한 not-within-BIND 메소드는 채널문에 있는 파일을 파일이 아닌 소켓으로 만드는 것이었습니다. 그런 다음 파일에 쓰기 전에 해당 소켓 및 필터에서 스크립트를 읽습니다.

    channel queries {
            file "/var/adm/named/querylogsocket" versions 7;
            print-time yes;
            print-category yes;
            print-severity yes;
            severity info;
    };

이것이 실현 가능한 접근 방식입니까?

답변1

로그 필터링과 구성 변경 사항 보기라는 두 가지 방법이 있습니다. 하나는 쉽고, 다른 하나는 어렵고 오류가 발생하기 쉽습니다.

어느 쪽도 로그 출력을 줄이지 않습니다.

로그 필터링

Bind9가 상위 3개 원인에 계속 응답하도록 하고 싶지만 다른 쿼리와 답변에만 관심이 있는 경우 이러한 Bind9 절, 선언 및 옵션 중 어느 것도 도움이 되지 않습니다.

모든 Bind9 버전에서(나는 하나를 가지고 있습니다현재 데이터베이스키워드) 심각도별 필터링만 제공하므로 현재 주소별 선택적 로그 필터링은 없습니다.

Bind9로 시작하는 많은 명령문은 allow-원하는 선택적 로깅 출력이 아닌 프로토콜에 직접 영향을 미칩니다.

이 시점에서 가장 빠른(항상 최선은 아니지만) 접근 방식은 Unix 파이프를 사용하고 원치 않는 3개의 IP/호스트 이름 주소를 필터링하는 것입니다.

cd /var/log/named
cat query-errors | \
    grep -v 1.1.1.1 | \
    grep -v 1.1.1.2 | \
    grep -v 1.1.1.3 | \
    <your-log-analysis-program>

1.1.1.x예제의 부분을 원치 않는 가장 큰 주소 3개로 바꾸세요 .

-v옵션은 원치 않는 출력을 필터링하여 로그 분석기에 표시하려는 내용만 볼 수 있도록 합니다.

구성 변경사항 보기

named.conf또는 설정을 수정하고 현재 보기를 두 개의 보기로 분할 할 수 있습니다 .

뷰 선언이 이미 없으면 Bind가 아닌 사람들에게는 이것이 약간 어려워집니다.

뷰를 분할하려면 named.conf필수 절이 포함된 .(또는 포함된 파일 중 하나)를 편집하세요 view.

전체 view절(및 중괄호 쌍 내의 모든 명령문)을 복사합니다.

새로 복제된 두 번째 뷰의 이름을 다른 이름으로 바꾸세요. 뷰 이름에 "_original" 접미사를 추가하면 됩니다.

첫 번째 보기 절로 돌아갑니다. (주소 일치가 첫 번째 일치 순서로 이루어지기 때문에 중요합니다.)

match-client첫 번째 뷰 절 안에 다른 문을 추가합니다.

view red {
    match-clients {
        1.1.1.1; 1.1.1.2; 1.1.1.3;
    };
...

이제 쉽게 검색할 수 있는 다양한 보기 이름이 포함된 행이 포함된 로그 파일이 있습니다.

결론적으로

이제 나는 이것이 여전히 Bind9를 통해 특정 보기나 주소 집합을 기록하지 않을 필요성을 해결하지 못한다는 것을 알고 있습니다.

관련 정보