SSH 만있는 경우 : ssh SOCKS 프록시를 통한 역방향 터널 웹 액세스


15

가끔 액세스가 매우 제한적인 서버에 연결해야합니다.
DMZ 방화벽에는 인바운드 SSH 만 허용됩니다.
아웃 바운드 HTTP 연결이 차단되었습니다.

SSH 세션을 통해 웹 액세스를 터널링하는 쉬운 방법을 찾고 있으므로 yum / apt-get을 통해 업데이트 및 소프트웨어를 설치할 수 있습니다. 이상적으로는 보호 구역에 추가 소프트웨어 / 서비스를 설치하지 않으려 고합니다.

그런 상황에서 무엇을하십니까?

SSH에는 -D <port>SOCKS 프록시 옵션이 있습니다. 그러나 불행히도 클라이언트에서 서버로의 단방향 일뿐이며 반대 옵션은 없습니다.

답변:


26

나는 마침내 이것을 달성 할 수있었습니다 ssh.

  1. 클라이언트 시스템의 로컬 SOCKS 프록시를 시작 (사용 ssh -D)
  2. 원격 서버에 연결하고 ssh -R로컬 SOCKS 프록시에 역방향 포트 전달 ( )을 설정하십시오.
  3. 전달 된 프록시를 사용하도록 서버 소프트웨어 구성

1. 백그라운드에서 로컬 양말 프록시를 시작하십시오.

SSH를 통해 로컬 호스트에 연결하고 포트 54321에서 SOCKS 프록시를 엽니 다.

$ ssh -f -N -D 54321 localhost

-f 백그라운드에서 SSH를 실행합니다.

참고 : 명령을 시작한 터미널을 닫으면 프록시 프로세스가 종료됩니다. 또한 완료되면 터미널 창을 닫거나 프로세스를 직접 종료하여 스스로 정리해야합니다!

2. 원격 서버에 연결하고 역방향 포트 전달 설정

원격 포트 6666을 로컬 포트 ​​54321에 바인딩합니다. 그러면 로컬 양말 프록시를 포트 6666의 원격 사이트에서 사용할 수 있습니다.

$ ssh root@target -R6666:localhost:54321

3. 전달 된 프록시를 사용하도록 서버 소프트웨어 구성

프록시를 사용하도록 yum, apt, curl, wget 또는 SOCKS를 지원하는 기타 도구 만 구성하십시오 127.0.0.1:6666.

보일라! 행복한 터널링!


4. 옵션 : 전달 된 프록시를 사용하도록 서버 소프트웨어를 구성하십시오.

proxychains대상 서버에 설치 하면 작업이 훨씬 쉬워졌습니다.

임의의 명령에서 프록시로 TCP 및 DNS 요청을 리디렉션 telnet하는 LD_PRELOAD트릭을 사용하여 모든 소프트웨어가 SOCKS 프록시를 사용할 수 있습니다 .

/etc/proxychains.conf전달 된 양말 프록시를 사용하도록 설정 :

[ProxyList]
# SSH reverse proxy
socks5  127.0.0.1 6666

터널 임의의 도구 (즉, 사용하는 TCP)과 proxychains:

$ proxychains telnet google.com 80
$ proxychains yum update
$ proxychains apt-get update

3

최신 버전의 SSH를 사용하면 매우 간단한 옵션을 사용할 수 있습니다 ssh-R <[bind_address:]port>. 호스트의 포트와 바인드 주소 만 사용하고 클라이언트 측 포트를 지정하지 않으면 역방향 SOCKS 프록시가 작성됩니다.

이것은 최신 SSH 버전의 매뉴얼 페이지에도 나와 있습니다.

[...] 명시 적 대상이 지정되지 않은 경우 ssh는 SOCKS 4/5 프록시로 작동하고 원격 SOCKS 클라이언트가 요청한 대상으로 연결을 전달합니다.

http://ifconfig.io 와 같은 간단한 "나에게 내 IP를주십시오"-API에 연결하여 curl로 이것을 테스트 할 수 있습니다 .

$ curl ifconfig.io

vs

$ curl --socks5 localhost:<PORT> ifconfig.io


2
해당 기능이 도입 된 버전 번호를 언급하면 ​​유용합니다.
kasperd

훨씬 간단하고 고맙습니다!
Kaii

1
@kasperd : OpenSSH 7.6 , 2017-10-03에 릴리스되었습니다. 아래의 3 글 머리 기호를 확인 새로운 기능
MestreLion
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.