Oracle® Solaris 11.2에서의 sendmail 서비스 관리

인쇄 보기 종료

업데이트 날짜: 2014년 7월
 
 

sendmail 버전 8.13에서 TLS를 사용하는 SMTP 실행 지원

    SMTP 서버와 클라이언트 사이의 통신은 대개 한쪽에서 제어하거나 신뢰하지 않습니다. 이 보안 취약점으로 인하여 제3자가 서버와 클라이언트 사이의 통신을 모니터링하고 변경할 수 있습니다. SMTP는 버전 8.13의 sendmail에서 TLS(전송 계층 보안)를 사용하여 이 문제를 해결할 수 있습니다. SMTP 서버와 클라이언트에 대한 이 확장 서비스는 다음을 제공합니다.

  • 인터넷을 통한 개인 인증 통신

  • 도청 및 공격으로부터 보호


주 - TLS 구현은 SSL(Secure Sockets Layer) 프로토콜을 기반으로 합니다.

    STARTTLS는 TLS를 사용하여 보안 SMTP 연결을 시작하는 SMTP 키워드입니다. 두 서버 사이 또는 서버와 클라이언트 사이에 이 보안 연결이 이루어질 수 있습니다. 보안 연결은 다음과 같이 정의됩니다.

  • 보안 전자 메일 주소와 대상 주소가 암호화됩니다.

  • 전자 메일 메시지 내용이 암호화됩니다.

    클라이언트가 STARTTLS 명령을 실행하면 서버가 다음 중 하나로 응답합니다.

  • 220 Ready to start TLS

  • 501 Syntax error (no parameters allowed)

  • 454 TLS not available due to temporary reason

220 응답은 TLS 협상을 시작하도록 클라이언트에 요구합니다. 501 응답은 클라이언트가 STARTTLS 명령을 잘못 실행했음을 나타냅니다. STARTTLS가 매개변수 없이 실행됩니다. 454 응답은 클라이언트가 규칙 세트 값을 적용하여 연결을 수락할지 또는 유지할지 결정하도록 요구합니다.

인터넷의 SMTP 기반구조를 유지 관리하려면 공용으로 사용되는 서버가 TLS 협상을 요구하면 안 됩니다. 그러나 개인적으로 사용되는 서버는 TLS 협상을 수행하도록 클라이언트에 요구할 수 있습니다. 이 경우 서버는 다음 응답을 반환합니다.

530 Must issue a STARTTLS command first

530 응답은 STARTTLS 명령을 실행하여 연결을 설정하도록 클라이언트에 지시합니다.

인증 및 프라이버시 레벨이 충족되지 않으면 서버나 클라이언트가 연결을 거부할 수 있습니다. 또는 대부분의 SMTP 연결이 안전하지 않으므로 서버와 클라이언트가 비보안 연결을 유지할 수 있습니다. 연결을 유지할지 거부할지 여부는 서버와 클라이언트 구성에 의해 결정됩니다.

TLS를 사용하는 SMTP 실행 지원은 기본적으로 사용으로 설정되지 않습니다. SMTP 클라이언트가 STARTTLS 명령을 실행하면 TLS가 사용으로 설정됩니다. SMTP 클라이언트가 이 명령을 실행하려면 먼저 sendmail이 TLS를 사용할 수 있게 하는 인증서를 설정해야 합니다. TLS를 사용하도록 SMTP를 설정하는 방법을 참조하십시오. 이 절차에는 새 구성 파일 옵션 정의와 sendmail.cf 파일 재작성이 포함됩니다.

TLS를 사용하여 SMTP를 실행하기 위한 구성 파일 옵션

    다음 표에서는 TLS를 사용하여 SMTP를 실행하는 데 사용되는 구성 파일 옵션에 대해 설명합니다. 이러한 옵션 중 하나를 선언할 경우 다음 구문 중 하나를 사용하십시오.

  • O OptionName=argument # for the configuration file

  • -O OptionName=argument # for the command line

  • define(`m4Name',argument) # for m4 configuration

표 3-11  TLS를 사용하여 SMTP를 실행하기 위한 구성 파일 옵션
옵션
설명
–CACertFile
m4 이름: –confCACERT
인수: filename
기본값: 정의되지 않음
CA 인증서 하나를 포함하는 파일을 식별합니다.
–CACertPath
m4 이름: –confCACERT_PATH
인수: path
기본값: 정의되지 않음
CA의 인증서가 포함된 디렉토리 경로를 식별합니다.
–ClientCertFile
m4 이름: –confCLIENT_CERT
인수: filename
기본값: 정의되지 않음
클라이언트의 인증서가 포함된 파일을 식별합니다. sendmail이 클라이언트 역할을 할 때 이 인증서가 사용됩니다.
–ClientKeyFile
m4 이름: –confCLIENT_KEY
인수: filename
기본값: 정의되지 않음
클라이언트 인증서에 속한 개인 키가 포함된 파일을 식별합니다.
–CRLFile
m4 이름: –confCRL
인수: filename
기본값: 정의되지 않음
X.509v3 인증에 사용되는 인증서 해지 상태가 포함된 파일을 식별합니다.
–DHParameters
m4 이름: –confDH_PARAMETERS
인수: filename
기본값: 정의되지 않음
DH(Diffie-Hellman) 매개변수가 포함된 파일을 식별합니다.
–RandFile
m4 이름: –confRAND_FILE
인수: file:filename 또는 egd:UNIX socket
기본값: 정의되지 않음
file: 접두어를 사용하여 임의 데이터가 포함된 파일을 식별하거나 egd: 접두어를 사용하여 UNIX 소켓을 식별합니다. Oracle Solaris OS는 난수 생성기 장치를 지원하므로 이 옵션을 지정할 필요가 없습니다. random(7D) 매뉴얼 페이지를 참조하십시오.
–ServerCertFile
m4 이름: –confSERVER_CERT
인수: filename
기본값: 정의되지 않음
서버의 인증서가 포함된 파일을 식별합니다. sendmail이 서버 역할을 할 때 이 인증서가 사용됩니다.
–Timeout.starttls
m4 이름: –confTO_STARTTLS
인수: amount of time
기본값: 1h
SMTP 클라이언트가 STARTTLS 명령에 대한 응답을 기다리는 시간을 설정합니다.
–TLSSrvOptions
m4 이름: –confTLS_SRV_OPTIONS
인수: V
기본값: 정의되지 않음
서버가 클라이언트의 인증서를 요구하는지 여부를 확인합니다. 이 옵션이 V로 설정된 경우 클라이언트 검증이 수행됩니다.

    sendmail이 SMTP의 TLS 사용을 지원하려면 다음 옵션을 정의해야 합니다.

  • –CACertPath

  • –CACertFile

  • –ServerCertFile

  • –ClientKeyFile

다른 옵션은 필요 없습니다.

TLS를 사용하여 SMTP를 실행하기 위한 매크로

다음 표에서는 STARTTLS 명령에 사용되는 매크로에 대해 설명합니다.

표 3-12  TLS를 사용하여 SMTP를 실행하기 위한 매크로
매크로
설명
${cert_issuer}
인증서 발급자인 CA(인증 기관)의 DN(고유 이름)을 보유합니다.
${cert_subject}
인증서 주체라는 인증서의 DN을 보유합니다.
${cn_issuer}
인증서 발급자인 CA의 CN(공통 이름)을 보유합니다.
${cn_subject}
인증서 주체라는 인증서의 CN을 보유합니다.
${tls_version}
연결에 사용되는 TLS의 버전을 보유합니다.
${cipher}
연결에 사용되는 암호화 알고리즘 세트(암호 슈트라고 함)를 보유합니다.
${cipher_bits}
연결에 사용되는 대칭 암호화 알고리즘의 키 길이를 비트 단위로 보유합니다.
${verify}
제공된 인증서의 검증 결과를 보유합니다. 가능한 값은 다음과 같습니다.
  • OK – 검증에 성공했습니다.

  • NO – 인증서가 제공되지 않았습니다.

  • NOT – 인증서가 요청되지 않았습니다.

  • FAIL – 제공된 인증서를 검증할 수 없습니다.

  • NONESTARTTLS가 수행되지 않았습니다.

  • TEMP – 일시적인 오류가 발생했습니다.

  • PROTOCOL – SMTP 오류가 발생했습니다.

  • SOFTWARESTARTTLS 핸드셰이크에 실패했습니다.

${server_name}
현재 나가는 SMTP 연결이 있는 서버 이름을 보유합니다.
${server_addr}
현재 나가는 SMTP 연결이 있는 서버 주소를 보유합니다.

TLS를 사용하여 SMTP를 실행하기 위한 규칙 세트

다음 표에서는 TLS를 사용하는 SMTP 연결이 수락될지 계속될지 거부될지를 결정하는 규칙 세트에 대해 설명합니다.

표 3-13  TLS를 사용하여 SMTP를 실행하기 위한 규칙 세트
규칙 세트
설명
tls_server
클라이언트 역할을 하는 sendmail은 이 규칙 세트를 사용하여 TLS에서 현재 서버를 지원하는지 확인합니다.
tls_client
서버 역할을 하는 sendmail은 이 규칙 세트를 사용하여 TLS에서 현재 클라이언트를 지원하는지 확인합니다.
tls_rcpt
이 규칙 세트는 받는 사람의 MTA를 검증하도록 요구합니다. 이 받는 사람 제한 사항으로 인해 DNS 스풀링과 같은 공격이 불가능해집니다.
TLS_connection
이 규칙 세트는 현재 TLS 연결의 실제 매개변수에 대해 액세스 맵의 RHS에서 지정한 요구 사항을 검사합니다.
try_tls
sendmail은 이 규칙 세트를 사용하여 다른 MTA에 연결할 때 STARTTLS를 사용할 수 있는지 결정합니다. MTA가 STARTTLS를 제대로 구현할 수 없으면 STARTTLS가 사용되지 않습니다.

자세한 내용은 http://www.sendmail.org/m4/starttls.htmlhttp://www.sendmail.org/m4/starttls.html을 참조하십시오.

TLS를 사용하는 SMTP 실행 관련 보안 고려 사항

인터넷에서 실행되는 메일러를 정의하는 표준 메일 프로토콜인 SMTP는 종단간 방식이 아닙니다. 이 프로토콜 제한으로 인해 SMTP를 통한 TLS 보안에 메일 사용자 에이전트가 포함되지 않습니다. 메일 사용자 에이전트는 사용자와 메일 전송 에이전트(예: sendmail) 사이의 인터페이스 역할을 합니다.

또한 여러 서버를 통해 메일의 경로가 지정될 수도 있습니다. 철저한 SMTP 보안을 위해 SMTP 연결의 전체 체인에 TLS 지원이 필요합니다.

마지막으로, 각 서버 쌍이나 클라이언트와 서버 쌍의 협상된 인증 및 프라이버시 레벨을 고려해야 합니다. 자세한 내용은 Oracle Solaris 11.2의 보안 셸 액세스 관리 의 1 장, 보안 셸 사용(작업)을 참조하십시오.