Exchange 서버는 기본적으로 내·외부 SMTP 통신에 TLS를 사용하도록 구성되어 있다.

특히 Edge 서버를 사용할 때, 가장 쉬운 서버 구성 방법인 Edge Subscription 설정을 하여

EdgeSync 서비스에 의한 자동 복제가 이루어지도록 구성한 경우에는 TLS가 강제적으로 적용된다.


그런데,

네트워크 감시·DLP 등 필요에 따라 특정 구간(예: HUB --> Edge)에서 TLS를 제거해야 할 때가 있다.


어떻게 하면 될까?

수신 커넥터(Receive Connector) 설정에서 TLS 체크를 해제하면 될까?


아쉽게도, 그것으로는 해결되지 않는다.


왜냐하면 TLS 체크 옵션은 "STARTTLS"라는 프로토콜 사용 여부를 선택하는 것이고

그것이 해제된다고 해도 Exchange는 "Exchange Server 인증" 활성화 여부에 따라

익명 TLS("X-ANONYMOUSTLS")라는 또 다른 프로토콜을 사용하는데,

"Exchange 서버 인증"은 EdgeSync의 기본 인증 방식이기 때문에 바꿀 수가 없기 때문이다.



>> 참조: Selection of Inbound Anonymous TLS Certificates



위 참조 URL에 있는 그림(순서도)을 보면 알 수 있듯,

"Exchange Server 인증" 방식의 경우 무조건 Anonymous TLS가 적용된다.


Exchange 2010 이후 버전에서는 -SupressXAnonymousTLS 옵션으로 간단하게 제거할 수 있지만

Exchange 2007 버전에서는 불행히도 익명 TLS를 제거할 수 있는 옵션이 제공되지 않는다.


Set-ReceiveConnector <Connector_Name> -SuppressXAnonymousTLS $true


그러므로, EdgeSync를 사용할 때는 TLS를 제거할 방법이 일단은 없다.


물론, EdgeSync를 사용하지 않는 경우에는 쉽게 TLS를 사용하지 않게 설정할 수 있다.

Edge Subscription을 해지하고 수동으로 커넥터를 구성하면 되니까. (구성이 좀 복잡하긴 하다.)


그 방법은 아래 Microsoft TechNet 사이트에 잘 나와 있으므로 생략하기로 한다.

(이미 EdgeSync를 사용하고 있다면 먼저 Remove-EdgeSubscription 명령으로 해지해야 한다.)


>> 참조: How to Configure Mail Flow Between an Edge Transport Server and Hub Transport Servers Without Using EdgeSync





그렇다면, EdgeSync를 사용하는 경우에는 TLS를 제거할 수 있는 방법이 아예 없는 것일까?


있다! (방법이 없으면 이 게시물을 작성하지도 않았겠지...^^;)


지금부터 그 방법에 대해 순서대로 써 보도록 하겠다.





0. 준비


먼저, TLS가 적용되어 SMTP 통신이 암호화되었는지 여부를 알아보기 위해

메일 발송 테스트를 하면서 네트워크 모니터 도구로 네트워크 패킷을 캡쳐해 봤다.



보다시피 TLS가 적용되어 있는 경우에는 위 화면처럼 SMTP 패킷 중에 "STARTTLS"라는 문자열이 나타나고
그 이후에는 내용들이 모두 암호화되어 알아볼 수 없는 패킷들만 오가는 것을 알 수 있다.
(위 화면은 Edge 서버(PNPLABEDGE)에서 외부 메일 서버(192.168.0.111)로 전송되는 Outbound 구간이다.)

이것을 알아볼 수 있는 평문 SMTP 패킷으로 바꾸는 것이 이번 작업의 목적이 되겠다.
어디? 딱 한 군데, HUB --> Edge 전송 구간에서만.




1. Edge 서버 메일 수신 커넥터 분리

가장 먼저 할 일은 Edge 서버에서 수신 커넥터를 쪼개는(분리하는) 것이다.
(분리하지 않고 수신 커넥터에 그냥 적용하면 외부에서 Edge 서버로 들어오는 SMTP 패킷도 TLS 암호화가 해제된다.
여기서 목적은 오직 HUB 서버에서 Edge 서버로 전송되는 구간의 TLS만 해제하는 것이므로 분리하도록 한다.)

원래 있는 수신 커넥터는 외부에서 메일을 수신하는 용도로 쓰고,
새로 수신 커넥터를 하나 더 만들어서 내부 HUB 서버로부터 TLS가 제거된 메일 수신 용도로 쓴다.

이름이 "Default internal"로 시작되는 원래 수신 커넥터의 속성 창을 열고
메일 수신 대상을 외부 메일 서버 또는 게이트웨이 IP주소로 변경해준다.



위 화면에서는 외부 스마트 호스트 서버를 통해서 메일을 받는 시나리오를 가정했기 때문에

외부 스마트 호스트 서버의 IP주소 하나만 입력했는데 특정 네트워크 범위가 될 수도 있고,

아예 전체 네트워크가 될 수도 있다. 단 절대 HUB 서버는 포함되면 안 된다.


그밖에는 달리 더 설정할 것은 없다.

TLS를 그대로 사용할 것이므로 다른 변경 없이 그냥 확인.





2. Edge 서버 내부용 메일 수신 커넥터 추가




다음으로, 새로 수신 커넥터를 하나 더 만들고 이름을 "From Internal" 등으로 지어 구분하기 편리하게 한다.





메일을 수신할 원격 서버로 내부 HUB 서버의 IP 주소를 입력한다.

(0.0.0.0-255.255.255.255가 원래 값인데 전체 네트워크를 의미한다. 그 값을 편집하면 된다.)





가장 중요한 부분.

맨 위에 있는 "TLS(전송 계층 보안)"의 체크를 해제하고

아래에 있는 "기본 인증"의 체크를 설정한다.


원래 EdgeSync 사용 환경의 설정으로는

HUB 서버에서 Edge 서버로 연결할 때 위 그림의 세 번째 옵션인 "Exchange Server 인증"이 적용되는데

앞서 언급했듯 그 경우 자동적으로 Anonymous TLS가 적용되기 때문에 그대로 쓸 수 없다.


그래서 HUB 서버에 "기본 인증(Basic Authentication)" 방식의 송신 커넥터를 하나 더 추가할 것이다.

그 송신 커넥터와 대응하기 위한 의미에서 수신 커넥터의 보안 메커니즘에 "기본 인증"을 추가해 주는 것이다.





참고.



"Exchange Server 인증" 옵션만 활성화된 상태에서 메일을 보냈을 때의 SMTP 패킷 캡쳐 화면.

보다시피 "X-ANONYMOUSTLS"라는 문자열이 보이고, 이후부터는 역시 암호화되어 알아볼 수 없는 내용의 패킷들만 오가고 있다. 이처럼 "Exchange Server 인증"이 걸리면 Anonymous TLS가 내부적으로 적용된다.







마지막 [사용 권한 그룹] 탭에서는 설정할 내용이 없다. 위 화면과 같이 그냥 내버려둔다.

("익명 사용자"를 굳이 체크할 필요는 없다. HUB 서버는 "Exchange 서버"로 인증된다.)





3. "기본 인증"을 위한 사용자 계정 추가


다음으로는 위에서 설정한 "기본 인증"에 사용할 공통 사용자 계정을 하나 만들어 준다.

이미 해당 용도의 계정이 있다면 그 계정을 사용해도 된다.


단, 일반 사용자(Users) 권한으로는 인증은 되더라도 메일 전송 권한이 없어 실패하게 되므로

반드시 관리자 그룹(Administrators)에 소속되어 있어야 한다.




위 화면에서는 ExUser라는 이름으로 생성했다.

실제 사용자가 쓸 계정이 아니므로 암호 변경이나 사용기간 제한 같은 것은 모두 풀어준다.





소속 그룹으로 "Administrators"를 추가한다.

여기까지가 Edge 서버에서 설정하는 내용의 전부다.





4. HUB 서버 송신 커넥터 추가


다음으로 HUB 서버에 Edge Subscription 과정에서 자동 추가된 두 가지 송신 커넥터 외에

추가로 "기본 인증"을 사용하는 송신 커넥터를 하나 더 만든다.


여기서 핵심은 이 새로운 송신 커넥터가 기존 EdgeSync 송신 커넥터보다 먼저 적용되도록 하는 것이다.

(앞서 언급했듯이, EdgeSync 송신 커넥터들은 Edge 서버에도 그대로 복제되어 적용되는데

HUB 서버가 Edge 서버로 연결할 때는 내부적으로 "Exchange Server 인증" 방식으로 연결되는데

그 경우 무조건 Anonymous TLS가 적용되어 TLS 제거의 최종 목적이 달성될 수 없으므로

"Exchange Server 인증" 방식으로 연결되기 전에 "기본 인증" 방식으로 먼저 가로채기 위한 목적이다.)





새로운 송신 커넥터 이름을 "ToEdge" 등 알아보기 쉬운 이름으로 만든다.





속성 창의 [주소 공간] 탭에서 SMTP 주소 공간을 입력하는데, 주소는 전체("*")를 입력하고,
순위(Cost)에 기존 EdgeSync 송신 커넥터의 순위보다 낮은 숫자를 입력해 준다.

보통, 기존 EdgeSync 송신 커넥터의 순위는 "100"으로 설정되어 있으므로,
"100"보다 낮은 숫자이기만 하면 된다. 여기서는 "1"로 입력했다. 가장 높은 우선 순위.




[네트워크] 탭에서는 스마트 호스트로 Edge 서버를 지정하고

스마트 호스트 인증을 "기본 인증"으로 설정하기 위해 "변경" 버튼을 클릭한다.





위 화면과 같이 앞서 생성한 Edge 서버의 "기본 인증"용 사용자 계정 정보를 입력해 주면

설정할 내용은 더 이상 없다. 끝.




5. 메일 발송 테스트


설정이 모두 끝났으니 메일을 보내 본다.




메일을 보내고 네트워크 모니터로 SMTP 패킷을 캡쳐해 보니 "STARTTLS"나 "X-ANONYMOUSTLS" 대신에
"AUTH LOGIN"이라는 문자열이 보인다. "기본 인증"으로 잘 바뀌었다는 얘기.




그 아래 실제 메일 내용들이 있는 패킷.

한 눈에 봐도 평문 SMTP 메일 내용이 그대로 들어 있음을 알 수 있다.


TLS 제거 성공!



이후 Edge 서버에서 외부 스마트 호스트로 전송되는 구간의 패킷은 여전히 "STARTTLS"로

TLS가 적용되어 있음을 알 수 있다. (위 0. 준비 단계에 있는 화면)





Posted by 떼르미
,


자바스크립트를 허용해주세요!
Please Enable JavaScript![ Enable JavaScript ]