SOCKS 프록시를 연결하는 방법?


10

서문 : 내가 찾고있는 것은 위와 같은 형식의 명시적인 지침입니다. 즉, 다음과 같은 실행입니다.

랩톱 (컴퓨터 A)에서 컴퓨터 B로 작업중인 양말 프록시가 있습니다.

[A]$ ssh -ND 8888 B

A의 로컬 포트 8888에서 SOCKS 프록시를 사용하고 A에서 검색 하도록 Firefox를 설정할 수 있습니다 . 여태까지는 그런대로 잘됐다.

그러나 컴퓨터 B와 C 사이에 양말 프록시가 있습니다.

[B]$ ssh -ND 8157 C

그래서 C에있는 것처럼 B를 탐색하여 B의 Firefox 양말 프록시를로 설정 할 수 있습니다 8157.

C에 대한 연결을 사용하는 동안 로컬에서 (A에서) Firefox를 사용할 수 있도록 두 프록시를 연결하는 방법이 있습니까?

즉, 어떻게 든 모든 Firefox의 양말 요청을 A에서 C로 전달합니다. A와 C는 서로를 직접 볼 수는 없지만 모든 곳에서 완전한 루트 SSH 액세스 권한이 있습니다. 모든 머신은 데비안입니다.

참고 나는 것을 하지 않는 포트 (80)와 같은 단일 포트를 전달할하지만 내가 원하는 완전히 체인 양말 프록시를 .


-L 8888:B:8157[A] 만하면 안되나요 ?
bdecaf

@bdecaf 주어진 명령 외에? 대신? FireFox 설정이 변경되지 않습니까?
user124114

[A]에 대해서만. 당신이 설명하는 나머지.
bdecaf

ssh -L 8888:B:8157실패하면 호스트 이름 매개 변수가 필요합니다. 보다 완전한 엔드 투 엔드 답변을 줄 수 있습니까? 작동하면 동의합니다.
user124114

B는 실제로 컴퓨터 이름입니까?
bdecaf

답변:


12

방금 일부 VM에서 작동하는지 확인했습니다.

[A]$ ssh -tt -v -L8888:localhost:8157 user@B ssh -t -D 8157 user@C

에서 , 당신은에 8157 로컬 8888에서 포트 전달 터널을 열 B . B에 연결되면 C를 통해 SOCKS 프록시를 제공 하는 원격 명령 이 실행 됩니다. 내가 읽은 것에서 여전히 '-t'가 필요한 것처럼 보이지만 여전히 이유를 알아야합니다. -L8888:localhost:8157ssh -t -D 8157 user@C

이 명령은 첫 번째 호스트에서 A-> BB-> C 에서 ssh를 두 번 호출하는 하나의 명령입니다 . 아래 설명과 같이이 명령을 별도의 명령으로 나눌 수도 있습니다.

보너스 : 3 개의 프록시 연결

A->B->C->D->Internet

[hostA]$ ssh -2 -C -D 55557 -L 55556:127.0.0.1:55556 -L 55555:127.0.0.1:55555 user@B
[hostB]$ ssh -2 -C -D 55556 -L 55555:127.0.0.1:55555 user@C
[hostC]$ ssh -2 -C -D 55555 user@D

각 홉마다 -L체인의 이전 호스트에서 추가로 일치하는 전달자가 필요합니다 .

참고 문헌 :


한 줄씩 번역 :-1. 57 번 호스트 B에서 동적 포트를 앞쪽으로, B에서 포트 56을 노출하고, B에서 포트 55를 노출시킵니다.-2. 호스트 C에서 포트 56을 동적 포트 앞으로 만듭니다, Expose C에서 포트 55-3. 호스트 D에서 포트 55에 동적 포트를 전달합니다. 결과는 각 단계에서 SSH를 통해 모든 호스트의 Socks 프록시입니다. 포트 57 ~ 55에는 B, C 및 D에 종점이있는 프록시가 포함됩니다.
Ray Foss

무료 ssh 프록시가 있습니까? 나는 아무것도 찾지 못했다.
aemonge

4

SSH를 사용하는 glallen의 훌륭한 답변은 작업을 완료 할 것입니다. 그러나이를 수행하는 올바른 방법은 proxychains프로그램 을 사용하는 것 입니다. ProxyChains는 동시에 여러 프록시 서버를 쉽게 활용할 수있는 강력한 도구입니다. 예를 들어, 해커가 인터넷 공격을 수행하는 동안 자신의 신원을 숨기는 데 사용됩니다. 전 세계의 많은 프록시를 연결하여 법의학 조사관이 트래픽을 추적하는 것은 사실상 불가능합니다. 당신이 악의적 인 해커라고 말할 수는 없습니다-그것은 많은 다른 유스 케이스에서 작동합니다. ;)

ProxyChains는 Kali Linux와 같은 일부 Linux 배포판에 기본적으로 설치됩니다. 예를 들어 Ubuntu / Debian에서는 다음을 수행하여 쉽게 설치할 수 있습니다.

  • sudo apt-get install proxychains

프록시 체인은에서 구성 파일을 찾습니다 /etc/proxychains.conf. 설치 한 후 기존 Proxychains 구성 파일 (있는 경우)을 백업하고 새 파일을 작성하십시오.

  • mv /etc/proxychains.conf /etc/proxychains-backup.conf
  • nano /etc/proxychains.conf

이제 내가 작성한 예제 구성을 붙여 넣습니다.

strict_chain

proxy_dns

tcp_read_time_out 15000
tcp_connect_time_out 8000

[ProxyList]
socks4          192.168.1.1     8888
socks4          192.168.1.2     8157
socks4          192.168.1.3     6969

이 예 192.168.1.1에서 첫 번째 SOCKS 프록시 서버의 IP 주소 8888, 첫 번째 SOCKS 프록시가 청취 하는 포트 192.168.1.2, 두 번째 SOCKS 프록시 서버의 IP 주소 8157, 두 번째 SOCKS 프록시가 청취하는 포트, 기타 등등.

이제 proxychains firefox명령 행에서 Firefox를 시작하여 프록시 체인을 활용하십시오 . (Firefox가 먼저 닫혔는지 확인하십시오.) 이제 Firefox가 나가는 연결을 만들 때마다 프록시 체인 프로그램이이 구성 파일에서 지정한 모든 서버를 통해 프록시되도록 트래픽을 캡슐화합니다. Firefox 환경 설정에서 프록시 서버를 지정해서는 안됩니다. 프록시 체인은 뒤에서 모든 것을 처리합니다.

문제 해결을 위해 3을 모두 시도하기 전에 한 번에 하나의 프록시를 사용하여 작동하도록 시도해야합니다.;)

참고 문헌 :


프록시 체인 도 프록시설정 합니까 ? 또는 기존 프록시에 연결하는 데 도움이됩니까?
glallen

프록시 체인은 기존 프록시 서버에만 연결됩니다.
James

이 경우에는 파이어 폭스를 기존 프록시로 보내는 것이 아니라 여러 머신에서 체인을위한 프록시를 설정하는 것에 대한 질문에서 구체적으로 말하는 "올바른 방법 ..."이라는 문구에 동의하지 않습니다. 아마 - "프록시 자리에 일단 다른 방법은,"바로 SSH를 사용하여 어떻게 든 것을 의미하지 않고, 정보가 될 것입니다 부적절한 . 그러나 좋은 추가 배경 정보. 감사. 편집하면 공감할 수 있습니다.
glallen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.