Czy jest możliwy dostęp SSH do serwera z źle skonfigurowaną podsiecią?

18

Mamy serwer, na którym jeden z naszych inżynierów źle skonfigurował podsieć, a teraz jesteśmy zablokowani z tego serwera, a jedyny dostęp, o którym wiem, że działa, to konsola szeregowa z IDC (oznacza to, że poprosimy inżyniera IDC o pomoc w tym) .

Co zostało źle skonfigurowane:

address 192.168.1.9 # Original address there was
netmask 255.255.255.254 # Misconfigured, originally should've been .240

Z ciekawości - czy istnieje sposób, aby uniknąć dzwonienia do IDC i jakoś połączyć się z tym hostem przez SSH (wtedy możemy naprawić konfigurację)?

Alexey Kamenskiy
źródło

Odpowiedzi:

25

Musisz mieć możliwość zalogowania się na innym hoście w tym samym segmencie sieci. Niektóre sposoby uzyskania dostępu do źle skonfigurowanego hosta wymagają roota na hoście pośrednim, ale jest też jeden prosty sposób na uzyskanie dostępu bez konieczności rootowania na hoście pośrednim.

Łatwy sposób na dostęp do hosta za pomocą IPv6

ssh -o ProxyCommand='ssh -W [fe80::42:ff:fe:42%%eth0]:%p user@intermediate-host' root@target-server

Poniższy przykład wartości w powyższym poleceniu konieczności być podstawiony prawidłowych wartości dla przypadku użycia: fe80::42:ff:fe:42, eth0, user, intermediate-host, i target-server.

Szczegółowe wyjaśnienie, jak to działa

ProxyCommandto funkcja ssh, z której można korzystać, gdy nie można otworzyć połączenia TCP bezpośrednio z hostem docelowym. Argumentem ProxyCommandjest polecenie, którego stdin / stdout należy użyć zamiast połączenia TCP.

-Wsłuży do otwierania przekierowania pojedynczego portu i podłączania go do stdin / stdout. To ładnie pasuje do ProxyCommand.

fe80::42:ff:fe:42%%eth0to lokalny adres łącza dla hosta docelowego. Zwróć uwagę, że ze względu na ProxyCommandużycie %jako znaku ucieczki wpisane polecenie ssh musi być używane %%w tym miejscu. Możesz znaleźć wszystkie adresy lokalne dla łącza w segmencie, uruchamiając ssh user@intermediate-host ping6 -nc2 ff02::1%eth0.

Użycie do tego celu adresów lokalnych dla łącza IPv6 jest zwykle najłatwiejszym sposobem, ponieważ jest ono domyślnie włączone we wszystkich nowoczesnych systemach, a adresy lokalne dla łącza nadal działają, nawet jeśli stosy IPv4 i IPv6 są poważnie źle skonfigurowane.

Powrót do IPv4

Jeśli IPv6 jest całkowicie wyłączony na źle skonfigurowanym hoście (absolutnie niezalecane), być może będziesz musiał skorzystać z IPv4. Ponieważ IPv4 nie ma adresów lokalnych dla łącza, sposób, w jaki robi to IPv6, to dostęp do źle skonfigurowanego hosta za pomocą IPv4 staje się bardziej skomplikowany i wymaga dostępu do konta root na hoście pośrednim.

Jeśli źle skonfigurowany host nadal będzie mógł korzystać z domyślnej bramy, będzie można uzyskać do niej dostęp z zewnątrz. Możliwe, że źle skonfigurowana maska ​​sieci również złamała bramę domyślną, ponieważ stos odmawia użycia bramy poza prefiksem objętym maską. Jeśli tak jest w rzeczywistości, źle skonfigurowany host będzie mógł komunikować się tylko z 192.168.1.8, ponieważ jest to jedyny inny adres IP w podsieci obecnie dostępny dla tego źle skonfigurowanego hosta.

Jeśli masz login 192.168.1.8, być może będziesz w stanie ssh stamtąd do 192.168.1.9. Jeśli 192.168.1.8 jest obecnie nieprzypisane, możesz tymczasowo przypisać go do dowolnego hosta w segmencie, do którego masz dostęp root.

kasperd
źródło
A fe80::42:ff:fe:42czy adres ...? mój źle skonfigurowany serwer?
Alexey Kamenskiy
@AlexKey Tak, należy go zastąpić lokalnie połączonym adresem IPv6 błędnie skonfigurowanego serwera.
kasperd
1
Każdy przykład z dostępem przez IPv4 (w przypadku IPv6 jest wyłączony)?
Alexey Kamenskiy
@AlexKey W przypadku wyłączenia IPv6 Myślę, że musisz przejść przez 192.168.1.8, ponieważ wydaje się, że jest to jedyny inny adres IP pod skonfigurowanym prefiksem.
kasperd
1
@Lenniey najwyraźniej z powodu takiego pytania (przynajmniej).
Alexey Kamenskiy
9

kasperdopublikował świetną odpowiedź wystarczająco szczegółową, aby dowiedzieć się, jak mogę wyjść z sytuacji w pytaniu. Ta odpowiedź jest dokładnym krok po kroku, jak to zrobiłem.

  1. SSH do serwera w tej samej sieci fizycznej
  2. Używając arp -alub ip neighbor listjak rootznaleźć adres MAC źle skonfigurowanego serwera.
  3. Używając MAC do konwertera link-local znajdź link-local dla źle skonfigurowanego serwera
  4. Teraz SSH może połączyć się z serwerem jak każdy użytkownik poprzez ssh user@link-local%dev:
    • użytkownik - nazwa użytkownika, dla którego mamy prawo do SSH
    • link-local - samodzielnie przypisany adres IPv6 odzyskany w kroku 3
    • dev to fizyczny interfejs, z którego ten serwer jest osiągalny (np. eth0)
Alexey Kamenskiy
źródło
2

Trzeba załadować adresu IP w ciągu skonfigurowanego podsieci swojego celu, nie tylko w zakresie, który rzeczywiście chcesz.

Jeśli wyślesz pakiet do 10.0.0.2 z podsiecią 255.255.255.248 z, na przykład, 10.0.0.220, 10.0.0.2 spojrzy na swoją maskę podsieci, aby dowiedzieć się, jak odpowiedzieć. Ponieważ .220 jest ZWOLNIONY z podsieci 255.255.255.248, .2 zamiast tego musi wysłać odpowiedź do bramy domyślnej.

Więc jeśli możesz załadować adres IP w tej samej podsieci co .2, np. 10.0.0.3, to zadziała.

W konkretnym przypadku w przypadku 10.0.0.9 podsieć 255.255.255.254 ma tylko 1 dodatkowy adres IP , a mianowicie 10.0.0.8. Jeśli więc możesz załadować ten adres IP, powinieneś mieć możliwość SSH.

thelogix
źródło