728x90
반응형
취약점
점검내용
Secondary Name Server로만 Zone 정보 전송 제한 여부 점검
점검목적
허가되지 않는 사용자에게 Zone Transfer를 제한함으로써 호스트 정보, 시스
템 정보 등 정보 유출의 방지를 목적으로 함
보안위협
비인가자 Zone Transfer를 이용해 Zone 정보를 전송받아 호스트 정보, 시스
템 정보, 네트워크 구성 형태 등의 많은 정보를 파악할 수 있음
코드
#!/usr/bin/python3
#-*- coding: utf-8 -*-
# 파일명: U-34.py
#20230223 테스트
import os
import subprocess
import sys
# 색깔변수
red = '\033[91m'
blue = '\033[94m'
reset = '\033[0m'
# DNS 서비스 실행 여부 확인
dns_running = False
cmd_output = subprocess.check_output(['ps', '-ef'])
if 'named' in cmd_output.decode():
dns_running = True
# named.conf 파일에서 allow-transfer 설정 확인
allow_transfer = False
with open('/etc/named.conf', 'r') as named_conf:
for line in named_conf:
if 'allow-transfer' in line:
allow_transfer = True
break
# named.boot 파일에서 xfrnets 설정 확인
xfrnets = ''
try:
with open('/etc/named.boot', 'r') as named_boot:
for line in named_boot:
if 'xfrnets' in line:
xfrnets = line.strip().split('=')[1]
break
except FileNotFoundError:
print(f"{blue}양호{reset} - DNS서비스상태: 미사용")
sys.exit()
# 결과 출력
if dns_running and not allow_transfer and xfrnets == '':
print(f"{blue}양호{reset} - DNS서비스상태: {dns_running}")
else:
print(f"{red}취약{reset} - DNS서비스상태: {dns_running}")
- DNS 서비스 실행 여부 확인
- DNS 서비스가 실행 중이면 named.conf 파일에서 allow-transfer 설정 확인
- named.boot 파일에서 xfrnets 설정 확인
- DNS 서비스가 실행 중이고, allow-transfer 설정이 없고, xfrnets 설정이 비어있으면 양호
- 그렇지 않으면 취약
- 색깔 변수(red, blue, reset) 사용하여 출력문의 색상 설정
- FileNotFoundError 예외 처리를 통해 named.boot 파일이 없을 때 DNS 서비스를 사용하지 않는 것으로 판단하고 양호 출력
실제 테스트
DNS 서비스 미사용 또는, Zone Transfer를 허가된 사용자에게만 허용한경우

DNS 서비스를 사용하며 Zone Transfer를 모든 사용자에게 허용한 경우

728x90
반응형
'개발' 카테고리의 다른 글
깃허브 명령어 (2) | 2023.09.14 |
---|---|
U-42. 패치 관리 > 최신 보안패치 및 벤더 권고사항 적용 자동화 파이썬 코드 (0) | 2023.03.17 |
U-33 서비스 관리 > DNS 보안 버전 패치 자동화 파이썬 코드 (0) | 2023.03.17 |
U-28 NIS서버 취약점 점검 자동화 파이썬 코드 (2) | 2023.03.16 |