209. DMARC (Domain-based Message Authentication, Reporting & Conformance)

⚠️ 이 문서는 이메일 사칭(피싱)을 막기 위해 도입된 SPF(발신 IP 검증)와 DKIM(디지털 서명 검증) 기술의 약점을 상호 보완하고, 검증에 실패한 메일을 수신 서버가 구체적으로 어떻게 처리해야 할지(격리, 차단 등)에 대한 '최종 행동 지침'을 지정해 주는 DMARC 보안 정책을 다룹니다.

핵심 인사이트 (3줄 요약)

  1. 본질: 도메인 소유자(예: 은행)가 수신 측(예: 구글 메일 서버)에게 "우리 은행 이름으로 온 메일이 SPF나 DKIM 검사 중 하나라도 실패하면, 무조건 쓰레기통에 버려라(Reject)"라고 DNS에 선언해 두는 규정이다.
  2. 가치: 기존 SPF나 DKIM은 검사 결과만 알려줄 뿐 그 메일을 받을지 말지는 전적으로 수신 측 마음대로여서 가짜 메일이 여전히 수신함에 들어가는 문제가 있었으나, DMARC를 통해 발신자가 직접 통제권을 갖게 되었다.
  3. 기술 체계: 'Header From(사용자가 보는 주소)'과 SPF/DKIM이 검증한 '봉투 주소(Envelope From)'가 정확히 일치하는지 확인하는 정렬(Alignment) 검사를 수행하며, 위반 통계 보고서(Reporting)를 발신자에게 전송해 준다.

Ⅰ. SPF와 DKIM의 맹점: 누가 총대를 맬 것인가?

앞선 방어 기술들은 훌륭하지만 '그래서 어쩌라고?'에 대한 명확한 답이 없었다.

  1. SPF의 한계 (Header 조작):
    • SPF는 봉투(Return-Path)의 발신자 IP만 검사한다. 해커가 봉투는 자기 서버(통과)로 적어놓고, 실제 사용자가 보는 편지 안의 '보낸 사람(Header From)'만 카카오 관리자로 위조하면 SPF는 이를 정상으로 통과시켜 버린다.
  2. 수신 서버의 딜레마:
    • 수신 서버(네이버 등)가 메일을 받았는데 SPF는 통과했고 DKIM은 실패했다면, 이 메일을 스팸함에 넣어야 할지 정상 수신함에 넣어야 할지 눈치를 보게 된다. 오탐(False Positive)으로 정상 메일을 삭제하면 수신자에게 항의를 받기 때문이다.
  3. DMARC의 탄생:
    • 이 딜레마를 해결하기 위해, 원래 도메인의 주인(카카오)이 DNS에 "내 이름으로 온 메일이 인증에 실패하면 당신들이 책임지지 말고 무조건 삭제(Reject)하시오"라고 공식적인 면책 특권이자 가이드라인을 적어두는 것이 DMARC다.

📢 섹션 요약 비유: SPF/DKIM이 위조지폐인지 아닌지 감정해 주는 '감식기'라면, DMARC는 은행 본점이 각 지점에 "감식기에서 빨간불이 들어온 지폐는 즉시 그 자리에서 파쇄기(Reject)에 넣어버리라"고 내려보낸 '단호한 업무 지침'입니다.


Ⅱ. DMARC의 작동 원리: 정렬(Alignment)과 정책(Policy)

DMARC는 새로운 암호화 기술이 아니라, 기존 두 기술을 강력한 논리로 묶는 접착제다.

  1. 정렬 검사 (Alignment):
    • 가장 중요한 핵심 방어 기법이다. 봉투에 적힌 도메인(SPF 검사 대상)과 편지 안에 적힌 도메인(사용자가 보는 Header From)이 **일치(Align)**하는지를 검사한다.
    • 해커가 봉투와 내용물의 보낸 사람을 다르게 써서 치는 사기를 원천 차단한다.
  2. 3가지 정책 (p, Policy):
    • 도메인 소유자는 DNS TXT 레코드(_dmarc.example.com)에 다음과 같이 지시한다.
    • p=none: (모니터링 모드) 실패해도 그냥 수신함에 넣어줘라. 통계만 내보자.
    • p=quarantine: (격리 모드) 실패하면 스팸함으로 보내라.
    • p=reject: (차단 모드) 실패하면 수신 자체를 튕겨내라 (가장 강력한 보호).
  3. 보고서 수신 (rua, ruf):
    • DMARC 레코드에 내 이메일 주소를 적어두면(rua=mailto:admin@ex.com), 전 세계에서 내 도메인을 사칭해 스팸을 보내려다 차단된 내역(누가, 어떤 IP로 시도했는지)이 담긴 XML 리포트를 매일 받아볼 수 있다.

📢 섹션 요약 비유: 경비원이 택배를 받을 때, 송장(봉투)에 적힌 회사명과 박스를 뜯어 나온 물건(Header From)의 상표가 똑같은지(Alignment) 먼저 확인하고, 다르면 택배사 본점(발신자)의 지침에 따라 쓰레기통(Reject)에 던져버리는 과정입니다.


Ⅲ. 이메일 보안 3종 세트의 완성 체계

기업 메일 보안을 완벽히 하려면 반드시 SPF → DKIM → DMARC 순서로 3가지를 모두 세팅해야 한다.

  1. 단계별 적용 가이드:
    • 처음부터 DMARC를 p=reject로 걸면, 회사 내부의 사내망이나 마케팅 툴에서 보내는 정상 메일도 몽땅 차단될 수 있다.
    • 따라서 초기 1~2개월은 p=none으로 설정하고 리포트(rua)만 받아 분석하면서, 누락된 정상 IP들을 SPF 목록에 추가하는 튜닝 작업을 선행해야 한다.
  2. 보안 검증 알고리즘 (수신 측):
    • ┌─────────────────────────────────────────────────────────┐ │ 1. 메일 수신 │ │ 2. SPF 검사 & 정렬 검사 -> 통과(Pass)? │ │ 3. DKIM 검사 & 정렬 검사 -> 통과(Pass)? │ │ 4. 둘 중 하나라도 통과하면 DMARC Pass! 정상 수신. │ │ 5. 둘 다 실패하면 DMARC 정책(p=reject)에 따라 강제 폐기. │ └─────────────────────────────────────────────────────────┘

📢 섹션 요약 비유: 회사 정문을 통과하려면 '경비원 명부 대조(SPF)'나 '사원증 전자서명(DKIM)' 둘 중 하나는 반드시 통과해야 하며, 둘 다 실패했을 때 쫓아내는 최종 수문장 역할이 바로 DMARC입니다.