SSH 점프를 비활성화하는 방법

SSH 점프를 비활성화하는 방법

사용자가 특정 Debian 10.10 호스트를 SSH 점프 호스트로 사용하지 못하도록 하는 방법을 찾고 있습니다. 이 호스트에서 SSH를 통해 연결하는 것을 방지하고 싶습니다.

  • 나는 ./etc/ssh/sshd_configAllowTcpForwarding no
  • 나는 ./etc/ssh/ssh_configFollowAgent no

하지만 연결하면 다른 호스트에 연결할 수 있습니다.

첫 번째 SSH 연결에서 새 SSH 연결을 거부/잠금/차단하는 방법은 무엇입니까?

HOST A --{SSH}--> Other_Host_N --{NO SSH}--X--> hyp_vmware

답변1

중간 호스트에서 "금지된" 대상 호스트로 나가는 SSH 연결을 차단합니다. Linux의 iptables는 다음과 같습니다.

iptables -A OUTPUT -d forbiddenhost -p tcp --dport 22 -j DROP

(또는 대상 호스트의 중간 호스트에서 들어오는 SSH 연결을 제거합니다.)


단순히 점프 호스트를 사용하여 암호화된 데이터를 소스에서 최종 대상으로 전달하는 몇 가지 일반적인 방법이 있기 때문에 중간 장치에서 새로운 SSH 연결이 시작되는 것을 막는 것만으로는 효과가 없을 수 있습니다. 즉, 두 개의 파이프를 연속적으로 배치하지 마십시오.

origin *---SSH---* intermediate *---SSH---* target

한 파이프의 절반을 다른 파이프로 라우팅하여 중간 호스트를 통과하도록 구부릴 수 있습니다.

origin           intermediate        target
    *-]=== tunnel ===[-------SSH-------* 

터널 부분은 또 다른 SSH 연결일 수도 있고, 예를 들어 일반 TCP 연결(SSH에서 포트 전달로 설정될 수도 있음)일 수도 있습니다. 그것이 무엇이든 그것은 단지 "원본"에서 시작된 SSH 연결일 뿐입니다. 이 모든 것의 이점은 사용자가 암호화되지 않은 데이터가 있는 중개 호스트를 신뢰할 필요가 없다는 것입니다. 물론 단점은 SSH를 통한 SSH 사례의 추가 오버헤드입니다. (전달된 TCP 연결을 통해 SSH를 실행하면 일반적인 SSH 사용에 비해 오버헤드가 거의 발생하지 않습니다.)

이와 같은 작업을 수행하는 몇 가지 쉬운 방법은 , 또는 이와 유사한 기능을 ProxyCommand사용 하여 SSH를 사용하는 것입니다. 예를 들어 참조하십시오.ssh intermediatehost -W targethost:22ssh intermediatehost nc targethost 22ssh 프록시 명령 -W, nc와 exec nc의 차이점은 무엇입니까?그게 다야.

중간 개체가 점핑 호스트 역할을 하는 데 필요한 것은 다음과 같습니다.일부최종 대상 호스트로의 네트워크 연결을 여는 방법입니다. nc설치하지 않아도 일반 셸 액세스 권한이 있는 사용자는 정적 복사본을 다운로드하거나 짧은 Perl 스크립트 등을 작성할 수 있습니다. Bash를 사용하는 것만으로도 리디렉션을 통한 네트워크 연결 열기를 지원하므로 괜찮습니다.

답변2

셸 액세스 권한을 얻은 사용자에게는 기본적으로 달성하려는 작업이 불가능합니다. SSH를 통해 로그인할 수 있는 사용자는 얻은 셸에서 다음을 포함하여 모든 작업을 수행할 수도 있습니다.

  • 별도의 프로세스를 시작 ssh하고 다른 호스트에 연결
  • 정적으로 컴파일된 ssh를 복사하여 사용하세요.
  • 임의의 소프트웨어를 다운로드하고 실행하십시오.

따라서 기본적으로 SSH 점프 기능을 수행할 수 있는 권한을 그들에게 부여했습니다. SSH 데몬 자체에서 제공하는 점프 호스트 기능의 편리함을 비활성화할 수도 있습니다. 그것은 당신에게 충분하지 않은 것 같습니다.

기본적으로 다음 중 하나를 선택해야 합니다. 사용자가 연결된 컴퓨터에서 액세스(네트워크 액세스 포함)할 수 있도록 하시겠습니까?

대답이 "아니요"인 경우 해결책은 간단합니다. 이러한 네트워크 액세스 권한이 있는 컴퓨터에 대한 액세스 권한을 부여하지 않는 것입니다. 예를 들어 대학에서는 일부 컴퓨팅 서버가 학생과 연구원이 SSH를 통해 액세스할 수 있는 일부 소프트웨어를 실행하지만 내부 네트워크에 대한 액세스 권한을 부여해서는 안 되는 매우 일반적인 설정입니다. 인터넷(또는 사용자가 이동할 수 없도록 하려는 네트워크)에 연결하지 않고 자체 Linux 네트워크 네임스페이스의 자체 IPv6 주소에서 SSH 데몬을 실행하면 이 문제가 해결되며 기본적으로 무료입니다.

답변3

모든 답변, 분석 및 기타 정보에 감사드립니다.

나는 "other_host" 스키마의 이름을 "Hyp_vmware"로 바꾸기 시작했습니다. 왜냐하면 그가 "other_host"였기 때문입니다.

오늘 저는 SSH를 통한 모든 연결을 거부하고 필요한 IP를 허용하도록 ESXi 방화벽에 규칙을 설정했습니다. ESXi 7.0에는 Linux에서와 같이 "TCP 래퍼"가 없기 때문입니다.

"ilkkachu" 답변 참조를 얻어 ESXi CLI에서 조정했습니다.

ESXi 명령은 "ilkkachu" 답변과 다릅니다. 다음 명령을 사용하여 IP를 필터링할 수 있습니다.

esxcli network firewall ruleset set --ruleset-id=sshServer --enabled=true
esxcli network firewall ruleset allowedip add -i @IP -r sshServer
esxcli network firewall refresh

다정하게

관련 정보