1.4. BIND ACL 작성
BIND의 특정 기능에 대한 액세스를 제어하면 서비스 거부(DoS)와 같은 무단 액세스 및 공격을 방지할 수 있습니다. BIND 액세스 제어 목록(acl
) 문은 IP 주소 및 범위의 목록입니다. 각 ACL에는 allow-query
와 같은 여러 문에서 사용할 수 있는 닉네임이 있어 지정된 IP 주소 및 범위를 참조합니다.
BIND에서는 ACL의 첫 번째 일치 항목만 사용합니다. 예를 들어 ACL { 192.0.2/24; !192.0.2.1; !192.0.2.1; }
및 IP 주소가 192.0.2.1
인 호스트를 정의하는 경우 두 번째 항목이 이 주소를 제외하는 경우에도 액세스 권한이 부여됩니다.
BIND에는 다음과 같은 기본 제공 ACL이 있습니다.
-
none
: 호스트를 찾을 수 없습니다. -
any
: 모든 호스트와 일치합니다. -
localhost
: 루프백 주소127.0.0.1
및::1
와 일치하며 BIND를 실행하는 서버에서 모든 인터페이스의 IP 주소와 일치시킵니다. -
localnets
: 루프백 주소127.0.0.1
및::1
와 일치하며 BIND를 실행하는 서버는 직접 연결됩니다.
사전 요구 사항
- BIND가 이미 구성되어 있습니다(예: 캐싱 이름 서버).
-
named
또는named-chroot
서비스가 실행 중입니다.
절차
/etc/named.conf
파일을 편집하고 다음과 같이 변경합니다.파일에
acl
문을 추가합니다. 예를 들어127.0.0.1
,192.0.2.0/24
및2001:db8:1::/64
용으로internal-networks
라는 ACL을 생성하려면 다음을 입력합니다.acl internal-networks { 127.0.0.1; 192.0.2.0/24; 2001:db8:1::/64; }; acl dmz-networks { 198.51.100.0/24; 2001:db8:2::/64; };
이를 지원하는 문에서 ACL의 nickname을 사용하십시오. 예를 들면 다음과 같습니다.
allow-query { internal-networks; dmz-networks; }; allow-recursion { internal-networks; };
/etc/named.conf
파일의 구문을 확인합니다.# named-checkconf
명령이 출력을 표시하지 않으면 구문이 올바른지.
BIND를 다시 로드합니다.
# systemctl reload named
변경 루트 환경에서 BIND를 실행하는 경우
systemctl reload named-chroot
명령을 사용하여 서비스를 다시 로드합니다.
검증
구성된 ACL을 사용하는 기능을 트리거하는 작업을 실행합니다. 예를 들어 이 절차의 ACL은 정의된 IP 주소에서 재귀적 쿼리만 허용합니다. 이 경우 ACL 정의 내에 없는 호스트에서 다음 명령을 입력하여 외부 도메인 확인을 시도합니다.
# dig +short @192.0.2.1 www.example.com
명령에서 출력을 반환하지 않으면 BIND에서 거부된 액세스와 ACL이 작동합니다. 클라이언트에서 자세한 출력 내용을 보려면
+short
옵션 없이 명령을 사용합니다.# dig @192.0.2.1 www.example.com ... ;; WARNING: recursion requested but not available ...