본문으로 건너뛰기
페이지 목차
이 페이지에서 검색

EIS

이 페이지에 묻기

EIS · 현재 차시와 목차 본문에서만 찾아 답합니다. 답을 지어내지 않고 해당하는 대목을 그대로 보여 주며, 여기에 없으면 없다고 알려 드립니다.

생성형 AI가 아니라 이 페이지 본문을 찾아 그대로 보여 주는 방식입니다. 외부로 나가는 요청이 없습니다.

EIS · SECURITY

EIS

생성 수정

정보보안기사의 시스템·네트워크·애플리케이션 보안과 암호·관리·실기 내용을 개념의 경계와 실습으로 연결합니다.

29개 문서 · 3 · 어플리케이션보안 · 15 / 29

14 · DNS · DB 보안

지도 위치 : 3과목 어플리케이션 보안 · README 4장 ③ 영역(어플리케이션) — 이름 서비스와 데이터 저장소의 공격 ↔ 대응 | 출제기준: 1. 인터넷 응용 보안 > 4. DNS 보안, 5. DB 보안 | 이전: 13 웹 · 앱 보안 | 다음: 15 전자상거래 보안 출제 빈도 : ⭐⭐ (회당 약 2.8문항 — 출제분석.md. DNS 0.9 → 2.2, DB 0.9 → 1.5) · 변화 ▲ (DNS) · ⚠️ 신규 범위 포함 (DNS 터널링, DNS 싱크홀, 경량 DNS 서버) 세세항목 : DNS 보안 — DNS 개념 / DNS 서비스 운영 / DNS 공격유형 / DNS 보안 기술 · DB 보안 — DB 보안 개념 / DB 공격 유형 / DB 보안 기술

이 노트를 다 읽으면

  1. 도메인 이름이 IP로 바뀌는 질의 과정 (hosts · 캐시 · 재귀 · 반복)과 레코드 유형 (A · AAAA · CNAME · MX · NS · PTR · SOA · TXT)을 말할 수 있다.
  2. BIND 설정에서 존 전송 제한(allow-transfer) 과 재귀 제한(recursion) 을 읽고 점검할 수 있다.
  3. 캐시 포이즈닝 · DNS 스푸핑 · 파밍 · DNS 증폭 · DNS 터널링 을 "무엇을 속이거나 악용하는가"로 구별할 수 있다.
  4. DNSSEC 이 주는 것(무결성 · 출처 인증)과 주지 않는 것(기밀성 · 가용성)을, DNS 싱크홀 의 동작을 말할 수 있다.
  5. DB 보안 요구사항과 추론 ↔ 집성 , 대응(뷰 · 다중 인스턴스화)을 구별할 수 있다.
  6. DB 암호화 방식 API · 플러그인 · TDE 를 "어디서 암호화하나, 누가 부하를 지나"로 비교할 수 있다.
  7. GRANT/REVOKE, xp_cmdshell의 위험과 조치를 말할 수 있다.

0. 이 노트의 판별 축

#축왼쪽 (0)오른쪽 (1)이 축으로 갈리는 것큰 축 (README 5장)
1누가 끝까지 찾아 주나서버가 대신 끝까지 (재귀 질의)다음 서버만 알려 줌 (반복 질의)클라이언트 → 캐시 서버 ↔ 캐시 서버 → 루트 · TLD · 권한 서버이 노트의 축
2DNS를 속이나, DNS를 이용하나응답을 위조 (무결성 공격)정상 DNS를 도구로 악용캐시 포이즈닝 · 스푸핑 · 파밍 ↔ 증폭 · 터널링② 수동적 ↔ 능동적 · ① 공격 ↔ 방어
3DNSSEC이 주는가무결성 · 출처 인증 ⭕기밀성 · 가용성 ❌DNSSEC의 범위CIA (README 4장)
4흩어진 정보를 모아 알아내는 방식추론 — 공개(통계) 정보로 기밀 값을 계산집성 — 낮은 등급 정보를 모으면 높은 등급이 됨Inference ↔ Aggregation⑥ 인증 ↔ 인가 (접근통제의 한계)
5어디서 암호화하나애플리케이션 (API)DBMS 내부 (플러그인 · TDE)DB 암호화 방식③ 관리적 ↔ 기술적 (기술적 대책 내부의 선택)

이 노트가 답하는 질문은 "모든 서비스가 기대는 두 개의 기반 — 이름(DNS)과 데이터(DB) — 은 어떻게 속고, 어떻게 새는가" 입니다. DNS는 웹 · 메일 · 인증서까지 모든 접속의 첫 단계라 응답이 위조되면 그 뒤의 모든 보안이 무력 해집니다. DB는 웹 공격의 최종 목적지입니다. 앞에서 배운 UDP · 포트(06번 노트), DRDoS(08번 노트), 스푸핑(09번 노트), 앞 노트의 SQL Injection(13번 노트), 전자서명(18번 노트), 접근통제 모델(17번 노트)이 그대로 쓰입니다.


1. DNS의 구조와 질의 과정

1.1 이름 공간과 서버의 종류

                        . (루트)
          ┌─────────────┼──────────────┐
         com           kr             net          ← TLD
          │             │
       example        co.kr                        ← 2단계 · 3단계
          │
         www   →  FQDN: www.example.com.   (맨 끝 점 = 루트)
용어정의 (유 + 종차)
FQDN[도메인 이름]인데, [ 호스트부터 루트까지 전부 적은 완전한 이름 ]이라는 점에서 일부만 적은 상대 이름과 구별
리졸버 (Stub Resolver)[DNS 클라이언트]인데, [ OS 안에서 질의를 만들어 캐시 서버에 맡기기만 한다 ]
캐시(재귀) DNS 서버[DNS 서버]인데, [ 클라이언트 대신 루트부터 끝까지 찾아 주고 결과를 TTL 동안 캐시 한다]는 점에서 자기 존만 답하는 권한 서버와 구별 (ISP · 사내 DNS)
권한(Authoritative) DNS 서버[DNS 서버]인데, [ 특정 존의 원본 레코드를 가지고 최종 답을 준다 ]. 원본을 가진 1차(Primary/Master), 복사본을 받는 2차(Secondary/Slave)
존 (Zone)한 권한 서버가 관리를 맡은 이름 공간의 범위. 존 파일에 레코드를 적음

DNS는 질의 · 응답에 UDP 53 , 응답이 크거나 존 전송(AXFR · IXFR)에는 TCP 53 을 씁니다.

1.2 ⭐ 질의 과정 — 재귀와 반복

① PC: hosts 파일 · 로컬 DNS 캐시 확인
② PC → 캐시 DNS 서버  : "www.example.com?"           ← 재귀 질의 (끝까지 찾아와)
③ 캐시 서버 → 루트     : "com은 저 서버에 물어봐"       ← 반복 질의 (다음 주소만)
④ 캐시 서버 → com TLD  : "example.com은 저 서버에"
⑤ 캐시 서버 → example.com 권한 서버 : "203.0.113.80"
⑥ 캐시 서버 → PC (결과를 TTL 동안 캐시)

🔍 읽는 포인트 : 공격자가 노리는 곳은 ⑥의 캐시 (포이즈닝)와, ②를 아무에게나 받아 주는 열린 재귀 서버 (증폭)입니다.

이름 해석 순서 — OS마다 다르고 자료마다 표현이 다릅니다.

환경순서
Windows로컬 DNS 캐시 → hosts 파일 → DNS 서버 . 단, Windows는 hosts 내용을 캐시에 미리 올려 두므로(ipconfig /displaydns에 hosts 항목이 보임) "hosts → 캐시 → DNS 서버"로 설명하는 자료도 있음
Linux/etc/nsswitch.conf의 hosts: files dns → /etc/hosts 먼저 , 다음 /etc/resolv.conf의 네임서버

⚠️ 시험에서는 두 표현이 모두 나왔습니다(2019 · 2024). 공통점은 "DNS 서버 질의는 맨 마지막, hosts는 서버보다 먼저" 입니다. 그래서 hosts 파일 변조만으로 파밍 이 됩니다.

1.3 ⭐ 레코드 유형과 존 파일

$TTL 86400
@    IN SOA  ns1.example.com. admin.example.com. (
             2026101901 ; serial (바뀔 때마다 증가 → 2차 서버가 전송 여부 판단)
             3600 ; refresh   900 ; retry   604800 ; expire   86400 ) ; minimum
     IN NS   ns1.example.com.
     IN MX   10 mail.example.com.      ; 숫자(선호도)가 작을수록 우선
ns1  IN A    203.0.113.53
www  IN A    203.0.113.80
www  IN AAAA 2001:db8::80
ftp  IN CNAME www.example.com.
@    IN TXT  "v=spf1 ip4:203.0.113.25 -all"
; 역방향 존(113.0.203.in-addr.arpa)에서:
80   IN PTR  www.example.com.

🔍 읽는 포인트 : SOA의 관리자 메일은 @ 대신 점 (admin.example.com. = admin@example.com). MX는 숫자가 작을수록 먼저 시도합니다.

레코드뜻헷갈리는 짝
A / AAAA이름 → IPv4 / IPv6—
CNAME별칭 → 정식 이름A는 IP를 직접 가리킴
MX그 도메인의 메일 서버 (선호도 포함)NS
NS그 존의 권한 네임서버MX
PTRIP → 이름 (역방향), in-addr.arpa(IPv6는 ip6.arpa) 아래A의 반대
SOA존의 시작 · 일련번호 · 갱신 주기—
TXT임의 문자열 — SPF · DKIM · DMARC (12번 노트)—
ANY (질의 유형)"가진 레코드를 전부 달라" — 증폭 공격에 악용레코드가 아니라 질의 타입

1.4 도구

도구 · 명령하는 일
nslookup → server 8.8.8.8 → set type=mx질의할 DNS 서버 변경, 레코드 타입 지정
dig @8.8.8.8 example.com MX / dig example.com ANY지정 서버 · 타입 질의
dig -x 203.0.113.80역방향(PTR) 조회
dig axfr example.com @ns1.example.com존 전송 시도 (점검 시 거부되어야 양호)
ipconfig /displaydns · ipconfig /flushdnsWindows DNS 캐시 조회 · 비우기
BIND(named) ↔ dnsmasq대표 DNS 서버 소프트웨어 ↔ 소규모 네트워크용 경량 DNS(+DHCP) 서버 ⚠️

📝 기출 포인트 — MX · NS · PTR 구분 (4회), " IP → 도메인 역질의 = PTR, in-addr.arpa ", 이름 해석 순서 (2회), 윈도우 DNS 캐시 명령 = ipconfig /displaydns (2회), nslookup server 명령 · ANY 질의 · FQDN · dnsmasq(2025). 도구 문항이 최근 늘었습니다.


2. DNS 서비스 운영 — BIND 하드닝

// /etc/named.conf (권한 DNS 서버의 예)
options {
    directory "/var/named";
    version "unknown";                    // 버전 질의에 실제 버전 숨김
    recursion no;                         // 권한 서버는 재귀 질의 처리 안 함
    allow-query { any; };
    allow-transfer { 203.0.113.54; };     // 존 전송은 2차 DNS에게만
};
// 사내 캐시 서버라면:  recursion yes;  allow-recursion { 10.0.0.0/8; };

🔍 읽는 포인트 : allow-transfer가 없거나 any면 누구나 존 전체를 내려받습니다 (내부 호스트 목록 노출 → 공격 지도). 재귀를 아무에게나 열면 증폭 공격의 반사기(오픈 리졸버)가 됩니다.

점검 항목양호
존 전송allow-transfer에 2차 서버 IP만
재귀 질의권한 서버는 recursion no, 캐시 서버는 allow-recursion으로 내부망만
버전 노출version 숨김, BIND 최신 패치
동적 업데이트allow-update { none; } 또는 TSIG 키로 제한
서버 분리권한 서버와 캐시 서버 분리, 외부 · 내부용 분리(Split DNS)

💡 존 전송 자체를 인증하려면 서버끼리 공유 비밀키로 HMAC을 붙이는 TSIG 를 씁니다(앞에서 배운 MAC, 20번 노트).

앞으로 다시 만납니다 — 25번 노트(실기 취약점 점검)에서 "DNS 서버의 불필요한 명령어(존 전송 · 재귀) 허가 여부" 점검으로 다시 나옵니다.


3. DNS 공격

3.1 ⭐ 응답을 속이는 공격 (축 2의 왼쪽)

공격정의 (유 + 종차)어디를 오염시키나대응
DNS 캐시 포이즈닝[DNS 응답 위조 공격]인데, [ 캐시 DNS 서버가 질의를 보낸 직후 위조 응답을 먼저 도착시켜 캐시에 저장 하게 한다]캐시 서버 → 그 서버를 쓰는 모든 사용자 피해DNSSEC , 출발지 포트 · 트랜잭션 ID 무작위화, 재귀 제한
DNS 스푸핑[DNS 응답 위조 공격]인데, [ 같은 네트워크에서 피해자의 질의를 엿보고 가짜 응답을 먼저 보낸다 ] (ARP 스푸핑과 결합)개별 피해자 하나의 응답스위치 보안 · ARP 감시, DNSSEC
파밍 (Pharming)[사기 사이트 유도 공격]인데, [ 사용자가 정상 주소를 입력해도 hosts 파일 · DNS 변조로 가짜 사이트에 접속 된다]hosts 파일 , 공유기 DNS 설정, DNS 캐시hosts 무결성 점검, 백신, DNSSEC

⚠️ 경계: 피싱 은 가짜 링크를 클릭하게 만들고, 파밍 은 정상 주소를 입력해도 가짜로 갑니다. 그래서 파밍이 더 알아채기 어렵습니다.

💡 캐시 포이즈닝이 가능한 이유: DNS는 UDP이고, 응답이 맞는지 확인하는 값이 16비트 트랜잭션 ID(+ 출발지 포트) 뿐이라 추측해서 먼저 도착하면 받아들여집니다. 2008년 카민스키(Kaminsky) 공격이 이를 대규모로 보여 줬습니다.

📝 기출 포인트 — 파밍 3회, 캐시 포이즈닝 3회. "DNS를 조작해 정상 주소 입력에도 가짜 사이트로", "캐시를 변조"가 정답 핵심어. 앞에서 배운 스푸핑 분류(09번 노트)와 함께 묶여 출제됩니다.

3.2 DNS를 도구로 악용하는 공격 (축 2의 오른쪽)

공격정의대응
DNS 증폭 (DRDoS)출발지를 피해자 IP로 위조해 열린 재귀 서버에 작은 질의(ANY 등) 를 보내면 큰 응답이 피해자에게 쏟아짐 (앞에서 배운 DRDoS, 08번 노트)재귀 질의 제한 (오픈 리졸버 차단), ANY 응답 최소화, 응답 속도 제한(RRL), 출발지 위조 패킷 필터링
DNS 쿼리 플러딩권한 서버에 대량의 질의를 보내 서버 자체를 마비대역 · 서버 증설, Anti-DDoS
DNS 터널링 ⚠️[은닉 통신 기법]인데, [ 허용된 DNS 질의 · 응답의 서브도메인 · TXT 레코드에 데이터를 인코딩해 실어 나른다 ] → 방화벽 우회, C&C 통신, 정보 유출길고 무작위한 서브도메인 · 비정상 TXT 질의량 탐지, 내부 PC의 외부 DNS 직접 질의 차단
Domain Shadowing탈취한 도메인 관리 계정 으로 정상 도메인 아래 서브도메인을 대량 생성 해 악성 사이트에 사용등록 계정 MFA, 존 변경 감시
존 전송 악용AXFR로 내부 호스트 목록 수집 (정보 수집)allow-transfer 제한
aGVsbG8gd29ybGQgc2VjcmV0.x7f.tunnel.attacker.example.  TXT ?

🔍 읽는 포인트 : 사람이 쓰지 않는 길고 무작위해 보이는(Base64 · Hex) 서브도메인 이 한 도메인으로 반복되면 DNS 터널링을 의심합니다. DNS(UDP 53)는 대부분 방화벽에서 열려 있어 우회 통로가 됩니다.

📝 기출 포인트 — DNS 증폭과 대응(재귀 질의 제한) (2023), ANY 질의 (2022, 2025), DNS 터널링 (2025 "처음 등장" ⚠️), Domain Shadowing(2019), 쿼리 플러딩 · 증폭 · 싱크홀 · 스푸핑 구분 (2025).


4. DNS 보안 기술

4.1 ⭐ DNSSEC

DNSSEC (DNS Security Extensions) — [DNS 보안 확장]인데, [ 권한 서버가 레코드에 전자서명을 붙이고 리졸버가 상위 존부터 이어지는 신뢰 사슬로 검증 한다]는 점에서 응답 자체를 암호화하는 DoT · DoH와 구별된다.

레코드역할
DNSKEY존의 공개키 (ZSK — 레코드 서명용, KSK — DNSKEY 서명용)
RRSIG레코드 집합에 대한 서명
DS자식 존 KSK의 해시를 부모 존 에 등록 → 신뢰 사슬 연결
NSEC / NSEC3"그런 이름은 없다"는 부재 증명 (NSEC3는 이름을 해시해 존 나열을 어렵게)

존 서명 절차 : ① 키 생성(ZSK · KSK) → ② 존 파일에 DNSKEY 포함 후 존 서명 (RRSIG · NSEC 생성) → ③ KSK의 DS 레코드를 상위 존에 등록 → ④ 리졸버는 루트 → TLD → 존 순으로 검증.

DNSSEC이 주는 것 ⭕주지 않는 것 ❌
데이터 무결성 , 출처 인증 → 캐시 포이즈닝 · 파밍(DNS 변조형) 방지기밀성 (질의 · 응답은 평문), 가용성 (DDoS 방지 아님, 오히려 응답이 커짐)

⚠️ 반례: DNSSEC은 hosts 파일을 변조한 파밍은 막지 못합니다. DNS 질의 자체가 일어나지 않기 때문입니다.

📝 기출 포인트 — DNSSEC 4회(A1.4 최다): " DNSSEC이 제공하지 않는 것 = 기밀성 ", "막을 수 있는 위협 = 캐시 포이즈닝 · 파밍", "DNS 무결성 보강 확장 표준", 존 서명 절차 (2025).

4.2 ⭐ DNS 싱크홀

DNS 싱크홀 (Sinkhole) — [악성 통신 차단 기술]인데, [ 악성(C&C) 도메인 질의에 진짜 IP 대신 싱크홀 서버 IP를 응답 해 감염 PC의 접속을 끊고 식별한다]는 점에서 응답을 위조해 피해를 주는 DNS 스푸핑과 같은 기법을 방어에 쓴 것이다.

감염 PC ─"cnc.bad.example?"─> ISP/기관 DNS ─(싱크홀 목록에 있음)─> "10.10.10.10 (싱크홀 서버)"
감염 PC ──> 싱크홀 서버 : 접속 기록 → 감염 PC 식별 · 조치 안내

🔍 읽는 포인트 : 봇이 C&C에서 명령을 받지 못하게 하고, 싱크홀 서버의 접속 기록으로 감염 PC 목록 을 얻습니다. 국내에서는 KISA가 ISP · 기관과 함께 운영합니다.

📝 기출 포인트 — DNS 싱크홀 3회(2023 · 2024 · 2025 연속): " 봇넷 C&C 접속 차단 ". 2025년에는 오답 보기로 "DNS 라우팅 · 웜홀" 같은 그럴듯한 이름이 나왔습니다.

💡 비유는 마지막에 — DNSSEC은 주소록 각 줄에 찍힌 관인 , 싱크홀은 사기범 전화번호를 경찰 상황실로 돌려 놓는 것 입니다.


5. DB 보안 개념

5.1 DB 보안 요구사항과 통제 유형

요구사항뜻
부적절한 접근 방지허가된 사용자만 허가된 데이터에
추론 방지공개 · 통계 정보로 기밀 정보를 유추하지 못하게
데이터 무결성허가 없는 변경 · 오류로부터 보호
운영적 무결성동시 처리(트랜잭션) 중에도 논리적 일관성 유지
의미적 무결성값이 허용 범위 · 규칙(도메인 제약)을 지킴
감사 기능접근 · 변경 기록
사용자 인증OS보다 엄격한 DB 수준 인증
기밀 데이터 관리 · 제한(Confinement)민감 데이터 분리, 허가되지 않은 경로로 정보 흐름 금지

DB 보안 통제 3유형 : 접근통제 (누가 무엇에 접근), 추론통제 (통계로 개별 값 유추 방지), 흐름통제 (높은 등급 → 낮은 등급으로 정보 이동 방지).

⚠️ 반례: "집성(Aggregation)"은 통제가 아니라 위협 입니다. "부인방지"는 DB 보안 요구사항으로 보통 꼽지 않습니다 (메시지 · 거래의 요구사항).

📝 기출 포인트 — "DB 보안 요구사항이 아닌 것 "(2015, 2025 — 부인방지), "DB 보안 통제 유형이 아닌 것 = 집성"(2018), 무결성 개념. 앞에서 배운 접근통제 모델(17번 노트)의 DB판입니다.

5.2 ⭐ 추론 ↔ 집성

추론 (Inference)집성 (Aggregation)
정의접근 가능한 비기밀 · 통계 데이터를 조합 · 계산 해 기밀 값을 알아냄낮은 등급 정보를 많이 모으면 전체가 높은 등급 가치를 가짐
예"부서 평균 연봉"과 "부서 인원 · 다른 직원 연봉"으로 한 사람의 연봉 계산부대별 보급 물량(각각 공개)을 모두 모으면 작전 규모(기밀)
대응다중 인스턴스화(Polyinstantiation) , 질의 결과 집합 최소 크기 제한, 통계값에 잡음 추가(섭동), 셀 은폐데이터 분할 저장, 수집량 제한 · 감시

다중 인스턴스화 (Polyinstantiation) — [추론 방지 기법]인데, [ 같은 키의 레코드를 보안 등급별로 다른 값으로 여러 개 두어 , 낮은 등급 사용자가 "여기에 기밀이 있다"는 사실조차 추론하지 못하게 한다]는 점에서 접근 자체를 막는 접근통제와 구별된다.

📝 기출 포인트 — 추론 방지 · 추론 통제는 A1.5 최다(5회 이상). " 통계값으로 개별 데이터를 유추하는 것을 통제 ", "추론 · 집성과 다중 인스턴스화 대응"(2024 · 2025).


6. DB 공격과 접근통제

6.1 DB 공격

공격내용대응
SQL Injection앞 노트(13번 노트)의 주입 공격. DB 쪽에서 보면 " DB를 공격하는 주입 "Prepared Statement, 최소 권한
xp_cmdshell 악용MS SQL의 확장 저장 프로시저로 OS 명령 실행 — SQLi와 결합하면 서버 장악비활성화 (sp_configure 'xp_cmdshell', 0), sysadmin 권한 최소화
기본 계정 · 약한 비밀번호설치 기본 계정(예: 오라클 샘플 계정), sa 빈 비밀번호기본 계정 잠금 · 삭제, 비밀번호 변경
권한 남용 · 내부자과도한 권한, PUBLIC에 부여된 권한최소 권한, 감사
EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 0;          RECONFIGURE;   -- 0 = 비활성

🔍 읽는 포인트 : SQL Server 2005 이후 xp_cmdshell은 기본 비활성 입니다. 점검에서 1이면 취약입니다.

MS SQL 인증 모드 : Windows 인증 모드 (OS 계정으로 인증, 권장) ↔ 혼합 모드 (Windows + SQL Server 자체 계정). 혼합 모드면 sa 계정 비밀번호 관리가 중요합니다.

6.2 ⭐ 뷰와 권한 — GRANT · REVOKE

뷰 (View) — [가상 테이블]인데, [ 기본 테이블의 일부 행 · 열만 보이도록 정의해 그 범위만 접근시키는 ] 점에서 데이터를 실제로 복사하는 별도 테이블과 구별된다.

CREATE VIEW emp_public AS SELECT name, dept FROM employee;   -- 연봉 · 주민번호 열 제외
GRANT SELECT ON emp_public TO staff;                         -- 뷰에만 조회 권한
GRANT SELECT, UPDATE ON employee TO hr_manager WITH GRANT OPTION;  -- 받은 권한을 남에게 줄 수 있음
REVOKE UPDATE ON employee FROM hr_manager CASCADE;           -- 그가 다시 준 권한까지 연쇄 회수

🔍 읽는 포인트 : WITH GRANT OPTION은 앞에서 배운 DAC(임의적 접근통제, 17번 노트) 의 특징 — 권한을 가진 자가 남에게 넘깁니다. CASCADE는 그렇게 퍼진 권한을 연쇄 회수 합니다.

DB 접근제어 솔루션 유형

방식구조특징
게이트웨이(프록시)사용자와 DB 사이에 독립 서버 를 두고 모든 질의가 통과통제 강력, 우회 경로 차단 필요 · 성능 영향
스니핑네트워크 트래픽을 복사해 모니터링성능 영향 없음, 차단은 어려움 (감사 중심)
에이전트DB 서버에 에이전트 설치로컬 접속까지 통제, DB 서버 부하
하이브리드위 방식 조합—

📝 기출 포인트 — 뷰 (2017, 2023): "허가된 범위만 보이도록 제한". xp_cmdshell (2024, 2025), MS SQL 인증 모드 (2022), 독립 서버형 = 게이트웨이 방식 (2022).


7. DB 암호화와 감사

7.1 ⭐ DB 암호화 방식

방식어디서 암 · 복호화애플리케이션 수정부하가 걸리는 곳특징
API 방식애플리케이션 서버 에서 암호 라이브러리 호출필요(많음)애플리케이션 서버DB 서버 부하 없음, 개발 공수 큼
플러그인 방식DB 서버 에 설치한 암호 모듈을 DB 함수(뷰 · 트리거)로 호출적음(쿼리 일부)DBMS 서버설치 쉬움, DB 부하
TDE (Transparent Data Encryption)DBMS 커널 안에서, 디스크에 쓸 때 암호화 · 읽을 때 복호화없음DBMS (커널 수준이라 효율적)DBMS 제품 기능, 응용에 투명
파일 암호화OS · 파일 시스템 수준에서 DB 파일 전체없음OS컬럼 단위 선택 불가
하이브리드API + 플러그인 결합부분분산성능 · 공수 절충

💡 기억법: "어디까지 내려가서 암호화하나" — 애플리케이션(API) → DB 함수(플러그인) → DB 커널(TDE) → OS(파일). 아래로 갈수록 애플리케이션 수정이 줄고 , 위로 갈수록 세밀한 통제(컬럼 · 사용자별) 가 쉽습니다.

📝 기출 포인트 — DB 암호화 방식은 2024~2025에 3회 연속: " DBMS에 부하가 생기는 것 = 플러그인 ", " 앱 수정 없이 커널 수준 = TDE ", " 애플리케이션에서 암호화 = API ".

7.2 감사와 회복

  • 감사 : 누가 · 언제 · 어떤 객체에 · 무엇을 했는지 기록(오라클 AUDIT 문, DB 접근제어 솔루션 로그). 개인정보처리시스템이면 접속기록 보관 · 점검 의무 가 붙습니다.
  • 회복(Recovery) : 장애 시 로그로 되돌리기. 체크포인트 는 "이 시점까지는 디스크에 반영 완료"라는 표시로, 회복 때 로그를 처음부터 다시 읽지 않게 합니다.
  • 오라클 보안 설정 예 : 기본 계정 잠금 · 비밀번호 변경, 리스너 보호, PUBLIC 권한 회수, 감사 활성화, 최신 패치.

앞으로 다시 만납니다 — 24번 노트(개인정보보호법)에서 암호화 대상 정보와 접속기록 보관 기간을 법 기준으로 다시 봅니다.


8. 실기 연결

관련 수행준거 : 1-3 DNS · DB 서비스 동작절차와 환경 설정, 2-2-6 DNS 서버의 불필요한 명령어 수행 허가 여부 · DNS 보안 조치 점검 , 2-2-7 DB 서버 중요정보 암호화 저장 · DB 객체(테이블 · 칼럼 · 뷰)별 접근통제 점검 , 3-1 서비스별(DNS · DB) 로그 모니터링.

예상 질문답안 핵심어
존 전송 취약점과 조치AXFR로 내부 호스트 정보 노출, allow-transfer에 2차 DNS만 , TSIG
DNS 증폭 공격 대응오픈 리졸버, recursion 제한(allow-recursion 내부망) , ANY 응답 제한, RRL
DNSSEC의 효과와 한계서명(RRSIG) · 신뢰 사슬(DS), 무결성 · 출처 인증 ⭕ / 기밀성 · 가용성 ❌
DNS 싱크홀 동작C&C 도메인 질의 → 싱크홀 IP 응답 → 접속 차단 · 감염 PC 식별
DB 암호화 방식 비교API(앱 수정 · 앱 서버 부하), 플러그인(DB 부하), TDE(커널 · 앱 수정 없음)
DB 접근통제 점검뷰 · GRANT/REVOKE, 최소 권한, 기본 계정, xp_cmdshell 비활성

점검 예시

$ dig axfr example.com @ns1.example.com
; Transfer failed.                         ← 양호 (거부됨)

$ dig @ns1.example.com www.google.com +recurse
;; WARNING: recursion requested but not available   ← 권한 서버 양호 (재귀 거부)

🔍 읽는 포인트 : 존 전송이 레코드 목록을 쏟아내면 취약 , 외부에서 남의 도메인 재귀 질의에 답을 주면 오픈 리졸버(취약) 입니다.


9. 확인 문제

1. IP 주소로 도메인 이름을 찾는 역방향 조회에 쓰이는 레코드와 특수 도메인의 짝은? ① MX — in-addr.arpa ② PTR — in-addr.arpa ③ CNAME — ip6.int ④ NS — root-servers.net

2. BIND에서 허가된 2차 DNS 서버 외에는 존 전체 정보를 내려받지 못하게 하는 설정은? ① recursion no ② allow-query ③ allow-transfer ④ version "unknown"

3. DNSSEC이 제공하지 않는 것은? ① DNS 응답의 무결성 ② 응답 출처 인증 ③ DNS 질의 · 응답의 기밀성 ④ 캐시 포이즈닝 방지

4. 다음 설명에 해당하는 것은? "악성코드에 감염된 PC가 C&C 서버 도메인을 질의하면 실제 주소 대신 지정된 서버 주소를 응답해 접속을 차단하고 감염 PC를 식별한다." ① DNS 스푸핑 ② DNS 싱크홀 ③ DNS 터널링 ④ Domain Shadowing

5. 방화벽이 허용하는 DNS 질의의 서브도메인에 인코딩한 데이터를 실어 외부와 통신하는 기법은? ① DNS 증폭 ② DNS 쿼리 플러딩 ③ DNS 터널링 ④ 파밍

6. 데이터베이스 보안에서 "통계 정보 등 접근 가능한 데이터로 기밀 데이터를 유추하는 것"을 막기 위한 기법으로 가장 적절한 것은? ① 집성 ② 다중 인스턴스화 ③ WITH GRANT OPTION ④ 체크포인트

7. DB 암호화 방식 중 DB 서버에 암호 모듈을 설치하고 DB 함수로 암 · 복호화해 DBMS 서버에 부하가 걸리는 방식은? ① API 방식 ② 플러그인 방식 ③ TDE 방식 ④ 파일 암호화 방식

정답과 해설

#정답해설 (판별 축)
1②PTR = IP → 이름, IPv4 역방향은 in-addr.arpa. MX는 메일 서버, NS는 네임서버
2③존 전송 = allow-transfer. recursion은 재귀(증폭 대응), version은 버전 숨김
3③축 3: 서명은 무결성 · 출처 인증 만. 평문 그대로라 기밀성 없음
4②응답을 바꾸는 기법이 방어 에 쓰이면 싱크홀, 공격에 쓰이면 스푸핑(축 2 · 큰 축 ①)
5③축 2 오른쪽(DNS를 도구로). 증폭 · 플러딩은 가용성 공격, 파밍은 응답 위조
6②축 4: 추론 대응 = 다중 인스턴스화. 집성은 위협, GRANT OPTION은 권한 위임, 체크포인트는 회복
7②축 5: DB 함수 호출 = 플러그인 = DBMS 부하 . API는 앱 서버, TDE는 커널 수준

부록 A. 스스로 확인하기

#질문답이 있는 곳
1캐시 DNS 서버와 권한 DNS 서버의 차이는?1.1
2재귀 질의와 반복 질의는 각각 누구와 누구 사이인가?1.2
3이름 해석 순서에서 hosts와 DNS 서버의 선후는?1.2
4A · CNAME · MX · NS · PTR · TXT · ANY를 구분하면?1.3
5Windows DNS 캐시 조회 · 삭제 명령은? nslookup에서 질의 서버를 바꾸려면?1.4
6allow-transfer와 recursion 설정은 각각 무엇을 막나?2
7캐시 포이즈닝 · DNS 스푸핑 · 파밍의 오염 대상은?3.1
8DNS 증폭과 DNS 터널링의 대응은?3.2
9DNSSEC 레코드 네 가지와 제공하지 않는 것은?4.1
10DNS 싱크홀의 두 가지 효과는?4.2
11DB 보안 통제 3유형과 "통제가 아닌 것"은?5.1
12추론과 집성의 차이, 다중 인스턴스화란?5.2
13xp_cmdshell 조치와 MS SQL 인증 모드는?6.1
14게이트웨이 · 스니핑 · 에이전트 방식의 차이는?6.2
15API · 플러그인 · TDE의 부하 위치와 앱 수정 여부는?7.1

부록 B. 자주 하는 실수 · 함정

실수바로잡기
"DNS는 TCP만 쓴다" / "UDP만 쓴다"⚠️ 질의는 UDP 53 , 존 전송 · 큰 응답은 TCP 53
"ANY는 레코드 유형"❌ 질의 유형 (가진 것 전부)
"MX 선호도는 클수록 우선"❌ 작을수록 우선
"DNSSEC은 DNS를 암호화한다"❌ 서명 만. 기밀성 없음
"DNSSEC이면 모든 파밍이 막힌다"❌ hosts 변조형 은 못 막음
"싱크홀은 공격 기법"❌ 응답 조작을 방어에 쓰는 기법
"권한 DNS 서버도 재귀를 열어 둔다"❌ 권한 서버는 recursion no. 열린 재귀는 증폭의 반사기
"집성은 DB 보안 통제 유형"❌ 위협 . 통제는 접근 · 추론 · 흐름
"부인방지는 DB 보안 요구사항"⚠️ 보통 꼽지 않음 — "거리가 먼 것"의 정답
"TDE는 애플리케이션을 고쳐야 한다"❌ 수정 불필요 (투명). 수정이 많은 것은 API
"플러그인 방식은 DB 서버 부하가 없다"❌ DB 서버 부하 가 가장 큰 방식
"REVOKE하면 그 사람이 남에게 준 권한은 그대로"⚠️ CASCADE로 연쇄 회수

부록 C. AI · NotebookLM 복습 프롬프트

이 14번 노트(DNS · DB 보안)만 근거로 4지선다 7문제를 내줘. 노트 밖 내용은 쓰지 마.
레코드 유형(PTR · MX), allow-transfer/recursion, 캐시 포이즈닝과 파밍, DNSSEC이 주지 않는 것, DNS 싱크홀, 추론과 다중 인스턴스화, DB 암호화 방식은 반드시 포함해줘.
내가 답하면 채점하고, 오답 보기가 0절의 어느 축 반대편인지 절 번호와 함께 설명해줘.