스팸메일대응법, 보안관련 프로토콜 같이 정리 / 프로토콜별 특징 출제빈도↑
1. 이메일 관련 프로토콜
1. 전자우편의 구조
- UA(User Agent): 메시지 구성, 읽기, 답장 보내기, 전달하는 소프트웨어 패키지(프로그램) / 사용자 컴퓨터에서 로컬 편지함 처리
- MTA(Message Transfer Agent; 메시지 전송 대행자) - C/S 프로그램
- MMA(Message Access Agent; 메시지 접근 대행자) - C/S 프로그램으로 구성되어 있음
2. SMTP(Simple Mail Transfer Protocol; 단순 우편 전달 프로토콜)★
: 인터넷에서 MTA 클라이언트와 서버를 규정하는 공식적인 프로토콜
- (송신자와 송신자의 메일 서버 사이) + (두 메일 서버들 사이)에서 총 두번 사용됨(메일 서버와 수신자 사이엔 다른 프로토콜 사용)
- 메일서버는 SMTP서버를 의미함
- UNIX-Sendmail / Microsoft-Microsoft Exchange / 노벨(Novell)-GroupWise
- SMTP는 이메일 암호화하여 이메일 전송을 보호하는 기능 지원X → 별도로 메시지 본문을 암호화 해야함
- SMTP 서버가 사용자에게 이메일을 전달할 때 DNS를 통해 사용자의 메일 서버를 찾은 후 그 서버로 이메일을 직접 보냄
<명령과 응답> - SMTP는 명령과 응답을 사용하여 MTA 클라이언트와 MTA 서버 사이의 메시지를 전송
[명령] 명령은 클라이언트에서 서버로 전송된다
형식: Keyword:argument(s) | |
명령코드 | 명령 |
HELO | 인사(hello) |
EHLO | 확장된 hello SMTP 수신자에게 지원하는 SMTP 확장의 목록을 보내달라고 요청하는 명령 |
메일 전송 시작(Initiate Mail Transection) 송신자가 메일 전송 시작을 위해 수신자에게 보내는 명령 |
|
RCPT | 받는 사람(Recipient) |
DATA | 메일 메시지의 데이터 |
RSET | 리셋(Reset) MAIL 명령이나 RCPT명령을 보내다가 오류가 발생하여 더 이상 전송을 계속 할 수 없을때 SMTP 송신자가 사용 |
VRFY | 확인(Verify) SMPT 수신자에게 편지함이 사용 가능한지 확인하도록 요청 |
EXPN | 확장(Expand) 수신 호스트에게 인수로 보내진 메일링 리스트를 확장하여 그 목록을 이루는 수신자들의 주소를 되돌려 주도록 요구 |
HELP | 도움말 |
NOOP | 무동작(No Operation) SMTP 수신자와의 통신 상태를 확인하는 것 외에는 아무런 역할을 하지 않음 |
QUIT | SMPT 세션 종료 |
[응답]
- 서버에서 클라이언트로 전송
- 응답은 세 자리 숫자의 코드로 뒤에 추가적인 문자 정보가 따라올 수 있음 (HTTP 응답의 경우와 유사)
3. 메시지 액세스 에이전트(POP와 IMAP)
① POP3(Post Office Protocol 버전 3)
- 전자우편 액세스는 사용자가 메일 서버에 있는 편지함에서 전자우편을 내려 받을 필요가 있을 때 클라이언트에서 시작함
- 클라이언트는 TCP 포트 110으로 서버에 연결, 편지함에 엑세스하기 위해 사용자 이름(USER 명령)과 비밀번호(PASS 명령)를 송신
- 대표적인 POP3 클라이언트: MS 아웃룩, Eudora Email 등
② IMAP4(Internet Mail Access Protocol 버전 4; RFC 1730)
- POP3과 비슷하나 더 많은 기능O, 복잡함
- 데이터를 신뢰성 있게, 제대로 된 순서로 보내고 받을 수 있게 하기 위해 TCP 143번 포트에서 IMAP4 클라이언트의 연결 요청을 대기하고 있음
<제공하는 추가적인 기능>
- 사용자는 전자우편을 내려 받기 전에 헤더를 검사할 수 있음
- 사용자는 전자우편을 내려 받기 전에 특정 문자열로 내용 검색 가능
- 사용자는 전자우편을 부분적으로 내려 받을 수 있음
- 사용자는 메일 서버에서 편지함을 생성, 삭제, 이름 변경 가능
- 사용자는 전자우편 저장을 위해 폴더 내 편지함들을 체계적으로 생성 가능
2. 이메일 콘텐츠 보안을 위한 보안 기술
1. PEM(Privacy Enhanced Mail)
: IETF에서 인터넷 드래프트(draft)로 채택한 기밀성, 인증, 무결성, 부인방지를 지원하는 이메일 보안 기술
- 기존 전자우편 프로토콜을 이용하여 암호화된 정보, 전자서명, 암호화 방법 등의 내용을 본문에 텍스트 형식으로 전송함
- 이론 중심적이고 사양이 방대하며 구현이 복잡하여 많이 사용되진 X
2. PGP(Pretty Good Privacy)
: 대표적인 이메일과 파일보호를 위해 암호화를 사용하는 암호시스템 / Phil Zimmermann이 개발
- 구현 용이, 가장 널리 사용되고 있음
- 전자서명을 이용하여 인증 제공 / 대칭 블록암호를 이용하여 기밀성 제공 / ZIP 알고리즘을 이용하여 압축 제공 / 기수-64 부호화 시스템을 이용하여 전자우편 호환성을 제공 / 길이가 긴 전자우편 데이터를 전송할 수 있도록 단편화 조립 제공
<키링 key ring>
- PGP에서 사용하는 구조는 각 노드에서 한 쌍의 데이터 구조를 제공해야 함
→ 노드가 소유한 공개키/개인키 쌍을 저장하기 위한 것(개인키 고리; private-key ring)
+ 이 노드가 알고 있는 다른 사용자의 공개키를 저장하기 위한 것(공개키 고리; public-key ring)
<PGP 보안 서비스> → 인증, 기밀성, 압축, 전자메일 호환성, 단편화
기능 | 알고리즘 |
기밀성(메시지 암호화) | Triple-DES, IDEA, CAST, RSA / 송신자가 생성한 일회용 세션키로 메시지 암호화. 수신자의 공개키로 RSA를 이용해 세션키를 암호화하고 메시지에 첨부 |
인증(전자 서명) | RSA, DSS, SHA-1, MD5, RIPEMD-160 / 해시 알고리즘을 이용하여 메시지 다이제스트 생성. 메시지 다이제스트는 송신자의 개인키로 암호화 + 메시지에 첨부 |
압축 | ZIP |
전자 우편 호환성 | Radix-64 변환 / ASCII 부호로 전환 |
분할 및 재결합 | 최대 메시지 사이즈 제한으로 인한 데이터의 분할 및 재결합 |
<PGP 동작 과정>
<PGP 인증서>
- PGP 인증서에는 CA 필요 X
- 링에 속해 있는 사용자라면 링에 있는 누구라도 인증서에 서명할 수 있음
<신뢰와 적법성>
① PGP에서 신뢰 모델
- 행위의 중심으로서 사용자가 링에서 갖는 임의의 사용자에 대한 신뢰 모델을 생성할 수 있음
- 다이어그램은 공개키 링 테이블에서의 임의의 변경에 따라 변경될 것임
② 신뢰할 수 있는 웹 (신뢰망, web of trust)
- PGP는 공개키 신뢰성 확보를 위해 신뢰망을 구축 (PKI-공개키기반구조 불필요)
3. S/MIME(Secure Multipurpose Internet Mail Extentions)
MIME: 전자우편을 통하여 ASCII가 아닌 데이터가 송신될 수 있도록 허용하는 부가적인 프로토콜
- MIME는 ASCII가 아닌 데이터를 NVT ASCII 데이터로 변환, 이를 클라이언트 MTA로 배달 / 수신자측의 메시지는 원래 데이터로 역변환 됨
<MIME 헤더>
- MIME 버전(version)
- 내용 유형(Content-Type): 메시지의 몸체에서 사용되는 데이터의 종류를 규정
- 내용 유형과 내용 서브유형을 사선으로 구분
- 서브유형에 따라 헤더는 다른 인수들을 가질 수도 있음
- 7가지 주요 내용 유형 / 15가지 서브 유형이 있음
- 내용유형: 일반적 데이터 유형 선언(Text, Multipart, Massage, Image, Video, Audio, Application)
- 서브유형: 해당 데이터 유형의 특정 형식을 묘사
- 내용 전달 인코딩(Content-Transfer-Encoding): 전송을 위해 메시지를 0과 1로 인코딩하는 방법을 정의
- 내용 ID(Content-Id): 여러 개의 메시지가 있는 상황에서 전체 메시지를 유일하게 식별
- 내용 기술(Content-Description): 몸체가 화상인지, 소리인지, 영상인지 정의
S/MIME: 기존 전자 우편 보안 시스템의 문제점인 PEM 구현의 복잡성, PGP의 낮은 보안성과 기존 시스템과의 통합이 용이하지 않다는 점을 보완하기 위해 IETF의 작업 그룹에서 RSADSI의 기술을 기반으로 개발된 전자 우편 보안 시스템
- 네트워크를 통해 주고받는 메시지에 대해 송/수신자에게 전자 우편 보안 서비스 제공
- MIME 객체를 전송할 수 있는 모든 프로토콜에서 보안 서비스를 이용할 수 있게 함
- 기밀성, 무결성, 사용자 인증, 송신 사실 부인방지 제공
<S/MIME의 동작>
1) 사용자는 수신자에게 보낼 메시지를 MIME 형태로 작성, 전자우편을 보내기 전 메시지에 대한 전자 서명을 할 것인지, 암호화를 할 것인지, 둘 다 할 것인지 선택
2) S/MIME 애플리케이션은 MIME 형태의 메시지를 S/MIME 메시지로 변환
3) 사용자는 메시지 보내기를 선택하면 메일 클라이언트는 전자 우편 서버에 메일 전송 / 수신자의 메일 서버에 메시지가 전송되어 수신자는 S/MIME 클라이언트를 이용해 메시지를 받게 됨
4) 보안 기능이 없는 SMTP 프로토콜이 사용되지만 메시지에 암호화/전자서명을 했기 때문에 안전
★<S/MIME이 제공하는 보안서비스>★
기능 | 일반적 알고리즘 |
디지털 서명 | RSA/SHA-256 |
메시지 암호화 | AES-128 with CBC |
압축 | 제한 없음 |
이메일 호환성 | Radix-64 변환 |
- RFC 2634에서 4가지 강화된 S/MIME 보안 서비스를 정의함
- Signed receipts(서명된 수령증): 서명된 수령증을 돌려받으면, 메시지 원 소유자는 자신이 보낸 메시지가 배달이 되었음을 확인할 수 있고, 메시지 원소유자는 수신자가 그 메시지를 받았다는 사실을 제3자에게 증명할 수 있다.
- Security labels(보안 레이블): S/MIME 캡슐화로 보호하는 콘텐츠의 중요성에 관련된 보안 정보의 집합. 레이블은 어떤 사용자가 객체에 접근이 허락되었는지를 표시하는 것으로 접근 제어에 사용할 수도 있다.
- Secure mailing lists(안전한 메일링 목록): 복수의 수신자에게 메시지를 전송할 경우 각 수신자의 공개키 사용을 포함하여 MLA(Mailing List Agent) 서비스를 사용함으로 많은 양의 수신자별 처리 가능
- Signing Certificates(서명 인증서): 서명 인증서 속성으로 송신자의 인증서와 서명을 묶는다
<S/MIME의 기능>
- 동봉된 데이터(Enveloped data)
- 임의 유형의 암호화된 내용과 하나 혹은 여러 수신자를 위해 암호화된 내용 암호화키로 구성
- 동봉된 데이터 콘텐츠 유형은 메시지의 비밀성을 제공하기 위해 사용됨
- 서명된 데이터(Signed data)
- 명문-서명 데이터(Clear-signed data)
- 서명되고 동봉된 데이터(Signed and enveloped data): 서명만 되거나 암호화된 개체는 중첩될 수 있다. 그래서 암호화된 데이터는 서명될 수 있고 서명된 데이터나 명문-서명 데이터는 암호화 될 수 있다.
<S/MIME의 인증서 처리>
(p.545)
3. 스팸 메일 보안 대응 기술
[스팸 메일의 대응 방안]
1. 스팸 메일의 기술적 대응방안
2. 메일 서버 등록제 SPF(Server Policy Framework)
3. 스팸 필터 솔루션
① 메일 헤더 필터링
- 메일 헤더 기본 구성: From, To, Cc, Bcc
- 메일 헤더의 내용 증 ID/보내는 사람의 이름/도메인에 특정 내용이 포함되어 있는지 검사
- 보낸 서버의 IP/도메인/반송 주소의 유효성과 이상유무 검사
② 제목 필터링
③ 본문 필터링
④ 첨부파일 필터링
4. 스팸메일 방지 보안도구
① Procmail
② Sanitizer - 이메일을 이용한 모든 공격에 대해 효과적으로 대응할 수 있도록 해주는 procmail ruleset
③ Inflex
④ SpamAssassin
4. sendmail
: 인터넷 전자 메일의 표준규약인 SMTP 프로토콜을 통해서 메일 서비스 기능을 함
- 메일 서버 간에 메일을 주고받는 역할
[sendmail 관련 주요 파일 및 디렉터리]
파일(디렉터리) | 설명 |
/usr/bin/sendmail | sendmail의 주 데몬 파일 |
/usr/bin/makemap | sendmail 맵생성 실행파일(access, virtual user 등 등록 시) |
/var/spool/mqueue | sendmail 큐 디렉터리(메일을 일시 저장하는 디렉터리) |
/var/spool/mail | 개별 메일 사용자에게 도착한 메일을 보관하는 디렉터리(사용자별로 별로 메일 파일로 존재) |
/etc/mail/access | Relay 제한 및 설정 파일 |
/etc/mail/sendmail.cf | sendmail 설정 파일 |
[ /etc/mail/access를 이용한 스팸 메일 방지법]
제어옵션 | 설명 |
RELAY | 메일 Relay를 허용. 관련(host에서 지정된) 메일의 수신 또는 발신을 허용 |
REJECT | Relay를 허용하지 않음 |
DISCARD | 메일을 받은 후 폐기(메일발신자에게 폐기통보 X) |
OK | 조건 없이 허용. 관련 메일의 모든 것을 허용(relay)함 |
501 "메시지" | 메일주소가 일부분 이상 일치할 경우 지정된 메시지로 거부 |
502 "메시지" | 발신 메일주소에 host명이 없을 경우 메일을 받지 않음 |
출처: 2021정보보안기사&산업기사 이론편 (알기사)
'Study > 정보보안기사' 카테고리의 다른 글
31. FTP 보안 (0) | 2022.02.23 |
---|