본문 바로가기

보안

메일 보안

1. SPF (Sender Policy Framework)

  • ✔️ 개념: 이 IP가 이 도메인을 대신해서 메일 보낼 수 있는지 확인. SPF는 발신 도메인에 등록된 DNS 레코드의 IP와 실제 메일을 보낸 서버의 IP가 일치하는지 확인하는 방식이다.

ex) 도메인 example.com의 DNS에 다음과 같은 SPF 레코드가 등록되어 있다고 하자:

v=spf1 ip4:192.0.2.0/24 include:_spf.google.com -all

→ 이 도메인에서 메일을 보낼 수 있는 서버는 192.0.2.0/24 또는 구글 SMTP만 허용하고, 그 외는 다 거부.

  • SPF가 유효한 경우
    • Return-path (Envelope From) 도메인의 DNS 레코드와 발신 IP가 일치
  •  ❌ SPF 실패하는 경우
    • 스푸핑한 발신 IP에서 메일을 보냈는데, 해당 도메인 DNS에 없음

2.  DKIM (DomainKeys Identified Mail)

  •  개념: 메일에 디지털 서명을 걸어, 내용이 변조되지 않았고 도메인이 진짜인지 확인한다. DKIM은 발신 서버가 메일에 개인키로 서명하고, 수신 서버는 DNS에 등록된 공개키로 서명을 검증하는 방식이다.

(1)  동작 방식

  • 발신 메일 서버가 특정 헤더와 본문에 서명을 해서 메일에 붙임
  • 수신 서버는 발신 도메인의 DNS에서 공개키를 가져와 서명 검증
DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=mail;
  • d=example.com: 서명한 도메인
  • s=mail: DNS에서 mail._domainkey.example.com 위치에서 공개키를 찾음
  • ❗주의
    • DNS에 공개키가 없으면 검증 실패 (→ 이 경우 false positive 위험 존재)
    • 서명 대상이 되는 헤더/본문이 변경되면 무효 처리됨

 3. DMARC (Domain-based Message Authentication, Reporting, and Conformance)

  •  개념: SPF와 DKIM이 실패했을 때 이 메일을 어떻게 처리할지 도메인 주인이 알려준다. DMARC는 SPF와 DKIM을 정책적으로 강제하고, 보고서를 받아볼 수 있게 해주는 프레임워크이다. 

(1) DNS 예시

_dmarc.example.com. IN TXT "v=DMARC1; p=reject; rua=mailto:dmarc-report@example.com"
  • p=none | quarantine | reject : 실패 시 행동 정의
    • none: 아무 것도 안 함 (모니터링 용)
    • quarantine: 스팸처리
    • reject: 수신 거부
  • rua: 리포트를 받을 메일 주소

(2) DMARC 평가 방식

DMARC는 아래 둘 중 하나라도 PASS여야 통과로 간주해:

  1. SPF 결과가 pass이고, Return-Path 도메인이 From과 일치
  2. DKIM 결과가 pass이고, 서명한 도메인이 From과 일치

4. 정리

기술 목적 검증 대상 DNS 필요 강제 정책 설정

SPF 발신 서버 IP 검증 Return-path 도메인
DKIM 메일 무결성 및 발신자 인증 From 도메인 (d=)
DMARC SPF/DKIM 실패 시 처리 정의 From 도메인

 

  • SPF, DKIM 설정은 필수
  • DMARC는 먼저 p=none으로 시작 → 리포트 받고 검토 → quarantine이나 reject로 단계적 강화
  • SPF에는 -all (강한 거부) 또는 ~all (유연한 거부) 사용 주의
  • DKIM은 키 회전 주기적으로 수행
  • 수신 메일 보안 솔루션에서 SPF/DKIM/DMARC 결과 로그 분석 자동화 가능

 

'보안' 카테고리의 다른 글

unprivileged_bpf_disabled  (0) 2025.05.02
장비 도입 절차 - BMT/PoC/DEMO  (0) 2023.07.18
싱글사인온(SSO) 보호 대책  (0) 2023.06.16
공격이 들어왔는데 kisa아이피..?  (0) 2020.10.22
DoS 에 취약한 서비스들  (0) 2020.08.24