목차

소개

사전 요구 사항

배경 정보

구현 시 고려 사항

ESA에서 dnssec 지원 DNS 확인자를 사용하는지 확인합니다.

Mail Direction(메일 방향)은 DANE가 확인할지 여부를 결정합니다.

SMTP 경로

DANE 기회주의적 또는 DANE 필수

여러 어플라이언스 환경에서 DANE 사용

여러 DNS 리졸버 관리

보조 DNS 서버 관리

구성

아웃바운드 메일 흐름에 대해 DANE를 구성합니다.

대상 제어 프로필 - DANE 확인

DANE 성공 확인

관련 정보

소개

이 문서에서는 ESA 아웃바운드 메일 흐름을 위한 DANE 구현에 대해 설명합니다.

사전 요구 사항

ESA 개념 및 구성에 대한 일반적인 지식

DANE 구현 요건:

- DNSSEC 지원 DNS 확인자

- ESA with AsyncOS 12.0 이상

배경 정보

DANE는 아웃바운드 메일 검증을 위해 ESA 12에 도입되었습니다.

DANE(Named Entities)의 DNS 기반 인증.

- DANE는 DNSSEC을 사용하여 X.509 디지털 인증서를 도메인 이름에 바인딩할 수 있는 인터넷 보안 프로토콜입니다(RFC 6698).

- DNSSEC는 공개 키 암호화를 사용하여 DNS 레코드를 보호하기 위한 IETF 사양의 모음입니다.(매우 기본적인 설명.RFC 4033, RFC 4034 및 RFC 4035)

구현 시 고려 사항

ESA에서 dnssec 지원 DNS 확인자를 사용하는지 확인합니다.

DANE를 구현하려면 dnssec/DANE 쿼리를 수행하는 DNS 기능이 필요합니다.

ESA DNS DANE 기능을 테스트하기 위해 ESA CLI 로그인에서 간단한 테스트를 수행할 수 있습니다.

CLI 명령 'daneverify'는 복잡한 쿼리를 수행하여 도메인이 DANE 확인을 전달할 수 있는지 확인합니다.

동일한 명령을 알려진 양호한 도메인과 함께 사용하여 dnssec 쿼리를 해결하는 ESA 기능을 확인할 수 있습니다.

'ietf.org'는 세계적으로 알려진 소스입니다.cli 명령 'daneverify'를 수행하면 DNS 확인자가 DANE를 사용할 수 있는지 여부를 확인합니다.

유효한 통과:ietf.org에 대한 DANE 지원 DNS 서버 "DANE SUCCESS" 결과

> daneverify ietf.org

SECURE MX record(mail.ietf.org) found for ietf.org

SECURE A record (4.31.198.44) found for MX(mail.ietf.org) in ietf.org

Connecting to 4.31.198.44 on port 25.

Connected to 4.31.198.44 from interface 216.71.133.161.

SECURE TLSA record found for MX(mail.ietf.org) in ietf.org

Checking TLS connection.

TLS connection established: protocol TLSv1.2, cipher ECDHE-RSA-AES256-GCM-SHA384.

Certificate verification successful

TLS connection succeeded ietf.org.

DANE SUCCESS for ietf.org

DANE verification completed.

잘못된 실패:IETF.org에 대한 비 DANE 지원 DNS 서버 "FUS" 결과

> daneverify ietf.org

BOGUS MX record found for ietf.org

DANE FAILED for ietf.org

DANE verification completed.

유효한 실패:daneverify cisco.com > cisco는 DANE를 구현하지 않았습니다.dnssec 지원 해결 프로그램의 예상 결과입니다.

> daneverify cisco.com

INSECURE MX record(alln-mx-01.cisco.com) found for cisco.com

INSECURE MX record(alln-mx-01.cisco.com) found. The command will still proceed.

INSECURE A record (173.37.147.230) found for MX(alln-mx-01.cisco.com) in cisco.com

Trying next MX record in cisco.com

INSECURE MX record(rcdn-mx-01.cisco.com) found for cisco.com

INSECURE MX record(rcdn-mx-01.cisco.com) found. The command will still proceed.

INSECURE A record (72.163.7.166) found for MX(rcdn-mx-01.cisco.com) in cisco.com

Trying next MX record in cisco.com

INSECURE MX record(aer-mx-01.cisco.com) found for cisco.com

INSECURE MX record(aer-mx-01.cisco.com) found. The command will still proceed.

INSECURE A record (173.38.212.150) found for MX(aer-mx-01.cisco.com) in cisco.com

DANE FAILED for cisco.com

DANE verification completed.

위의 테스트가 "VALID"로 작동하는 경우:

- 도메인에 대한 프로필을 추가하기 전에 각 도메인을 테스트하는 것이 좋습니다.

- 보다 적극적인 접근 방식은 Default Destination Controls Profile(기본 대상 제어 프로파일)에서 DANE를 구성하고 누가 통과/실패하는지 확인하는 것입니다.

Mail Direction(메일 방향)은 DANE가 확인할지 여부를 결정합니다.

"RELAY" 작업이 구성된 발신자 그룹/메일 플로우 정책은 DANE 확인을 수행합니다.

"ACCEPT" 작업이 구성된 발신자 그룹/메일 플로우 정책은 DANE 확인을 수행하지 않습니다.

주의:ESA에 기본 정책에서 대상 제어 "DANE"가 활성화된 경우, 전달 실패 위험이 있습니다.  RAT에 나열된 도메인과 같은 내부 소유 도메인이 RELAY 및 ACCEPT 메일 플로우 정책을 모두 통과하고 도메인에 대한 SMTP 경로가 있는지 확인합니다.

SMTP 경로

"Destination Host"가 "USEDNS"로 구성되지 않은 경우 DANE는 SMTP 경로에서 실패합니다.

DANE Opportunistic은 바운스 프로파일 타이머가 만료될 때까지 전달 대기열에 메시지를 포함하는 메시지를 전달하지 않습니다.

왜?SMTP 경로가 실제 대상을 수정하기 때문에 DANE 확인을 건너뛰고 DNS를 제대로 사용하지 못할 수 있습니다.

해결책:SMTP 경로가 포함된 도메인에 대해 DANE 확인을 명시적으로 비활성화하려면 대상 제어 프로필 생성

DANE 기회주의적 또는 DANE 필수

DANE 확인 중에 다음 조회가 수행됩니다.

각 확인은 후속 확인을 수행하기 위해 콘텐츠를 제공합니다.

- MX Record lookup(MX 레코드 조회)은 >>> Secure, Unsecure, Insecure, Both(비보안)

- 레코드 조회는 >> 보안 비보안 > 가짜 여부를 확인합니다.

- TLSA 레코드 조회는 >> 보안, 비보안, 위조됨, NXDOMAIN 확인

- 인증서 확인 >> 성공, 실패

보안:

- DNS가 신뢰 체인을 올린 RRSIG 검증 서명 RRSIG DS 및 DNSKEY가 포함된 보안 레코드가 있는지 확인했습니다.

안전하지 않음:

- DNS는 도메인에 dnssec 사용 가능한 레코드가 없음을 확인합니다.

가짜:

- 불완전하지만 현재 dnssec 항목은 검증에 실패할 수 있습니다.

- 만료된 키로 인해 레코드가 잘못되었습니다.

- 신뢰 체인에 레코드 또는 키가 없습니다.

NXDOMAIN

- DNS에 레코드가 없습니다.

위의 레코드 검사와 확인 결과를 조합하여 "DANE Success(DANE 성공)"를 결정합니다. | DANE 실패 | DANE를 TLS로 대체합니다."

예:example.com의 MX 레코드로 전송된 RRSIG가 없는 경우, example.com에 DNSKEY 레코드가 있는지 확인하기 위해 상위 영역(.com)이 확인되며, 이는 example.com이 해당 레코드에 서명해야 함을 나타냅니다.이 검증은 루트 영역(.) 키 확인을 통해 신뢰 종결의 체인을 계속 이어갑니다.에 도달하면 루트 영역의 키가 ESA가 기대하는 것과 일치합니다(RFC5011에 따라 자동 업데이트되는 ESA의 하드 코드된 값).

DANE 필수

DANE 필수

참고:DANE 기회주의적은 TLS가 선호하는 방식으로 동작하지 않습니다.아래 차트의 ACTION 부분(DANE FAIL 결과)은 Mandatory(필수) 또는 Opportunistic(기회주의적)에 대해 제공되지 않습니다.타이머가 만료될 때까지 메시지는 배달 대기열에 남아 있다가 전달이 종료됩니다.

DANE 기회주의적

DANE 기회주의적

여러 어플라이언스 환경에서 DANE 사용

다음 그림은 여러 어플라이언스 환경에서 DANE를 활성화할 때의 워크플로를 보여줍니다.

환경에 ESA 어플라이언스의 여러 레이어가 있는 경우, 하나는 스캐닝용, 다른 하나는 메시지 전달용 DANE는 외부 대상에 직접 연결하는 어플라이언스에만 구성되도록 합니다.

다중 ESA 설계.전달 ESA에 구성된 DANE

여러 DNS 리졸버 관리

ESA에 여러 개의 DNS 리졸버가 구성되어 있고 DNSSEC를 지원하는 몇 개는 DNSSEC를 지원하지 않는 경우, Cisco에서는 DNSSEC 지원 리졸버를 높은 우선순위(낮은 숫자 값)로 구성하여 불일치를 방지하는 것이 좋습니다.

이렇게 하면 비 DNSSEC 지원 확인자가 DANE를 지원하는 대상 도메인을 'Fauthe'로 분류하지 않습니다.

보조 DNS 서버 관리

DNS 확인자에 연결할 수 없으면 DNS가 보조 DNS 서버로 돌아갑니다.보조 DNS 서버에서 DNSSEC을 구성하지 않으면 DANE 지원 대상 도메인에 대한 MX 레코드가 'Boxing'으로 분류됩니다. 이는 DANE 설정(기회주의적 또는 필수)에 관계없이 메시지 전달에 영향을 미칩니다. 보조 DNSSEC 지원 해결 프로그램을 사용하는 것이 좋습니다.

구성

아웃바운드 메일 흐름에 대해 DANE를 구성합니다.

1. WebBui > Mail Policies > Destination Controls > Add Destination으로 이동합니다.

2. 프로파일의 상위 부분을 기본 설정으로 완료합니다.

3. TLS 지원:"TLS Preferred(TLS 기본 설정)로 설정해야 합니다. | 기본 설정 - 확인 | 필수 | 필수 - 확인| 필수 - 호스팅 도메인을 확인합니다."

4. TLS 지원이 활성화되면 DANE 지원:드롭다운 메뉴가 활성화됩니다.

5. DANE 지원:옵션에는 "없음"이 포함됩니다. | 기회주의적 | 필수.

6. DANE 지원 옵션이 완료되면 변경 사항을 제출하고 커밋합니다.

대상 제어 프로필 - DANE 확인

DANE 성공 확인

배달 상태

WebUI "Delivery Status" 보고서에서 목적지 도메인의 의도하지 않은 빌드를 모니터링합니다(잠재적으로 DANE 오류).

서비스를 활성화하기 전에 이 작업을 수행한 다음 며칠 동안 주기적으로 수행하여 지속적인 성공을 보장합니다.

ESA WebUI > Monitor > Delivery Status > "Active Recipients" 열을 선택합니다.

메일 로그

로그 수준에 대한 정보 수준의 기본 메일 로그

메일 로그는 DANE가 성공적으로 협상한 메시지에 대해 매우 미묘한 표시기를 보여줍니다.

최종 TLS 협상 아웃바운드는 로그 항목 끝에 도메인을 포함하도록 약간 수정된 출력을 포함합니다.

로그 항목에는 "TLS success protocol" 다음에 TLS 버전/암호 "for domain.com"이 포함됩니다.

마법은 "for"에 있습니다.

myesa.local> grep "TLS success.*for" mail_logs

Tue Feb  5 13:20:03 2019 Info: DCID 2322371 TLS success protocol TLSv1.2 cipher DHE-RSA-AES256-GCM-SHA384 for karakun.com

메일 로그 디버그

디버그 레벨의 사용자 지정 메일 로그는 전체 DANE 및 dnssec 조회, 협상 예상, 합격/불합격 확인 부분 및 성공 지표를 표시합니다.

참고:디버그 레벨 로깅을 위해 구성된 메일 로그는 시스템 로드 및 컨피그레이션에 따라 ESA에서 과도한 리소스를 소비할 수 있습니다.

디버그 레벨 로깅을 위해 구성된 메일 로그는 시스템 로드 및 컨피그레이션에 따라 ESA에서 과도한 리소스를 소비할 수 있습니다.

일반적으로 메일 로그는 디버그 레벨에서 장기간 유지되지 않습니다.

디버그 수준 로그는 짧은 시간 내에 엄청난 양의 메일 로그를 생성할 수 있습니다.

mail_logs_d에 대한 추가 로그 서브스크립션을 생성하고 DEBUG에 대한 로깅을 설정하는 경우가 많습니다.

이 작업은 기존 mail_logs에 영향을 주지 않으며, 서브스크립션에 대해 유지 관리되는 로그 볼륨을 조작하도록 허용합니다.

생성된 로그 볼륨을 제어하려면 유지할 파일 수를 2-4개 파일과 같이 더 작은 수로 제한합니다.

모니터링, 평가 기간 또는 문제 해결이 완료되면 로그를 비활성화합니다.

디버그 수준에 대해 설정된 메일 로그는 매우 자세한 DANE 출력을 표시합니다.

Success sample daneverify

daneverify ietf.org

SECURE MX record(mail.ietf.org) found for ietf.org

SECURE A record (4.31.198.44) found for MX(mail.ietf.org) in ietf.org

Connecting to 4.31.198.44 on port 25.

Connected to 4.31.198.44 from interface 194.191.40.74.

SECURE TLSA record found for MX(mail.ietf.org) in ietf.org

Checking TLS connection.

TLS connection established: protocol TLSv1.2, cipher DHE-RSA-AES256-GCM-SHA384.

Certificate verification successful

TLS connection succeeded ietf.org.

DANE SUCCESS for ietf.org

DANE verification completed.

debug level mail logs during the above 'daneverify' exeuction.

Sample output from the execution of the daneverify ietf.org will populate the dns lookups within the mail logs

Mon Feb  4 20:08:47 2019 Debug: DNS query: Q('ietf.org', 'MX')

Mon Feb  4 20:08:47 2019 Debug: DNS query: QN('ietf.org', 'MX', 'recursive_nameserver0.parent')

Mon Feb  4 20:08:47 2019 Debug: DNS query: QIP  ('ietf.org','MX','194.191.40.84',60)

Mon Feb  4 20:08:47 2019 Debug: DNS query: Q  ('ietf.org', 'MX', '194.191.40.84')

Mon Feb  4 20:08:48 2019 Debug: DNSSEC Response data([(0, 'mail.ietf.org.')], secure, 0, 1800)

Mon Feb  4 20:08:48 2019 Debug: DNS encache (ietf.org, MX, [(8496573380345476L, 0, 'SECURE', (0, 'mail.ietf.org'))])

Mon Feb  4 20:08:48 2019 Debug: DNS query: Q('mail.ietf.org', 'A')

Mon Feb  4 20:08:48 2019 Debug: DNS query: QN('mail.ietf.org', 'A', 'recursive_nameserver0.parent')

Mon Feb  4 20:08:48 2019 Debug: DNS query: QIP  ('mail.ietf.org','A','194.191.40.84',60)

Mon Feb  4 20:08:48 2019 Debug: DNS query: Q  ('mail.ietf.org', 'A', '194.191.40.84')

Mon Feb  4 20:08:48 2019 Debug: DNSSEC Response data(['4.31.198.44'], secure, 0, 1800)

Mon Feb  4 20:08:48 2019 Debug: DNS encache (mail.ietf.org, A, [(8496573380345476L, 0, 'SECURE', '4.31.198.44')])

Mon Feb  4 20:08:48 2019 Debug: DNS query: Q('mail.ietf.org', 'AAAA')

Mon Feb  4 20:08:48 2019 Debug: DNS query: QN('mail.ietf.org', 'AAAA', 'recursive_nameserver0.parent')

Mon Feb  4 20:08:48 2019 Debug: DNS query: QIP  ('mail.ietf.org','AAAA','194.191.40.84',60)

Mon Feb  4 20:08:48 2019 Debug: DNS query: Q  ('mail.ietf.org', 'AAAA', '194.191.40.84')

Mon Feb  4 20:08:48 2019 Warning: Received an invalid DNSSEC Response: DNSSEC_Error('mail.ietf.org', 'AAAA', '194.191.40.84', 'DNSSEC Error for hostname mail.ietf.org (AAAA) while asking 194.191.40.84. Error was: Unsupported qtype') of qtype AAAA looking up mail.ietf.org

Mon Feb  4 20:08:48 2019 Debug: DNS query: Q('mail.ietf.org', 'CNAME')

Mon Feb  4 20:08:48 2019 Debug: DNS query: QN('mail.ietf.org', 'CNAME', 'recursive_nameserver0.parent')

Mon Feb  4 20:08:48 2019 Debug: DNS query: QIP  ('mail.ietf.org','CNAME','194.191.40.83',60)

Mon Feb  4 20:08:48 2019 Debug: DNS query: Q  ('mail.ietf.org', 'CNAME', '194.191.40.83')

Mon Feb  4 20:08:48 2019 Debug: DNSSEC Response data([], , 0, 1800)

Mon Feb  4 20:08:48 2019 Debug: Received NODATA for domain mail.ietf.org type CNAME

Mon Feb  4 20:08:48 2019 Debug: No CNAME record(NoError) found for domain(mail.ietf.org)

Mon Feb  4 20:08:49 2019 Debug: DNS query: Q('_25._tcp.mail.ietf.org', 'TLSA')

Mon Feb  4 20:08:49 2019 Debug: DNS query: QN('_25._tcp.mail.ietf.org', 'TLSA', 'recursive_nameserver0.parent')

Mon Feb  4 20:08:49 2019 Debug: DNS query: QIP  ('_25._tcp.mail.ietf.org','TLSA','194.191.40.83',60)

Mon Feb  4 20:08:49 2019 Debug: DNS query: Q  ('_25._tcp.mail.ietf.org', 'TLSA', '194.191.40.83')

Mon Feb  4 20:08:49 2019 Debug: DNSSEC Response data(['0301010c72ac70b745ac19998811b131d662c9ac69dbdbe7cb23e5b514b56664c5d3d6'], secure, 0, 1800)

Mon Feb  4 20:08:49 2019 Debug: DNS encache (_25._tcp.mail.ietf.org, TLSA, [(8496577312207991L, 0, 'SECURE', '0301010c72ac70b745ac19998811b131d662c9ac69dbdbe7cb23e5b514b56664c5d3d6')])

fail sample daneverify

[]> thinkbeyond.ch

INSECURE MX record(thinkbeyond-ch.mail.protection.outlook.com) found for thinkbeyond.ch

INSECURE MX record(thinkbeyond-ch.mail.protection.outlook.com) found. The command will still proceed.

INSECURE A record (104.47.9.36) found for MX(thinkbeyond-ch.mail.protection.outlook.com) in thinkbeyond.ch

Trying next A record (104.47.10.36) for MX(thinkbeyond-ch.mail.protection.outlook.com) in thinkbeyond.ch

INSECURE A record (104.47.10.36) found for MX(thinkbeyond-ch.mail.protection.outlook.com) in thinkbeyond.ch

DANE FAILED for thinkbeyond.ch

DANE verification completed.

mail_logs

Sample output from the execution of he danverify thinkbeyond.ch will populate the dns lookups within the mail logs

Mon Feb  4 20:15:52 2019 Debug: DNS query: Q('thinkbeyond.ch', 'MX')

Mon Feb  4 20:15:52 2019 Debug: DNS query: QN('thinkbeyond.ch', 'MX', 'recursive_nameserver0.parent')

Mon Feb  4 20:15:52 2019 Debug: DNS query: QIP  ('thinkbeyond.ch','MX','194.191.40.84',60)

Mon Feb  4 20:15:52 2019 Debug: DNS query: Q  ('thinkbeyond.ch', 'MX', '194.191.40.84')

Mon Feb  4 20:15:52 2019 Debug: DNSSEC Response data([(10, 'thinkbeyond-ch.mail.protection.outlook.com.')], insecure, 0, 3600)

Mon Feb  4 20:15:52 2019 Debug: DNS encache (thinkbeyond.ch, MX, [(8502120882844461L, 0, 'INSECURE', (10, 'thinkbeyond-ch.mail.protection.outlook.com'))])

Mon Feb  4 20:15:52 2019 Debug: DNS query: Q('thinkbeyond-ch.mail.protection.outlook.com', 'A')

Mon Feb  4 20:15:52 2019 Debug: DNS query: QN('thinkbeyond-ch.mail.protection.outlook.com', 'A', 'recursive_nameserver0.parent')

Mon Feb  4 20:15:52 2019 Debug: DNS query: QIP  ('thinkbeyond-ch.mail.protection.outlook.com','A','194.191.40.83',60)

Mon Feb  4 20:15:52 2019 Debug: DNS query: Q  ('thinkbeyond-ch.mail.protection.outlook.com', 'A', '194.191.40.83')

Mon Feb  4 20:15:52 2019 Debug: DNSSEC Response data(['104.47.9.36', '104.47.10.36'], insecure, 0, 10)

Mon Feb  4 20:15:52 2019 Debug: DNS encache (thinkbeyond-ch.mail.protection.outlook.com, A, [(8497631700844461L, 0, 'INSECURE', '104.47.9.36'), (8497631700844461L, 0, 'INSECURE', '104.47.10.36')])

Mon Feb  4 20:15:52 2019 Debug: DNS query: Q('thinkbeyond-ch.mail.protection.outlook.com', 'AAAA')

Mon Feb  4 20:15:52 2019 Debug: DNS query: QN('thinkbeyond-ch.mail.protection.outlook.com', 'AAAA', 'recursive_nameserver0.parent')

Mon Feb  4 20:15:52 2019 Debug: DNS query: QIP  ('thinkbeyond-ch.mail.protection.outlook.com','AAAA','194.191.40.84',60)

Mon Feb  4 20:15:52 2019 Debug: DNS query: Q  ('thinkbeyond-ch.mail.protection.outlook.com', 'AAAA', '194.191.40.84')

Mon Feb  4 20:15:52 2019 Debug: DNSSEC Response data([], , 0, 32768)

Mon Feb  4 20:15:52 2019 Debug: Received NODATA for domain thinkbeyond-ch.mail.protection.outlook.com type AAAA

Mon Feb  4 20:15:52 2019 Debug: DNS query: Q('thinkbeyond-ch.mail.protection.outlook.com', 'CNAME')

Mon Feb  4 20:15:52 2019 Debug: DNS query: QN('thinkbeyond-ch.mail.protection.outlook.com', 'CNAME', 'recursive_nameserver0.parent')

Mon Feb  4 20:15:52 2019 Debug: DNS query: QIP  ('thinkbeyond-ch.mail.protection.outlook.com','CNAME','194.191.40.83',60)

Mon Feb  4 20:15:52 2019 Debug: DNS query: Q  ('thinkbeyond-ch.mail.protection.outlook.com', 'CNAME', '194.191.40.83')

Mon Feb  4 20:15:53 2019 Warning: Received an invalid DNS Response: SERVER FAILED to IP 194.191.40.83 looking up thinkbeyond-ch.mail.protection.outlook.com

Mon Feb  4 20:15:53 2019 Debug: DNS query: QIP  ('thinkbeyond-ch.mail.protection.outlook.com','CNAME','194.191.40.84',60)

Mon Feb  4 20:15:53 2019 Debug: DNS query: Q  ('thinkbeyond-ch.mail.protection.outlook.com', 'CNAME', '194.191.40.84')

Mon Feb  4 20:15:54 2019 Warning: Received an invalid DNS Response: SERVER FAILED to IP 194.191.40.84 looking up thinkbeyond-ch.mail.protection.outlook.com

Mon Feb  4 20:15:54 2019 Debug: No CNAME record() found for domain(thinkbeyond-ch.mail.protection.outlook.com)

관련 정보

- ESA 사용자 가이드

- ESA 릴리스 정보

- ESA CLI 참조 가이드