전자 메일 인증 - SPF, DKIM, DMARC
전자 메일 인증
손으로 편지를 보낼 때 발신자와 수신자를 임의로 작성할 수 있는 것 처럼 메일 전송을 위한 SMTP도 수/발신자를 임의로 작성할 수 있다. 이것 때문에 많은 문제가 발생하는데 아무에게나 메일을 보내는 것 자체는 메일의 기본 기능이지만 1) 다른 사람인 척 위조하여 메일을 보내면 안된다. 메일 송/수신량에 제한이 없으므로 특정 사용자가 많은 메일을 보내거나 특정 서버가 공격 당하여 2) 스팸메일 발송 서버로 이용될 수 있다. 이를 해결하기위해 메일 발신자 혹은 발신서버의 인증이 필요한데, 이를 수행할 수 있는 주체는 도메인 오너이다. 오너가 자기 도메인을 관리하는 DNS에서 발신자 혹은 발신서버가 변조된 것이 아닌지 관리하고 확인을 진행하는 것이다.
메일 보안을 위한 DNS 설정
메일 발신자 정보를 관리하고 승인하기 위하여 DNS에서는 다음과 같은 세 가지 타입의 레코드를 지원한다(모두 TXT 레코드긴 하지만).
- SPF(Sender Policy Framework) : 메일서버등록제1. 메일 서버 정보를 DNS로 사전 공개하여 발송자 정보와 발송 메일 서버 정보 매칭
- DMARC(Domain-based Message Authentication, Reporting and Conformance) : 메일 인증 프로토콜
- DKIM(DomainKeys Identified Mail) : 도메인 서명.?
각각에 대해서 살펴 보면 다음과 같다.
SPF
SPF(Sender Policy Framework)는 DNS의 TXT 레코드이다. 전송자(Sender)의 메일 서버에 대한 정책(Policy)을 정의하여, 해당 정책을 기준으로 전송자 인증을 제공한다.
기본적인 레코드 형태
v = spf1 <IP><enforcement rule>; 1) 관리하는 도메인(예를 들어 @testdomain.net)의 메일 발송 서버 IP가 1.2.3.4인 경우,; 2) @testdomain.net에서 발송되는 메일은 1.2.3.4에서 발송되는 서버만 정상 메일이고,그 외 아이피 혹은 도메인에서 발송되는 메일은 발신자가 조작된 메일일 수 있다.; 3) 이를 위하여 1.2.3.4에서 보낸 메일만 accept하고 나머지 서버에서 보낸 메일은 우리가 관리하는 서버가 아니니 deny하라고 알려주고 싶을 경우 DNS에 다음과 같은 SPF(txt) 레코드를 추가하면 된다.testdomain.net. IN TXT "v=spf1 ip4:1.2.3.4 -all""v=spf1 -all" ;해당 도메인으로 보내는 모든 메일을 차단"v=spf1 a -all" ;해당 도메인으로 보내는 메일은 a서버를 제외하고 모두 차단"v=spf1 a mx -all" ;해당 도메인으로 보내는 메일은 a서버를 제외하고 모두 차단- 도메인 -질의 방향 -타입 -SPF 레코드 값
룰에 대한 한정자(qualifier)는 다음과 같다. => + : Pass. 받는다는 뜻 => – : Fail. 안 받는다는 뜻. => ~ : SoftFail. 살짝 안 받는다(?)는 뜻. fail이 기본 룰이지만 수신 서버 정책에 따라 다르게 동작할 수 있다. 메일헤더 중 Received-SPF:에 SoftFail이라고 표시한다. => ? : Neutral. 패스시키지도 페일 시키지도 않는다고 한다. 실제로 써본적은 없는데 왜 존재하는거지? Received-SPF
주요 설정
- 하위 도메인 : 하위 도메인은 상위 도메인의 SPF를 상속하지 않는다. 예를 들어 testmail.net의 SPF를 설정하더라도 mail.testmail.net, sender.mail.testmail.net 등과 같은 하위 도메인에 대한 SPF는 별도 설정하여야 한다.
DKIM
DKIM(DomainKeys Identified Mail, 도메인키 식별 메일). 디지털 서명 추가. 123
DMARC
DMARC(Domain-based Message Authentication, Reporting and Conformance, 도메인 기반 메시지 인증, 리포팅, 적합성 모델)는 이메일 인증 프로토콜이다.
EOP(Excahgne Online Protection)4
EOP는 Exchange Online(Microsoft 365)의 모든 메일에 대한 보안 필터이다. 퍼블릭 클라우드의 구성 뿐만 아니라 아래 구성도 정상 커버한다.
- 독립 실행(On-Premise) : On-Premise의 Exchange, SMTP 전체에 대한 클라우드 기반 필터링 제공
- 하이브리드 : 온-프레미스와 클라우드 사서함을 동시에 이용하는 경우에도 메일 라우팅을 조절하여 EOP를 거치도록 구성 가능
작동 방식
아래 룰을 통해서 필터링을 진행한다1.
시작. 사용자에게 메일 전송(MX 레코드 기반)
- 연결 필터링 룰 체크 : 차단 IP, 허용 IP, 수신 허용 목록 등 룰 체크
- 안티 멀웨어 체크 : 멀웨어 체크
- 메일 흐름 체크(정책 필터링)
- 안티 스팸 필터링 : 스팸 메일 체크 끝. 사용자 사서함에 메일 도착