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여야 통과로 간주해:
- SPF 결과가 pass이고, Return-Path 도메인이 From과 일치
- 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 |