엔지니어 중 한 명이 서브넷을 잘못 구성한 서버가 있으며 이제이 서버에서 잠겼습니다. 내가 아는 유일한 액세스는 IDC의 직렬 콘솔입니다 (IDC 엔지니어에게 도움을 요청하는 것을 의미합니다) .
잘못 구성된 것 :
address 192.168.1.9 # Original address there was
netmask 255.255.255.254 # Misconfigured, originally should've been .240
호기심에서-IDC 호출을 피하고 어떻게 든 SSH를 통해이 호스트에 연결하는 방법이 있습니까 (그런 다음 구성을 수정할 수 있습니까)?
답변
동일한 네트워크 세그먼트의 다른 호스트에 로그인 할 수 있어야합니다. 잘못 구성된 호스트에 액세스하는 방법 중 일부는 중간 호스트에 루트가 필요하지만 중간 호스트에 루트가 없어도 액세스 할 수있는 쉬운 방법이 있습니다.
IPv6를 사용하여 호스트에 액세스하는 쉬운 방법
ssh -o ProxyCommand='ssh -W [fe80::42:ff:fe:42%%eth0]:%p user@intermediate-host' root@target-server
위의 명령을 필요로하는 다음의 예 값이 사용 사례에 대한 올바른 값으로 치환되는 : fe80::42:ff:fe:42
, eth0
, user
, intermediate-host
,와 target-server
.
작동 방식에 대한 자세한 설명
ProxyCommand
대상 호스트에 직접 TCP 연결을 열 수 없을 때 사용하는 ssh 기능입니다. 인수 ProxyCommand
는 TCP 연결 대신 stdin / stdout을 사용하는 명령입니다.
-W
단일 포트 전달을 열고 stdin / stdout에 연결하는 데 사용됩니다. 이것은와 잘 어울립니다 ProxyCommand
.
fe80::42:ff:fe:42%%eth0
대상 호스트의 링크 로컬 주소입니다. 이스케이프 문자 로 ProxyCommand
사용 하기 때문에 %
입력 된 ssh 명령은 %%
해당 위치에서 사용해야합니다 . 을 실행하여 세그먼트에서 모든 링크 로컬 주소를 찾을 수 있습니다 ssh user@intermediate-host ping6 -nc2 ff02::1%eth0
.
이 목적으로 IPv6 링크 로컬 주소를 사용하는 것이 모든 최신 시스템에서 기본적으로 활성화되어 있기 때문에 가장 쉬운 방법이며, IPv4 및 IPv6 스택이 잘못 잘못 구성되어 있어도 링크 로컬 주소는 계속 작동합니다.
IPv4로 폴백
잘못 구성된 호스트에서 IPv6가 완전히 비활성화 된 경우 (권장하지 않음) IPv4를 사용해야합니다. IPv4에는 링크 로컬 주소가 없으므로 IPv6이 IPv4를 사용하여 잘못 구성된 호스트에 액세스하는 방식이 더 복잡해져 중간 호스트에 대한 루트 액세스가 필요합니다.
잘못 구성된 호스트가 여전히 기본 게이트웨이를 사용할 수있는 경우 외부에서 호스트에 액세스 할 수 있습니다. 아마도 잘못 구성된 넷 마스크는 스택이 넷 마스크가 포함하는 접두어 외부의 게이트웨이 사용을 거부하여 기본 게이트웨이를 손상 시켰을 수도 있습니다. 실제로이 경우 잘못 구성된 호스트는 192.168.1.8 과만 통신 할 수 있습니다. 이는 현재이 잘못 구성된 호스트에 액세스 할 수있는 서브넷의 다른 IP 주소이기 때문입니다.
192.168.1.8에 로그인 한 경우 거기에서 192.168.1.9로 ssh 할 수 있습니다. 192.168.1.8이 현재 할당되어 있지 않은 경우 루트 액세스 권한이있는 세그먼트의 모든 호스트에 일시적으로 할당 할 수 있습니다.
답변
kasperd
질문의 상황에서 어떻게 회복 할 수 있는지에 대해 충분히 자세하게 설명했습니다. 이 답변은 내가 한 방법의 정확한 단계별입니다.
답변
실제로 원하는 범위 내뿐만 아니라 대상의 구성된 서브넷 내에 IP 주소를로드해야합니다 .
예를 들어 10.0.0.220에서 서브넷 255.255.255.248을 사용하여 10.0.0.2로 패킷을 보내면 10.0.0.2는 서브넷 마스크를보고 응답 방법을 찾습니다. 서브넷 255.255.255.248에서 .220이 WAAY이므로 .2는 대신 기본 게이트웨이로 응답을 보내야합니다.
따라서 .2와 같은 서브넷 내에 IP 주소를로드 할 수 있다면 (예 : 10.0.0.3이면 작동합니다.
특정 경우 10.0.0.9의 경우 서브넷 255.255.255.254 에는 1 개의 추가 IP 주소 , 즉 10.0.0.8 만 있습니다. 따라서 해당 IP 주소를로드 할 수 있으면 SSH 할 수 있어야합니다.