SSH 포트 전달/터널링의 보안 영향

SSH 포트 전달/터널링의 보안 영향

내 시스템에 나가는 SSH 터널이 있을 경우 보안에 미치는 영향을 이해하는 데 도움이 필요합니다(위험은 무엇입니까? 보안 취약점일 수 있습니까?).

내부 시스템의 포트 8080을 원격 호스트의 8080으로 전달하기 위해 다음 명령을 사용하고 있습니다. localhost:8080으로 가는 트래픽을 포트 8080의 원격 호스트로 전달할 수 있기를 원합니다.

ssh -f -N -L 8080:<remote_ip>:8080 user@<bastion_host>

내가하고있는 일에 대한 다이어그램은 다음과 같습니다.

 ------------        ---------          ------------------
| remote:8080| <--- | bastion | <----- |internal host:8080|
 ------------        ---------          ------------------

내 질문은 다음과 같습니다.

  1. 원격 시스템의 잠재적 공격자가 기존 포트 전달 터널을 악용하여 내부 호스트에 액세스할 수 있습니까?
  2. 이는 TCP 연결이므로 공격자가 사용할 수 있는 내부 호스트에 대한 소켓이 있습니까?

이것이 가능한지 또는 이를 방지하기 위해 ssh에 보호 장치가 있는지 궁금합니다.

감사해요!

답변1

  1. 예, 가능합니다. 예를 들어, 공격자는 원격 호스트에서 수신 포트 8080을 제어하고 내부 호스트에서 연결하는 모든 프로그램에 데이터를 반환하여 해당 프로그램이 악용 가능한 방식으로 실패하도록 할 수 있습니다. 이는 모든 네트워크 연결에 해당됩니다.

    네트워크 연결은 내부 호스트가 SSH 클라이언트에 의해 노출된 수신 포트에 연결된 경우에만 존재합니다. 내부 호스트로 연결되는 원격 호스트에는 영구적으로 열려 있는 포트가 없습니다. 또한 요새 호스트의 SSH 서버는 원격 호스트에 노출되지 않습니다.

  2. 아니요, 반환된 소켓이 없습니다. 공격자는 내부 호스트를 대신하여 열린 TCP 세션에서 "히치하이킹"해야 하며, 이러한 히치하이킹은 (취약점을 악용하는 것 외에) TCP 세션의 범위로 제한되며 호스트의 다른 포트에는 액세스할 수 없습니다. 내부 호스트 또는 요새 호스트.

로컬 바인드 주소를 명시적으로 만들어 로컬 구성 변경에 대한 의존성을 줄일 수 있습니다.

ssh -f -N -L localhost:8080:<remote_ip>:8080 user@<bastion_host>

이렇게 하면 내부 호스트에서 수신되는 포트가 localhost에 바인딩되므로 내부 호스트 자체에서 실행되는 프로그램에서만 액세스할 수 있습니다. (이 호스트의 모든 사용자가 액세스할 수 있습니다.)

관련 정보