[Network] 계층 별 프로토콜 (2)

SSH, HTTPS, DNS는 안전한 통신을 위한 프로토콜입니다. 원격 접속과 웹 통신을 암호화하고, 도메인을 IP로 연결하여 인터넷을 안전하고 편리하게 만드는 핵심 기술의 차이를 설명합니다.

[Network] 계층 별 프로토콜 (2)
Photo by Albert Stoynov / Unsplash

프로토콜

Notion Image

데이터를 교환하고 통신하기 위해 컴퓨터간 상호 약속된 규칙의 집합

Telnet(Telecommunication Network Protocol)

개념

  • 원격 호스트에 접속하기 위해 사용하는 프로토콜
    • 네트워크를 통해 다른 컴퓨터의 명령창을 사용
  • 인터넷 초기 원격 접속 기술로 사용

동작 방식

  • 클라이언트-서버 구조 23번 포트 사용

특징

  • 대부분의 운영체제 지원
  • 실시간 양방향 통신
  • 간단한 프로토콜

단점

  • 모든 데이터를 평문으로 전송
    • ID/PWD 노출
    • 세션 전체가 도청될 가능성
      • 중간자 공격
    • 데이터가 변조될 수 있음

이를 보완하기 위해 나온 개념이 SSH임.

SSH(Secure shell)

Notion Image

개념

  • 원격 호스트에 접속하기 위해 사용하는 프로토콜
  • 모든 통신이 암호화됨(데이터, 비밀번호, 명령어 등)

특징

  • 22번 포트를 사용
  • 비밀번호 인증과 공개키/비밀키 인증 방식 존재
    • 주로 공개키/비밀키 방식을 사용
  • 포트 포워딩으로 안전한 터널 생성
  • telnet, ftp, rcp, rexec 등 기존 비보안 도구를 대체
  • 세션 관리 가능
    • 다중 채널, Keep-alive 속성 등
  • 대부분의 운영체제 지원할 뿐만 아니라 IoT 기기에서도 사용 가능

단점

  • 복잡한 키 관리
    • 키 생성, 배포, 순환, 폐기
    • 키 분실 시 접근이 불가능하며 백업되어있지 않다면 영구 잠금
  • 방화벽 차단 혹은 NAT 장비에서 포트 포워딩 설정 필요
    • 인터넷에 노출된 SSH 서버는 공격 대상 → Bastion host

Telnet vs SSH

구분TelnetSSH
보안성평문 전송, 도청 위험암호화 통신, 안전함
인증기본적인 ID/PW만비밀번호, 공개키, 2FA 등
포트23번 (표준)22번 (표준)
리소스 사용매우 적음암호화로 인한 오버헤드
설정 복잡도매우 간단키 관리 등 복잡
호환성모든 시스템 지원일부 구형 시스템 제한
디버깅평문으로 쉬운 분석암호화로 분석 어려움
파일 전송별도 프로토콜 필요SCP, SFTP 내장
터널링지원 안함포트 포워딩 지원
현재 사용보안상 거의 사용 안함표준 원격 접속 도구

HTTP(Hypertext Transfer Protocol)

Notion Image

개념

  • HyperText(한 문서에서 다른 문서로 즉시 접근할 수 있는 텍스트) 기반 정보를 주고 받을 수 있는 프로토콜
  • Web에서 정보를 주고받기 위함

특징

  • 80번 포트를 사용
  • Request/Response 기반 클라이언트-서버 모델
  • Stateless 기반 요청간 상태를 저장하지 않음
  • 헤더를 통해 인증, 세션 등 다양한 기능으로 확장 가능
  • 운영체제나 하드웨어에 관계없이 사용 가능
  • 텍스트 기반으로 디버깅과 모니터링이 용이
    • 에러 코드 + 텍스트
      • 200 - OK, 400 - Bad request, 404 Resource not found
  • 메소드 기반 요청 파악 용이(GET/POST/PUT/DELETE)

단점

  • 모든 데이터가 평문으로 전송되며 데이터 변조 여부 확인 어려움
    • 패스워드, 개인정보같은 민감 정보가 그대로 노출됨
  • 상태 정보를 유지하기 위한 별도의 로직 구성
    • 쿠키, 세션 등 외부 저장소 의존
  • HTTP 버전에 따라 연결 오버헤드, 요청 블로킹이 발생
    • 매 요청간 TCP Connection 생성 (HTTP/1.0)
    • 대용량 요청 지연 시 뒤 요청들도 대기 (HTTP1.1)

HTTPS(HyperText Transfer Protocol Secure)

개념

  • HTTP를 확장하여 데이터를 안전하게 전송하는 프로토콜
  • SSL/TLS 기반의 기밀성, 무결성, 전송/수신자 인증을 보장함

특징

  • 443번 포트를 사용
  • 통신을 시작하기 전 디지털 인증서를 통해 서버의 신원을 검증
    • CA(Certificate Authority)에서 발급한 신뢰할 수 있는 인증서 사용
  • 민감한 정보, 데이터 무결성 보장
  • TLS 기반 인증서 교환 메커니즘
    • 현재 TLS v1.3 기반의 메커니즘을 주로 사용
      • 지속적으로 개선되고 있음

단점

  • 인증서 관리 필요
    • 인증서 발급/설치/갱신/삭제 등 추가 리소스 관리
      • 인증서 만료시 접근이 차단될 수 있음
    • Private CA 를 사용하는 경우 더 복잡함
    • 도메인 별 인증서 발급

HTTP vs HTTPS

구분HTTPHTTPS
보안평문 전송, 보안 없음SSL/TLS 암호화
포트80443
인증서불필요SSL 인증서 필수
성능빠름HTTP 대비 느림 (암호화 처리)
데이터 보호스니핑 위험암호화로 보호
서버 인증없음디지털 인증서로 검증
브라우저 표시경고 표시자물쇠 아이콘
SEO불리우선순위
비용무료인증서 관리 비용
사용 권장권장하지 않음현재 웹 표준

DNS(Domain Name System)

개념

  • 도메인 네임 시스템에서 클라이언트와 서버 간 통신을 위한 응용 계층 프로토콜
  • 도메인 이름과 IP 주소 간 매핑 정보를 교환
    • 숫자 IP 주소 대신 호스트 이름으로 접속할 수 있게 됨

특징

Notion Image
  • UDP 53번 포트를 사용하나 구성에 따라 TCP도 사용 가능
    • UDP 기반 경량 프로토콜로 빠른 응답
  • 패킷은 Header, Question, Answer, Authority, Additional 구조
    • Header - 제어정보, 패킷의 정보를 가짐
    • Question - 도메인명, 레코드 타입을 가짐
      • A 레코드 → 도메인의 IPv4 주소
      • AAAA 레코드 → 도메인의 IPv6 주소
      • CNAME(Canonical NAME) 레코드 → 도메인 이름 별칭
        • www.example.com → example.com
      • MX, TXT 레코드 → 메일 관련 레코드
      • NS 레코드 → 실제 DNS 레코드를 갖고 있는 서버
        • 서버 다운을 방지하여 여러 개의 NS 레코드가 제공됨
      • SOA → 도메인 또는 영역에 대한 중요한 정보를 저장
        • 관리자의 이메일, 마지막 업데이트 시간, 레코드 새로고침 대기 시간 등
    • Answer - DNS 서버가 Question에 답변을 제공
    • Authority - 요청, 상위 도메인을 관리하는 네임서버 정보 제공
    • Additional - 레코드 타입에 따라 추가 정보 제공
  • TTL 기반의 데이터 캐싱 지원
  • IP 주소가 변경되어도 도메인 이름은 유지되어 서버 이전이나 확장 용이

단점

  • UDP 기반 응답이 손실될 가능성
  • 잘못된 정보가 캐싱되면 TTL이 만료될 때까지 잘못된 결과 제공
  • 가용성 및 단일 장애점 관리 필요
    • 네임서버 장애시 도메인을 통한 접근 어려움
  • 처음 접근하는 도메인은 루트 서버부터 시작
    • 콜드 스타트 문제