2.log

포트 포워딩과 SSH 포트포워딩/터널링에 대하여 본문

HACKING/Bandit+

포트 포워딩과 SSH 포트포워딩/터널링에 대하여

2.log 2023. 4. 9. 17:22
728x90
반응형

 

포트포워딩?

네트워크 연결을 설정하여 한 컴퓨터나 기기에서 다른 컴퓨터나 기기로 연결을 전달(forwarding)하는 기술로, 주로 외부 네트워크에서 내부 네트워크로의 접속을 가능하게 해주는데 사용 되며(ex, 인터넷 공유기), 서버 간 원격 접속에서도 사용 가능.

만약 2대의 pc 를 같은 포트로 포트포워딩 할 경우 우선순위가 높은 쪽으로 적용 됨

 

 

 

포트포워딩을 하는 이유?

IP 주소의 부족과 관리 관점

 

전 세계 모든 컴퓨터에 고유한 IP 주소를 모두 부여하는 것은 불가능 하기에 IP 할당을 효율적으로 관리하기 위해 공인 IP 주소와 사설 IP 주소로 나누어 사용하게 됨. 이 때, 공인 IP 주소는 인터넷 서비스 제공자(ISP)로 부터 할당받은 IP 주소로, 이를 통해 인터넷에 접속이 가능한데, 이러한 공인 IP 주소는 앞서 말했듯이 유한하고 절대적으로 부족하므로 대부분 가정이나 회사에서는 사설 IP 주소를 사용하게 됨. 사설 IP 주소는 로컬 네트워크 내에서만 사용 가능하며, 공인 IP 주소와는 다른 IP 대역을 사용 함

 

 

[공인 IP 대역]

  • 인터넷 사용자의 로컬 네트워크를 식별하기 위해 ISP(Internet Service Provider) 가 제공하는 IP 주소 (전 세계 유일)
  • 공용 IP 주소, 외부에 공개된 IP 주소(공개되어 있기에 인터넷에 연결된 다른 PC로부터의 접근이 가능)
  • 공개되어 있기에 공인 IP 주소를 사용하는 경우 방화벽 등 보안 프로그램 설치 필요
  • SK, KT, KT 등 통신사 통하여 사용하고 있는 인터넷 망
 0.0.0.1 ~ 127.255.255.255
 128.0.0.0 ~ 191.255.255.255
 192.0.0.0 ~ 233.255.255.255
 224.0.0.0 ~ 239.255.255.255
 240.0.0.0.0 ~ 255.255.255.255

 

 

[사설 IP 대역]

  • 일반 가정이나 회사 내에서 할당된 네트워크 IP 주소
  • 로컬IP, 가상IP라고도 불리며 IPv4 의 주소 부족으로 인해 서브넷팅된 IP 이기에 라우터에 의해 로컬 NW 상의 PC 나 장치에 할당 됨
  • 인터넷 고유기에 연결된 PC, TV, 스마트 폰 등이 대표적 사설 IP 주소
  • 외부에 공개되지 않아 외부에서 검색 및 접근 불가능한 IP
10.0.0.0 ~ 10.255.255.255
172.16.0.0 ~ 172.31.255.255
192.168.0.0 ~ 192.168.255.255

 

 

일반적으로, 외부에서 내부망의 컴퓨터에 접근하려면 내부망에서 사용하는 IP 주소로는 접근이 불가능하기에 내부망에서 사용하는 IP 주소와 외부망에서 접근 가능한 IP 주소를 매핑해 줄 필요가 있음. 포트포워딩이 바로 이 기능을 하여 외부에서도 내부망에 있는 컴퓨터에 접근할 수 있게 해주며, 내부망의 컴퓨터를 외부에서 접근해 원격제어 할 수 있게 됨. 또한 공인 IP 주소 하나로 여러개의 사설 IP 주소를 관리할 수 있기에 여러 대의 디바이스 역시 한 번에 관리 가능함

 

 

 

공유기 포트포워딩

[원문참고]

 

Q. 외부에서 내 집 서버에 접속할 수 있게 공유기 포트포워드 설정 방법은?

A. 내부 IP 주소, 외부 포트, 내부 포트를 입력하면 된다. ipTIME 공유기 기준으로 설명해보겠다. 보통 공유기마다 약간씩 다르고 거의다 비슷하다. ipTIME 공유기는 기본 IP 주소가 192.168.0.1이다. 브라

taptorestart.tistory.com

 

 

SSH 포트 포워딩/터널링

 

SSH 포트 포워딩은 SSH 서버를 게이트웨이 or 프록시 서버처럼 활용해 외부 접속을 하는 것으로 터널링(Tunneling)이라고도 함. 만약 접근하려는 서버의 웹 서비스 포트가 닫혀있고 22번(SSH) 포트만 개방되어 있을 경우, 이 포트포워딩을 이용하여 해당 서버에 우회하여 접근 할 수 있게 됨

 

 

1. Local Port Forwarding (로컬 포트 포워딩) 

 

로컬에서 SSH 클라이언트를 실행, 원격머신에서 SSH 서버 실행해 서버에 연결하면서 로컬 포트를 원격 포트로 포워딩 함

$ ssh -L [로컬에서 사용할 리스닝 포트]:[최종 접근할 주소(IP:PORT)] [SSH 서버 주소]

 

 

  • [ex] Host_A(1.1.1.1)에서 SSH client의 31000 포트 사용해 Host_B(2.2.2.2)의 8080 포트로 접근
$ ssh -L 31000:2.2.2.2:8080 2.2.2.2

 

 

원격 서버(HostB)의 8080 포트는 방화벽으로 막혀있지만 22번 포트(SSH port)가 열려있는 경우, SSH 클라이언트의 31000 포트와 SSH 서버의 22번 포트 간 터널을 생성하여 SSH 서버로 데이터를 보낼 수 있게 되며, 결과적으로 사용자는 방화벽에 차단되지 않고 최종 목적지 서버에 접근할 수 있게 됨

 

 

 

2. Remote Port Forwarding (원격 포트 포워딩)

 

로컬에서 SSH 서버를 실행, 원격 머신에서 SSH 클라이언트를 실행하면서 로컬 포트를 원격 포트로 포워딩 함

$ ssh -R [원격에서 사용할 리스닝 포트]:[포워딩 할 서버 주소(IP:Port)] [SSH 서버 주소]

 

 

  • [ex] Host_A(1.1.1.1) 에서 SSH server 의 31000 포트를 통해 Host_B(2.2.2.2) 의 8080번 포트로 접근
$ ssh -R 31000:2.2.2.2:8080 1.1.1.1

원격서버(Host_B) 내부로 들어오는 모든 연결은 차단되어 있지만 내부에서 외부로 나가는 패킷은 허용되어 있는 경우, SSH 서버측 리스닝 포트를 열어두면(31000) SSH 클라이언트 측에서 여기로 데이터를 보내면서 터널이 생성되고 SSH 서버는 이 통로를 통해 데이터를 클라이언트에게 전송할 수 있게 되며, 최종적으로는 목적지인 8080 포트에도 접근할 수 있게 됨

 

 

 

3. Dynamic Port Forwarding (동적 포트 포워딩)

 

앞선 두 가지 포트포워딩 방식이 (1:1) 매핑이었다면, Dynamic 방식은 (1:N) 매핑 방식으로, 이 방식으로 원격 서버에 접속하면 해당 서버는 프록시 서버이면서 SOCKS* 로 동작하게 되어 해당 서버 내에 있는 여러 포트들에 접근 할 수 있게 됨

 

즉, 로컬 머신에서 실행되는 SOCKS 프록시를 생성하고 이 프록시는 로컬 네트워크를 통해 연결할 수 있는 모든 호스트와의 통신을 중계하기에, 로컬에서 SSH 를 통해 원격서버에 연결하면 로컬에서 지정한 포트를 통해 원격서버와 연결되어 있는 모든 포트에 접근할 수 있게 되는 것

 

*SOCKS : Soket Secure, 프록시 서버가 네트워크 packet 라우팅 하는데 사용하는 프로토콜

 

$ ssh -D [로컬 리스닝 포트] [SSH 서버 주소(원격서버)]

 

  • [ex] Host_A(1.1.1.1) 에서 SSH client 의 31000 포트를 통해 Host_B(2.2.2.2) 내부 포트들로 접근
$ ssh -D 31000 2.2.2.2

 

 

(사실 정확히 이해한 건지, 그림은 제대로 그린건지 스스로도 굉장히 의문스러움..

그러므로 오류, 지적해주시면 감사히 받겠습니다..)

 

 

 

포트포워딩 우선순위

[공유기 포트 포워딩]

1. 수동 포트 포워딩 (공유기 설정에서 직접 포트 포워딩 수동으로 설정한 경우)

2. UPnP(Universal Plug and Play) 를 사용해 포트포워딩 자동으로 설정한 경우

3. DMZ(De-Militarized Zone)설정 (외부에서 접근하는 어떤 포트라도 1개의 특정 사설 IP/ 내부 IP 로 통과되도록 하는 특수 기능으로, 모든 포트와 모든 외부 인터넷 트래픽을 허용하기에 보안에 취약하므로 권장하지 않음)

 

[SSH 포트포워딩]

1. 로컬 포트와 원격 포트가 모두 지정된 경우 -L 옵션에 의해 설정된 포트 포워딩 우선

2. 원격 포트만 지정된 경우 -R 옵션에 의해 설정된 포트 포워딩이 우선

3. 로컬과 원격 포트 모두 지정되니 않은 경우 *SSH 구성 파일에 설정된 포트 포워딩이 우선 

* ~/.ssh/config : 이 파일에 포트 포워딩 추가하면 SSH 클라이언트 실행할 때마다 포트 포워딩 일일이 입력하지 않아도 됨

 

 

 

보안 상 취약점

1. 포트 포워딩 공격 : 앞선 방법들로 서버 관리자가 아닌 공격자가 네트워크 내부로 침입 가능

2. 중간자 공격 : 포트 포워딩을 통해 전달되는 데이터를 가로채거나 변조할 여지 있음

3. 포트 포워딩 오용 : 내부 네트워크에서 사용되는 포트를 외부에 노출하여 공격 대상이 될 수 있음

 

 

대응방안

1. 접근 제어 목록 (ACL, Access Control List) 등을 사용해 불필요한 접근 차단 및 이상행동 탐지 시스템 구축

2. SSH 와 같은 암호화 프로토콜 사용해 데이터 암호화 (SSL/TLS와 같은 보안 프로토콜 사용해 데이터 전송 보호)

3. 외부에서 접근 가능한 포트와 내부에서 접근 가능한 포트 구분하여 설정하고, 불필요한 포트는 차단 등

 

 

 

 

 

 

 

[참고]

https://skstp35.tistory.com/234

 

[Network] 공인 IP 대역과 사설 IP 대역

[Network] 공인 IP 대역과 사설 IP 대역에 대해서 알아보자. 공인 IP (Public IP) 대역이란? 인터넷 사용자의 로컬 네트워크를 식별하기 위해 ISP(Internet Service Provider, 인터넷 서비스 공급자)가 제공하는 IP

skstp35.tistory.com

https://www.hanbit.co.kr/network/category/category_view.html?cms_code=CMS5064906327 

 

SSH Tunneling 사용하기

SSH(Secure Shell)는 네트워크 보안에 있어 대중적이고 강력한 접근 방식을 제공하기 위해 만들어진 프로토콜이다. SSH에 기반한 제품은 서버와 클라이언트의 한 쌍으로 구성되어 있는데, 보통 사용

www.hanbit.co.kr

https://itsaessak.tistory.com/171

 

SSH Port Forwarding 이해하기 ( 해커의 관점에서의 이론 )

포트 포워딩은 " 리스닝 포트 "를 SSH Server, SSH Client 중 어느 곳에 여는 지에 따라서 두가지 방식으로 나뉘어 진다 [1] Local Port Forwarding 로컬 포트 포워딩 - SSH Client에 리스닝 포트를 연다 로컬 포트

itsaessak.tistory.com

https://unix.stackexchange.com/questions/115897/whats-ssh-port-forwarding-and-whats-the-difference-between-ssh-local-and-remot

 

What's ssh port forwarding and what's the difference between ssh local and remote port forwarding

I feel confused about ssh port forwarding and the difference between ssh local and remote port forwarding. Could you please explain them in detail and with examples? Thanks!

unix.stackexchange.com

https://linux.systemv.pe.kr/ssh-%ED%8F%AC%ED%8A%B8-%ED%8F%AC%EC%9B%8C%EB%94%A9/

 

SSH 포트 포워딩. - Voyager of Linux

이럴 경우 사내 보안팀에 매니징 서비스 접속을 위해서 포트를 개방해 줄것을 요구할 수 있지만 이럴때에 SSH 의 포트 포워딩(Port Forwarding)을 이용하면 쉽게 해결 할 수 있다.

linux.systemv.pe.kr

https://johnliu55.tw/ssh-tunnel.html

 

SSH Tunneling (Port Forwarding) 詳解

詳細解釋使用SSH的Local Port Forwarding、Remote Port Forwarding、 和Dynamic Port Forwarding來建立加密通道(Tunneling)的方法。

johnliu55.tw

 

728x90
반응형
Comments