포트납치 와 포트 노킹

728x90

AWS 인프라구축을 담당하고 있어서 VPC에서 서브넷 구성작업을 하는중에

SSH 를 이용한 서버 내부 접속을 시키기위해 private subnet에 들어갈 수 있도록

Public subnet에 bastion server (jump server)를 만들어서 관리하고 있다.

 

그래서 혹시모를 보안사고를 대비해서 알아본내용중 처음보는 내용이라 정리한다.

 

 

참고자료

https://wiki.archlinux.org/title/Port_knocking

포트 납치(Port Hijacking)

네트워크에서 특정 포트(Port number)를 공격자가 가로채거나 탈취하여, 정상적인 서비스·세션·트래픽 흐름을 방해하거나 자신에게 유리하게 조작하는 공격 기법을 의미

포트 납치(Port Hijacking)의 주요 개념

1) 포트 선점(Port Preemption)

  • 공격자가 특정 서비스보다 먼저 해당 포트를 오픈해버려 정상 서비스가 사용하지 못하도록 만드는 형태.
  • 예: 서버가 80번 포트로 웹 서버를 열어야 하는데, 공격자가 먼저 80번 포트를 점유.

2) 세션 가로채기(Session Hijacking과 결합)

  • 이미 열려 있는 포트의 세션을 탈취해 데이터를 가로채거나 변조.

3) DNS / 스위치 환경에서의 포트 기반 공격

  • 공격자가 가짜 포트 정보를 흘려보내 트래픽이 자신의 장비로 흐르게 만드는 방식 포함.

포트 납치가 발생하는 대표 시나리오

(1) 동일 서버 내부에서의 포트 납치

다른 사용자가 공유 서버에 접근해서,

원래 서비스가 열려야 할 포트를 먼저 바인딩 → 정상 서비스 장애 발생.

(2) 가상 환경(컨테이너·VM)에서 포트 충돌 악용

멀티 테넌트 환경에서 악의적인 컨테이너가 특정 포트를 점유해

다른 컨테이너 서비스 방해.

(3) 스위치 기반 네트워크에서의 포트 납치

예: DHCP 스푸핑, ARP 스푸핑 등을 사용해

특정 포트를 사용하는 장비인 것처럼 위장하여 트래픽을 탈취.

포트 노킹?

Port Knocking = 서버의 특정 포트를 외부에서 바로 열어두지 않고,

특정한 "포트 접근 순서(노크 시퀀스)"를 맞춰야만 포트가 열리는 방식의 보안 기법

문 닫힌 서버에 비밀번호로 “똑똑똑” 노크해야 문이 열리는 개념

→ 포트를 항상 닫아둠으로써 스캐닝·무차별 공격을 원천 차단하는 목적.

어떻게 동작하나?

  1. 외부 사용자가 정해진 순서로 여러 포트에 접근(예: 1001 → 2222 → 3456)
  2. 서버는 이 “노크 패턴”을 감지
  3. 올바른 사용자라고 판단되면
  4. SSH 포트(22번 등)를 일시적으로 열어줌
  5. 인증이 끝나면 다시 포트를 닫음

즉, 물리적으로 포트를 숨기고 필요할 때만 열어주는 기능.

왜 Bastion 임시 대책으로 쓰는가?

  • SSH 무차별 공격(brute-force)이 심할 때
  • 특정 IP만 접속 가능하게 하면서도 우회 채널이 필요할 때
  • VPN 구성 전 간단한 보안 강화가 필요할 때

포트 노킹을 쓰면 공개적으로 SSH 포트를 열어둘 필요가 없어 공격 표면이 거의 사라짐.

포트 납치(Port Hijacking)와의 차이

용어 의미 성격

Port Hijacking (포트 납치/탈취) 공격자가 포트를 선점하거나 트래픽을 훔치는 공격 공격 기술
Port Knocking (포트 노킹) 포트를 숨기고 특정 포트 시퀀스를 통해서만 열도록 하는 보안 기법 방어 기술

AWS 같은 클라우드 서비스에서도 의미가 있을까?

AWS Bastion 환경에서는 Port Knocking(포트 노킹)이 "실질적인 보안 강화 효과는 거의 없다”

AWS Bastion 구조와 포트 노킹이 잘 맞지 않는다

Port Knocking은 서버 외부에서 특정 포트 시퀀스를 때려야 동적으로 포트가 열리는 구조인데,

AWS 보안 구조는 다음 레이어에서 제한됩니다:

  • Security Group(SG)
  • Network ACL(NACL)
  • VPC 라우팅

이 레이어들은 패킷을 L4 수준에서 필터링하며, OS에 도달하기 전 차단됩니다.

Security Group이 이미 Port Knocking의 역할을 훨씬 잘함

SG는 IP 화이트리스트 기반으로 SSH를 아주 정교하게 제한할 수 있어,

포트 노킹의 핵심 목적(포트 숨기기)을 이미 달성합니다.

예시:

  • 회사 VPN IP만 허용
  • 특정 소스 IP만 22 포트 오픈
  • 조건부 접근 자동화(Lambda 등)

AWS에서는 공개적으로 22번을 열어둘 이유가 없음 → 포트를 숨길 필요도 없음.

728x90