Back-end/Network

[Network]SPF란? Sender Policy Framework

cheersHena 2020. 3. 18. 15:56
반응형

SPF : Sender Policy Framework 

DNS (Domain Name Service)레코드의 한 유형으로 , 스팸 발송자가 전자 메일주소를 스푸핑하거나 도용하여 수천개 전자메일을 불법으로 보낼수 있는 전자메일시스템의 허점을 방지하기 위해 만들어짐.

SPF는 메일서버 정보 사전에 DNS에 공개등록함으로써 수신자로 하여금 이메일에 표시된 발송자 정보가 실제 메일서버의 정보와 일치하는지 확인할 수 있도록 하는 메일검증 기술이다
메일서버 등록제 라고도 불림. 


메일전송시 기본적으로 사용하는 smtp (simple mail transfer protocol) 은 너무간단하여 실제 발송자 인증할수 있는 기능이 없기 때문에 이를 보완. 

SPF 작동방식
DNS 기반의 스팸필터랑 기술로 메일 발송한 도메인에 대해 실제로 정상적으로 등록된 도메인에서 메일이 발송되었는지 질의통해서 처리함. 즉, 메일발송지의 DNS 서버의 특정레코드 (TXT) 에 질의하고, 응답결과 따라 정상적인 메일인지 아닌지 구분함.

SPF 사용위해서 발신측에서는 메일서버의 정보와 정책을 나타내는 SPF 레코드를 해당 DNS에 등록해두어야하고, 수신측에서는 메일서버나 스팸 차단 솔루션에 SPF확인기능 설치하여 이메일 수신시 발송자의 DNS에 등록된 SPF레코드를 확인하여 해당 이메일에 표시된 발송 IP와 대조하고 그 결과값에 따라 수신 여부 결정.

SPF 입력형식
SPF는 TXT레코드 이용하여 입력하며, TXT레코드 사용하여 도메인 이름을 하나이상의 메일서버에 매핑한다.
TXT레코드는 SPF태그 v=spf1 및 기타 SPF 한정자, 매커니즘, 수정자 포함한다.

메커니즘
설명
사용 예
all
주로 SPF 레코드의 가장 마지막 자리에 오며, 항시 사용됨.
"v=spf1 mx -all" - 해당 도메인(SMTP 명령어중 MAIL FROM 에 사용되는 이메일 주소의 @ 뒷부분)의 MX서버를 질의 하여 발송서버의 IP가 MX서버의 IP와 일치하면 수신허용. 그렇지 않은 모든 경우는 수신거부.
"v=spf1 -all"  - 해당 도메인은 어느 서버에서도 메일을 발송하지 않음.
"v=spf1 +all"  - 해당 도메인은 SPF레코드가 쓸모 없다고 생각하며 전혀 신경 쓰지 않음.(어떤 IP에서 접속하든 수신 허용하라는 뜻)
ip4
ip4메커니즘의 인자 값 IPv4의 네트워크 범위로 만약 prefix-length가 정의되지 않았다면 기본값은 /32임.
"v=spf1 ip4:192.168.0.1/16 -all"  -  192.168.0.1 와 192.168.255.255 사이의 IP주소만 pass하고 나머지는 fail.
ip6
ip6메커니즘 인자 값은 IPv6 네트워크 범위로. prefix-length가 정의되지 않았다면 기본값은 /128임.
"v=spf1 ip6:1080::8:800:200C:417A/96 -all"  -  1080::8:800:0000:0000 와 1080::8:800:FFFF:FFFF 사이의 IP주소만 pass, 나머지는 fail.
a
해당도메인의 모든 A 레코드를 테스트한다. 발송서버의 IP가 그 중 하나라도 일치하면 pass
"v=spf1 a -all"  - 현재 도메인 테스트.
"v=spf1 a:example.com -all" -  현재 도메인이 example.com이라면 위와 동일.
"v=spf1 a:mailers.example.com -all"  mailers.example.com의 A레코드질의 후 나온 IP가 발송서버의 IP와 일치하면 통과
mx
a메커니즘과 유사하게 DNS에 각각 A대신 MX와 PTR레코드를 질의하여 그 결과값으로 판단.
 
ptr
과도한 DNS질의로 권장되지 않으며,찾아낸 호스트의 A레코드 중 최소 하나이상이 발신서버의 IP와 일치하여야 하며 도메인 명이 명시되지 않았다면 현재 도메인 사용.
"v=spf1 ptr -all" -  모든 서버를 직접 관리하는 도메인의 경우 이 모든 서버들로 부터 메일이 발송되는 것을 허용할 수 있다. 예를 들어 hotmail.com이나 paypal.com은 이와 같은 SPF를 정의할 수도 있음.
"v=spf1 ptr:otherdomain.com -all"  - 
도메인 명이 otherdomain.com으로 끝나는 모든 호스트명을 지정.
include
주어진 도메인에 대한 SPF질의를 수행. 만약 해당 도메인이 유효한 SPF정보를 가지고 있지 않다면 결과는 permanent error.
"v=spf1 include:example.com -all"  -  example.com 이 SPF 정보를 가지고 있지 않다면 결과는 PermError. example.com의 SPF record정보가 "v=spf1 a -all" 인 경우를 가정. examplecom의 A타입 질의를 수행한 결과가 1.2.3.4 라면 통과. 만약 매치되는 결과가 없다면 include는 실패이고 이 예에서의 전체적인 결과도 실패.
"v=spf1 ?include:example.com -all"  -   include 메커니즘은 도메인 간의 상호 관리 범위 의미. include를 사용할 경우  악의적 사용자에게 이용되지 않도록 주의. 정의된 외부 도메인에 악의적 사용을 제한할 수 있는 기술적 장치가 없다면 include메커니즘은 Pass보다는 Neutral 결과를 주어야 하며. include 앞에 "?"를 붙임.


*cmd 창으로 SPF 확인방법
>nslookup
>set type=txt
>[ 조회하고자하는 DNS주소 ]


사용 ex) 예를들어 새로운 메일서버 220.95.212.157 인 경우 hansik.or.kr로 메일전송시 ,
실제 sfp에 등록된 159번과 실제발송지 157이 불일치 하므로 스팸에서 걸러지게 되는것이다. 

spam ex)



* mx레코드 조회하기 


해당도메인의 mx레코드를 조회하여
~~.158이 스팸서버 ip임을 알 수 있다. 


159가 실지 서버 ip 

반응형