동적으로 전달된 포트를 SSH로 여러 원격 연결 허용

동적으로 전달된 포트를 SSH로 여러 원격 연결 허용

세 대의 기계가 있다고 가정 해 봅시다.

A - SSH를 통해 연결하는 서버
B - SSH를 통해 연결하는 클라이언트
C - B 서브넷의 다른 클라이언트

이제 클라이언트 B에서 이 명령을 실행하여 포트 1235에 대한 동적 포트 전달을 설정했습니다.

ssh -D 1235 a@A

여기서 a는 서버 A의 사용자 이름입니다.

이제 이 포트 1235는 B에서 localhost에 바인딩되어 있으므로 이 포트 1235에만 연결할 수 있습니다. 명령을 다음과 같이 수정하면

ssh -D C:1235 a@A

그러면 C만 B의 1235 포트에 연결할 수 있지만 B 자체는 연결할 수 없습니다. 세 번째 옵션을 사용할 수 있습니다.

ssh -D 0.0.0.0:1235 a@A

B와 C는 모두 B의 포트 1235에 연결할 수 있지만 B와 C와 동일한 서브넷에 있는 다른 모든 컴퓨터도 연결할 수 있습니다. 내가 정말로 원하는 것은 동적 포트를 바인딩하여 B와 C만 연결할 수 있도록 하고 다른 컴퓨터는 연결할 수 없도록 하는 방법입니다. 이 목표를 어떻게 달성할 수 있나요?

답변1

SSH 옵션을 사용한 -g다음 해당 포트에 대한 C 연결만 허용하도록 방화벽 규칙을 구성합니다.

-g      Allows remote hosts to connect to local forwarded ports.

명령은 다음과 같습니다:

ssh -g -D 1235 a@A

답변2

내가 아는 한 SSH 자체는 어떤 상황에서도 소스 IP 주소를 확인하지 않습니다(어쨌든 스푸핑될 수 있음). 따라서 B에서 패킷 필터(예: iptables)를 사용하고 대상 포트 1235로 들어오는 TCP 패킷이 소스 주소로 B를 갖도록 설정해야 할 수도 있습니다.

관련 정보