맨위로가기

터널링 프로토콜

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

터널링 프로토콜은 특정 프로토콜을 지원하지 않는 네트워크에서 다른 프로토콜을 실행하거나, 기본적인 네트워크 서비스로는 제공하기 어렵거나 안전하지 않은 서비스를 제공하기 위해 사용된다. 터널링은 방화벽 정책을 우회하거나 IPv6 네트워크를 IPv4 네트워크를 통해 연결하는 데 사용될 수 있으며, HTTP CONNECT 메서드, DNS, MQTT, SMS 등의 프로토콜을 활용할 수 있다. 일반 라우팅 캡슐화(GRE), 레이어 2 터널링 프로토콜(L2TP), SSH, IPsec 등이 기술 개요에 해당하며, IP in IP, 6in4, GRE, OpenVPN, SSTP, IPSec, L2TP, VXLAN, PPTP, PPPoE, GENEVE, WireGuard 등이 터널링에 사용되는 프로토콜이다. TCP 멜트다운 문제는 TCP 기반 연결을 통해 TCP를 캡슐화하는 경우 발생할 수 있으며, SSH 터널링은 암호화된 채널을 통해 트래픽을 전송하여 보안을 제공한다. 사이버 공격에서도 터널링 기술이 악용될 수 있으며, HTTP, SSH, DNS, MQTT 등의 프로토콜이 악의적인 통신에 사용될 수 있다.

2. 터널링의 활용

터널링 프로토콜은 IPv6IPv4 위에서 실행하는 것과 같이, 해당 프로토콜을 지원하지 않는 네트워크에서 외부 프로토콜을 실행할 수 있게 해준다. 또한, 기본적인 네트워크 서비스만으로는 제공하기 어렵거나 안전하지 않은 서비스를 제공하는 데에도 사용된다. 예를 들어, 물리적 네트워크 주소가 기업 네트워크의 일부가 아닌 원격 사용자에게 기업 네트워크 주소를 제공할 수 있다.

2. 1. 방화벽 정책 우회

사용자는 방화벽을 우회하기 위해 터널링을 사용할 수 있다. 방화벽이 일반적으로 차단하는 프로토콜을 HTTP와 같이 방화벽이 차단하지 않는 프로토콜 내에 씌워서(Wrapping) 사용하는 것이다. 방화벽 정책이 이러한 씌우는 방식을 특별히 막지 않는 경우, 이 방법은 의도된 방화벽 정책을 우회하는 데 작동할 수 있다.

또 다른 HTTP 기반 터널링 방법은 HTTP CONNECT 메서드/명령을 사용한다. 클라이언트는 HTTP 프록시에 HTTP CONNECT 명령을 발행한다. 그런 다음 프록시는 특정 서버와 포트에 TCP 연결을 생성하고 해당 서버, 포트와 클라이언트 연결 간에 데이터를 중계한다.[1] 이는 보안 문제를 일으키기 때문에 CONNECT 기능을 갖춘 HTTP 프록시는 일반적으로 CONNECT 메서드에 대한 접근을 제한한다. 프록시는 HTTPS의 443과 같은 특정 포트에만 연결을 허용한다.[2]

네트워크 방화벽을 우회할 수 있는 다른 터널링 방법으로는 DNS,[3] MQTT,[4] SMS와 같은 다른 프로토콜을 사용하는 것이 있다.[5]

2. 2. IPv6 over IPv4 터널

IPv6로 직접 연결되지 않은 IPv6 네트워크 간을 연결할 때, 도중에 IPv4를 경유하기 위해 사용되는 것이 IPv6 over IPv4 터널이다.

3. 기술 개요

일반 라우팅 캡슐화(GRE)는 IP (IP 프로토콜 번호 47) 위에서 실행되는 프로토콜로, RFC 1918의 사설 주소를 가진 IP 패킷을 공인 IP 주소를 가진 전송 패킷을 사용하여 인터넷을 통해 전송하는 데 자주 사용된다. 이 경우, 전송 프로토콜과 페이로드 프로토콜은 같지만, 페이로드 주소는 전송 네트워크의 주소와 호환되지 않는다.

레이어 2 터널링 프로토콜(L2TP)은 두 노드 간에 프레임을 전송할 수 있도록 한다. 터널은 기본적으로 암호화되지 않는다. 선택된 TCP/IP 프로토콜이 보안 수준을 결정한다.

SSH는 포트 22를 사용하여 공용 네트워크(예: 인터넷) 연결을 통해 전송되는 페이로드의 데이터 암호화를 활성화하여 VPN 기능을 제공한다. IPsec은 종단 간 전송 모드를 가지고 있지만, 신뢰할 수 있는 보안 게이트웨이를 통해 터널링 모드로 작동할 수도 있다.

터널링에 의해 부과된 특정 프로토콜 스택을 이해하기 위해, 네트워크 엔지니어는 페이로드와 전송 프로토콜 집합을 모두 이해해야 한다. 직접 IPv6로 연결되지 않은 IPv6 네트워크 간을 연결할 때, 도중에 IPv4를 경유하기 위해 사용되는 것이 IPv6 over IPv4 터널이다.

4. 일반적인 터널링 프로토콜

다양한 터널링 프로토콜이 존재하며, 각각 다른 특징과 용도를 가진다.

IPv6로 직접 연결되지 않은 IPv6 네트워크 간을 연결할 때, 도중에 IPv4를 경유하기 위해 IPv6 over IPv4 터널이 사용된다.

4. 1. 주요 프로토콜 목록


  • IP in IP (IP 프로토콜 4): IP in IPv4/IPv6
  • SIT/IPv6 (IP 프로토콜 41): IPv6 in IPv4/IPv6
  • GRE (IP 프로토콜 47): 일반 라우팅 캡슐화
  • OpenVPN (UDP 포트 1194)
  • SSTP (TCP 포트 443): 보안 소켓 터널링 프로토콜
  • IPSec (IP 프로토콜 50 및 51): 인터넷 프로토콜 보안
  • L2TP (UDP 포트 1701): 레이어 2 터널링 프로토콜
  • L2TPv3 (IP 프로토콜 115): 레이어 2 터널링 프로토콜 버전 3
  • VXLAN (UDP 포트 4789): 가상 확장 가능 LAN
  • PPTP (제어를 위한 TCP 포트 1723, 데이터를 위한 GRE): 지점 간 터널링 프로토콜
  • PPPoE (제어를 위한 EtherType 0x8863, 데이터를 위한 0x8864): 이더넷 상의 지점 간 프로토콜
  • GENEVE
  • WireGuard (UDP 동적 포트)


직접 IPv6로 연결되지 않은 IPv6 네트워크 간을 연결할 때, 도중에 IPv4를 경유하기 위해 사용되는 것이 IPv6 over IPv4 터널이다.

5. TCP 멜트다운 문제

TCP 기반 연결(예: SSH의 포트 포워딩)을 통해 TCP를 ''캡슐화''하는 페이로드(예: PPP)를 터널링하는 것을 "TCP-over-TCP"라고 하며, 이렇게 하면 전송 성능이 극적으로 저하될 수 있는데, 이를 ''TCP 멜트다운 문제''[6][7]라고 한다. 이 때문에 가상 사설망(VPN) 소프트웨어는 터널 연결에 TCP보다 간단한 프로토콜을 대신 사용할 수 있다. TCP 멜트다운은 TCP 연결이 다른 TCP 연결 위에 쌓일 때 발생한다. 하위 계층은 문제를 감지하고 보상하려 할 수 있으며, 그 위의 계층은 그 때문에 과도하게 보상하게 되며, 이러한 과도한 보상은 지연 및 전송 성능 저하를 유발한다.

6. Secure Shell (SSH) 터널링

Secure Shell(SSH) 터널은 SSH 프로토콜 연결을 통해 생성된 암호화된 터널이다. 사용자는 SSH 터널을 설정하여 암호화되지 않은 트래픽을 암호화된 채널을 통해 네트워크로 전송할 수 있다. 이는 소프트웨어 기반의 네트워크 보안 접근 방식이며, 그 결과는 투명한 암호화이다.[8]

예를 들어, 마이크로소프트 윈도우 컴퓨터는 서버 메시지 블록(SMB) 프로토콜(비암호화 프로토콜)을 사용하여 파일을 공유할 수 있다. 인터넷을 통해 Microsoft Windows 파일 시스템을 원격으로 마운트하는 경우, 연결을 엿보는 사람은 전송된 파일을 볼 수 있다. Windows 파일 시스템을 안전하게 마운트하려면, 암호화된 채널을 통해 모든 SMB 트래픽을 원격 파일 서버로 라우팅하는 SSH 터널을 설정할 수 있다. SMB 프로토콜 자체에는 암호화가 없지만, SMB 프로토콜이 통과하는 암호화된 SSH 채널은 보안을 제공한다.

SSH를 이용한 로컬 포트 포워딩


SSH 연결이 설정되면, 터널은 원격 또는 로컬 호스트의 포트를 수신하는 SSH로 시작된다. 해당 포트로의 모든 연결은 지정된 주소와 포트로 전달되며, 반대쪽(앞서 언급한 원격 또는 로컬) 호스트에서 시작된다.

#TCP 멜트다운 문제는 OpenSSH의 포트 포워딩을 사용할 때 종종 문제가 되지 않는다. 많은 사용 사례가 TCP-over-TCP 터널링을 수반하지 않기 때문이다. 멜트다운은 OpenSSH 클라이언트가 전송되는 실제 페이로드를 얻기 위해 로컬, 클라이언트 측 TCP 연결을 처리한 다음, 해당 페이로드를 터널 자체의 TCP 연결을 통해 서버 측으로 직접 전송하고, OpenSSH 서버가 유사하게 페이로드를 "언랩핑"하여 최종 목적지로 라우팅하기 위해 다시 "랩핑"하기 때문에 방지된다.[9] 물론, 이 랩핑 및 언랩핑은 양방향 터널의 반대 방향에서도 발생한다.

SSH 터널은 사이트가 발신 연결을 허용하는 한, 특정 인터넷 서비스를 금지하는 방화벽을 우회하는 수단을 제공한다. 예를 들어, 조직은 사용자가 조직의 프록시 필터(사용자가 웹을 통해 보는 내용을 모니터링하고 제어하는 수단을 조직에 제공)를 거치지 않고 인터넷 웹 페이지(포트 80)에 직접 접근하는 것을 금지할 수 있다. 그러나 사용자는 조직의 프록시 필터에 의해 웹 트래픽이 모니터링되거나 차단되는 것을 원하지 않을 수 있다. 사용자가 외부 SSH 서버에 연결할 수 있다면, 로컬 컴퓨터의 지정된 포트를 원격 웹 서버의 포트 80으로 전달하는 SSH 터널을 만들 수 있다. 원격 웹 서버에 접근하려면 사용자는 웹 브라우저를 로컬 포트 http://localhost/로 지정하면 된다.

일부 SSH 클라이언트는 사용자가 SOCKS 4/5 프록시를 생성할 수 있는 동적 포트 포워딩을 지원한다. 이 경우 사용자는 애플리케이션을 구성하여 로컬 SOCKS 프록시 서버를 사용할 수 있다. 이는 이전에 설명한 단일 포트에 SSH 터널을 생성하는 것보다 더 많은 유연성을 제공한다. SOCKS는 사용자가 미리 정의된 원격 포트 및 서버에만 연결하는 제한에서 벗어날 수 있다. 애플리케이션이 SOCKS를 지원하지 않는 경우, 프록시피어를 사용하여 애플리케이션을 로컬 SOCKS 프록시 서버로 리디렉션할 수 있다. Proxycap과 같은 일부 프록시피어는 SSH 클라이언트의 필요성을 피하면서 SSH를 직접 지원한다.

최신 버전의 OpenSSH에서는 양쪽 끝에서 이러한 터널링 기능을 활성화한 경우 레이어 2 또는 레이어 3 터널을 생성하는 것도 허용된다. 이를 통해 연결의 양쪽 끝에 `tun`(레이어 3, 기본값) 또는 `tap`(레이어 2) 가상 인터페이스가 생성된다. 이를 통해 일반적인 네트워크 관리 및 라우팅을 사용할 수 있으며, 라우터에서 사용하면 전체 서브네트워크의 트래픽을 터널링할 수 있다. 한 쌍의 `tap` 가상 인터페이스는 연결의 양쪽 끝을 연결하는 이더넷 케이블처럼 작동하며 커널 브리지를 결합할 수 있다.

7. 사이버 공격 기반 터널링

사용자는 방화벽을 우회하기 위해 터널링을 사용할 수 있다. 방화벽이 일반적으로 차단하는 프로토콜을 HTTP와 같이 방화벽이 차단하지 않는 프로토콜 내에서 "래핑"하여 사용하는 것이다. 방화벽 정책이 이러한 종류의 "래핑"을 특별히 배제하지 않는 경우, 이 방법은 의도된 방화벽 정책을 우회하는 데 작동할 수 있다.[1]

또 다른 HTTP 기반 터널링 방법은 HTTP CONNECT 메서드/명령을 사용한다. 클라이언트는 HTTP 프록시에 HTTP CONNECT 명령을 발행한다. 그런 다음 프록시는 특정 서버:포트에 TCP 연결을 생성하고 해당 서버:포트와 클라이언트 연결 간에 데이터를 중계한다.[1] 이는 보안 취약점을 만들기 때문에 CONNECT 기능을 갖춘 HTTP 프록시는 일반적으로 CONNECT 메서드에 대한 액세스를 제한한다. 프록시는 HTTPS의 443과 같은 특정 포트에만 연결을 허용한다.[2]

네트워크 방화벽을 우회할 수 있는 다른 터널링 방법은 DNS,[3] MQTT,[4] SMS와 같은 다른 프로토콜을 사용한다.[5]

시간이 지나면서 터널링과 일반적으로 데이터 캡슐화는 보호된 네트워크 외부에서 악의적으로 통신하기 위해 악의적인 목적으로 자주 채택되어 왔다. 이러한 맥락에서 알려진 터널에는 HTTP,[10] SSH,[11] DNS,[12][13] MQTT와 같은 프로토콜이 포함된다.[14]

참조

[1] 웹사이트 Upgrading to TLS Within HTTP/1.1 http://www.ietf.org/[...] 2000
[2] 웹사이트 Vulnerability Note VU#150227: HTTP proxy default configurations allow arbitrary TCP connections http://www.kb.cert.o[...] US-CERT 2002-05-17
[3] 논문 DNS tunneling for network penetration Springer, Berlin, Heidelberg 2012-11
[4] 논문 Exploiting Internet of Things Protocols for Malicious Data Exfiltration Activities 2021
[5] 논문 Evaluating the possibility to perpetrate tunnelling attacks exploiting shortmessage-service 2021
[6] 웹사이트 Why TCP Over TCP Is A Bad Idea http://sites.inka.de[...] 2001-04-23
[7] 간행물 Understanding TCP over TCP: effects of TCP tunneling on end-to-end throughput and latency 2005-10
[8] 서적 SSH, the Secure Shell: The Definitive Guide https://books.google[...] "O'Reilly Media, Inc." 2001
[9] 간행물 Re: Extensions for long fat networks? https://marc.info/?l[...] 2003-06-13
[10] 문서 Detecting HTTP tunneling activities MASSACHUSETTS INST OF TECH LEXINGTON LINCOLN LAB 2002
[11] 논문 Understanding fileless attacks on linux-based iot devices with honeycloud 2019-06
[12] 논문 DNS tunneling for network penetration Springer, Berlin, Heidelberg 2012-11
[13] 논문 Profiling DNS tunneling attacks with PCA and mutual information 2016
[14] 논문 Exploiting Internet of Things Protocols for Malicious Data Exfiltration Activities 2021



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com