[CS] 네트워크 - SMTP, IMAP, DNS

두두·2023년 11월 7일
0

CS

목록 보기
10/14

📌 SMTP

뭔데요!

Simple Mail Transfer Protocol

  • 일반적으로 전자 메일 전송을 위한 표준 프로토콜
  • 이메일을 송수신하는 서버를 SMTP 서버라고 함

뭔소리냐고요?
우리가 타인에게 메일을 보내려면 넷스케이프의 메신저나 인터넷익스플로어의 아웃룩 익스프레스, 유도라 등의 윈도우 프로그램을 통해 메일을 보내게 되죠.

메일을 작성해서 보내시면 그 메일은 SMTP 서버(보내는 메일서버, Outgoing mailserver)로 일단 전송되고요
이 SMTP 서버에서 SENDMAIL 프로그램을 구동하여 해당 메일 주소로 메일을 보내게 된담니다~

바로 이러한 역할을 하는것을 SMTP 서버, 보내는 메일 서버, Outgoing Mailserver라고 함

과정

1️⃣ SMTP 연결 열림
SMTP는 전송 프로토콜로 전송 제어 프로토콜(TCP)을 이용하므로 첫 번째 단계는 클라이언트와 서버 간 TCP 연결로 시작됩니다. 그 다음 이메일 클라이언트가 특화된 "Hello" 명령(HELO 또는 EHLO, 아래 설명됨)으로 이메일 전송 프로세스를 시작합니다.

2️⃣ 이메일 데이터 전송
클라이언트가 이메일 헤더(대상 및 제목 줄 포함), 이메일 본문, 기타 추가 구성 요소로 이루어진 실제 이메일 콘텐츠와 함께 일련의 명령을 서버에 보냅니다.

3️⃣ 메일 전송 에이전트(MTA)
서버가 메일 전송 에이전트(MTA)라는 프로그램을 실행합니다. MTA는 수신자의 이메일 주소 도메인을 확인하고 발신자와 다를 경우 수신자의 IP 주소를 찾도록 도메인 네임 시스템(DNS)에 쿼리합니다. 이는 우체국에서 우편물 수신자의 우편번호를 조회하는 것과 비슷합니다.

4️⃣ 연결 닫힘
데이터 전송이 완료되면 클라이언트가 서버에 알림을 보내며 서버가 연결을 닫습니다. 이때 클라이언트가 SMTP 연결을 새로 열지 않는 한 서버는 클라이언트로부터 이메일 데이터를 추가로 받지 않습니다.

SMTP 명령

미리 정의된 텍스트 기반 지시사항
클라이언트나 서버에서 수행해야 할 작업과 이에 수반된 데이터를 처리할 방법을 알려줌

  • HELO/EHLO
    이 명령을 사용하면 "Hello"라고 말한 다음 클라이언트와 서버 사이에 SMTP 연결이 시작됩니다. "HELO" 는 이 명령의 기본 버전이고 "EHLO"는 특수 유형 SMTP를 위한 버전입니다.

  • MAIL FROM
    이는 이메일을 전송하는 서버를 알려줍니다. Alice가 친구 Bob에게 이메일을 보내려고 하는 경우 클라이언트가 "MAIL FROM:alice@example.com"을 전송할 수 있습니다.

  • RCPT TO
    이 명령으로 이메일 수신자가 나열됩니다. 수신자가 여러 명일 경우 클라이언트는 이 명령을 여러 번 전송할 수 있습니다. 상기 예시에서 Alice의 이메일 클라이언트는 "RCPT TO:bob@example.com"을 전송하게 됩니다.

  • DATA
    이는 다음과 같이 이메일 콘텐츠 앞에 위치합니다.

  • RSET
    이 명령을 사용하면 연결이 초기화되어 SMTP 연결이 닫히지 않고 미리 전송한 모든 정보가 제거됩니다. RSET은 클라이언트가 잘못된 정보를 전송할 때 사용합니다.

  • QUIT
    이 명령으로 연결이 종료됩니다.



📌 IMAP

이건 뭔데!

이메일을 받기 위한 프로토콜
.프로토콜은 기술 프로세스를 표준화하여 컴퓨터와 서버가 동일한 하드웨어 또는 소프트웨어를 사용하는지 여부와 관계없이 서로 연결할 수 있도록 한다.

기능

  • 사용자가 모든 장치에서 이메일에 액세스할 수 있게 해줌
    IMAP는 서버에서 이메일 클라이언트로 이메일을 다운로드하는 대신 이메일 서버와 이메일 클라이언트 간의 중개자 역할을 함!

➡️ IMAP를 사용하면 사용자는 경험의 차이 없이 다른 장치에서 이메일 계정에 액세스할 수 있으며 원래 이메일을 읽은 장치에 있을 필요 ❌

IMAP vs POP3

💡아잠깐! POP3 는 뭔데?
우체국 프로토콜 버전 3(POP3)

  • 서버에서 로컬 장치로 이메일을 다운로드하는 이메일을 수신하기 위한 대체 프로토콜



📌 DNS

Domain Name System
사람이 읽을 수 있는 도메인 이름(예: www.amazon.com)을 머신이 읽을 수 있는 IP 주소(예: 192.0.2.44)로 변환

동작 방식

1️⃣ 사용자가 도메인 이름 또는 URL(예: www.example.com)을 브라우저에 입력
그러면 일반적으로 로컬 운영 체제나 인터넷 서비스 제공업체가 제공하는 로컬 DNS 서버로 쿼리가 전송됨
(클라이언트와 DNS의 사이의 이 중개자는 재귀 확인자)
재귀 확인자는 클라이언트에 대해 쿼리된 네임서버 정보를 요청하거나 수신!

2️⃣ 재귀 확인자가 쿼리를 요청하면 쿼리가 루트 네임서버로 전달.
루트 네임서버는 검색된 도메인 이름의 확장자를 기반으로 지시를 내려야 하는 적절한 TLD 네임서버로 응답
루트 네임서버는 또한 ICANN(Internet Corporation for Assigned Names and Numbers)의 감독을 받는다.
TLD 네임서버는 .com, .net, .edu, .gov와 같은 일반적인 확장자로 끝나는 URL에 대한 모든 정보를 보관합니다.

3️⃣ 정기적으로 수행되는 DNS 검색량 때문에 검색 요청을 배치로 묶는 데 재귀 확인자가 사용됨
이러한 배치는 검색 쿼리 기반의 정확한 IP 주소로 권위(authoritative) DNS를 찾습니다. 권위 네임서버는 보통 DNS 조회의 마지막 단계
재귀 확인자는 TLD 네임서버로부터 응답을 받은 후 클라이언트로 다시 전송되기 위해 IP 주소가 확인되는 권위 네임서버로 이동

발생 가능한 리스크

DNS 하이재킹

DNS 쿼리가 잘못 처리되어 사용자를 거짓의 악성 웹사이트로 리디렉션하는 경우 발생

  • 사용자의 컴퓨터에 라우터를 장악하거나 DNS 통신을 가로채는 멀웨어를 설치하면 DNS 하이재킹이 발생!

캐시 오염(cache poisoning)

공격자가 DNS 서버에 대한 제어력을 갖고 입력된 IP 주소를 손상시키는 경우 발생

  • 이처럼 거짓으로 입력된 IP 주소는 전 세계의 인터넷 서비스 제공업체에게 전파되며, 캐시되어 퍼블릭 DNS 검색에 사용!

DNS 보안 베스트 프랙티스

그러면 보안 방법은 없냐?
당연히 아님
선택된 DNS 서비스의 유형이 무엇이든 공격 표면을 노출하지 않고 잠재적 보안 문제를 최소화하기 위해 따를 수 있는 베스트 프랙티스 3가지- 두둔!

DNS 정리

정기적으로 DNS 캐시를 정리하면 로컬 시스템의 모든 입력 항목이 제거됨
이 프로세스는 악성 사이트로 사용자를 연결할 수 있는 유효하지 않거나 침해된 DNS 레코드를 삭제하는 데 유용!

nslookup

nslookup
지정된 호스트 이름의 IP 주소를 찾기 위해 서버 관리자가 사용할 수 있는 프로그램 및 명령 코드

이 코드를 활용하여 사용자는 피싱 공격으로부터 자신을 보호하고 필요에 따라 자신이 방문하는 사이트의 유효성을 확인할 수 있음

DNS 유출 테스트

DNS 유출 테스트 (ibm.com 외부 링크)를 실행하기 위해 이용할 수 있는 무료 서비스는 여러 가지가 있음
가끔 보안 VPN 또는 비밀 서비스를 사용할 때 구성 상태가 열악하고 기본 DNS가 여전히 사용되는 경우를 볼 수 있다
➡️ 이럴 경우 네트워크 트래픽을 모니터링하는 누군가가 악의적 목적으로 사용자의 활동을 기록할 수 🙆‍
DNS 유출 테스트를 실행하면 VPN 터널이 폐쇄되어 있고 네트워크 트래픽이 안전하게 보호되고 있는지 확인할 수 있다!




Reference

https://www.cloudflare.com/ko-kr/learning/email-security/what-is-smtp/
https://www.ibm.com/kr-ko/topics/dns

profile
멋쟁이가 될테야

0개의 댓글