1.7. 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의 기본 서버(마스터 유형
)입니다. -
/var/named/rpz.local
파일은 영역 파일입니다. 이 예에서와 같이 상대 경로를 설정하면 이 경로는options
문의 디렉터리에 설정한디렉터리를
기준으로 합니다. -
allow-query
에 정의된 모든 호스트는 이 RPZ를 쿼리할 수 있습니다. 또는 IP 범위 또는 BIND ACL(액세스 제어 목록) nickname을 지정하여 액세스를 제한합니다. - 호스트를 통해 영역을 전송할 수 없습니다. 보조 서버를 설정하고 보조 서버의 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분으로 설정합니다.
h
for hour과 같은 시간 접미사가 없으면 BIND에서 값을 초로 해석합니다. - 영역에 대한 세부 정보를 포함하는 필수 권한 시작(SOA) 리소스 레코드가 포함되어 있습니다.
-
ns1.example.com
을 이 영역에 대한 권한 있는 DNS 서버로 설정합니다. 작동하려면 영역에 하나 이상의 이름 서버(NS
) 레코드가 필요합니다. 그러나 RFC 1912를 준수하려면 두 개 이상의 이름 서버가 필요합니다. -
이 도메인의
example.org
및 호스트에 대한 쿼리의NXDOMAIN
오류를 반환합니다. -
이 도메인에서
example.net
및 호스트에 대한 쿼리를 삭제합니다.
전체 작업 및 예제 목록은 IETF 초안: DNS Response Policy Zones (RPZ) 를 참조하십시오.
-
리소스 레코드의 기본 TTL(Time-to-live) 값을 10분으로 설정합니다.
/var/named/rpz.local
파일의 구문을 확인합니다.# named-checkzone rpz.local /var/named/rpz.local zone rpz.local/IN: loaded serial 2022070601 OK
BIND를 다시 로드합니다.
# systemctl reload named
변경 루트 환경에서 BIND를 실행하는 경우
systemctl reload named-chroot
명령을 사용하여 서비스를 다시 로드합니다.
검증
NXDOMAIN 오류를 반환하도록 RPZ에 구성된
example.org
에서 호스트를 해결하려고
합니다.# 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 ...