4.8. DNS 레코드를 재정의하도록 BIND에서 응답 정책 영역 구성
관리자는 DNS 차단 및 필터링을 사용하여 DNS 응답을 다시 작성하여 특정 도메인 또는 호스트에 대한 액세스를 차단할 수 있습니다. BIND에서 응답 정책 영역(RPZ)은 이 기능을 제공합니다. NXDOMAIN 오류 발생 또는 쿼리에 응답하지 않는 등 차단된 항목에 대해 다른 작업을 구성할 수 있습니다.
환경에 여러 DNS 서버가 있는 경우 이 절차를 사용하여 기본 서버에서 RPZ를 구성하고 나중에 보조 서버에서 RPZ를 사용하도록 영역 전송을 구성합니다.
사전 요구 사항
- BIND는 예를 들어 캐싱 이름 서버로 이미 구성되어 있습니다.
-
named또는named-chroot서비스가 실행 중입니다.
프로세스
/etc/named.conf파일을 편집하고 다음과 같이 변경합니다.options문에response-policy정의를 추가합니다.options { ... response-policy { zone "rpz.local"; }; ... }response-policy의zone문에서 RPZ의 사용자 지정 이름을 설정할 수 있습니다. 그러나 다음 단계의 영역 정의에 동일한 이름을 사용해야 합니다.이전 단계에서 설정한 RPZ의
영역정의를 추가합니다.zone "rpz.local" { type master; file "rpz.local"; allow-query { localhost; 192.0.2.0/24; 2001:db8:1::/64; }; allow-transfer { none; }; };이러한 설정 상태:
-
이 서버는
rpz.local이라는 RPZ의 기본 서버(유형 master)입니다. -
/var/named/rpz.local파일은 영역 파일입니다. 이 예에서와 같이 상대 경로를 설정하는 경우 이 경로는options문에서 디렉터리에 설정한디렉터리와 상대적입니다. -
allow-query에 정의된 모든 호스트는 이 RPZ를 쿼리할 수 있습니다. 또는 IP 범위 또는 BIND ACL(액세스 제어 목록) 닉네임을 지정하여 액세스를 제한합니다. - 호스트가 영역을 전송할 수 없습니다. 보조 서버를 설정하고 보조 서버의 IP 주소에 대해서만 영역 전송을 허용합니다.
-
이 서버는
/etc/named.conf파일의 구문을 확인합니다.# named-checkconf명령이 출력을 표시하지 않으면 구문이 올바르게 됩니다.
예를 들어 다음 콘텐츠를 사용하여
/var/named/rpz.local파일을 만듭니다.$TTL 10m @ IN SOA ns1.example.com. hostmaster.example.com. ( 2022070601 ; serial number 1h ; refresh period 1m ; retry period 3d ; expire time 1m ) ; minimum TTL IN NS ns1.example.com. example.org IN CNAME . *.example.org IN CNAME . example.net IN CNAME rpz-drop. *.example.net IN CNAME rpz-drop.이 영역 파일:
-
리소스 레코드의 기본 TTL(Time-to-live) 값을 10분으로 설정합니다. 시간 접미사가 없는 경우
hfor hour, BIND는 값을 초로 해석합니다. - 영역에 대한 세부 정보와 함께 필요한 권한 시작(SOA) 리소스 레코드가 포함되어 있습니다.
-
ns1.example.com을 이 영역에 대해 권한 있는 DNS 서버로 설정합니다. 기능을 위해 영역에는 하나 이상의 이름 서버(NS) 레코드가 필요합니다. 그러나 RFC 1912를 준수하기 위해서는 적어도 두 개의 이름 서버가 필요합니다. -
example.org및 이 도메인의 호스트에 대한NXDOMAIN오류를 반환합니다. -
이 도메인의
example.net및 호스트에 대한 쿼리를 삭제합니다.
전체 작업 및 예제 목록은 IETF 초안을 참조하십시오. RPZ(DNS 대응 정책 영역).
-
리소스 레코드의 기본 TTL(Time-to-live) 값을 10분으로 설정합니다. 시간 접미사가 없는 경우
/var/named/rpz.local파일의 구문을 확인합니다.# named-checkzone rpz.local /var/named/rpz.local zone rpz.local/IN: loaded serial 2022070601 OKBIND를 다시 로드합니다.
# systemctl reload named변경 루트 환경에서 BIND를 실행하는 경우
systemctl reload named-chroot명령을 사용하여 서비스를 다시 로드합니다.
검증
RPZ에 구성된
example.org의 호스트를 해결하여NXDOMAIN오류를 반환합니다.# dig @localhost www.example.org ... ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 30286 ...이 예제에서는 BIND가 동일한 호스트에서 실행되고
localhost인터페이스의 쿼리에 응답한다고 가정합니다.RPZ에 구성된
example.net도메인의 호스트를 확인하여 쿼리를 삭제하십시오.# dig @localhost www.example.net ... ;; connection timed out; no servers could be reached ...