Przypadkowo zabraniam połączenia SSH ze zdalnym serwerem… Co dalej?

61

Powiedzmy to jeszcze raz, wszyscy popełniamy błędy , a ja właśnie popełniłem jeden.

Krótka historia: Robiłem kilka rzeczy na VPS (Debian), który wynajmuję, kiedy zauważyłem dziwne zachowanie. Za pomocą netstatpolecenia zobaczyłem nieautoryzowane połączenie przez SSH. Nie wiedziałem, co robić, więc postanowiłem zamknąć jego połączenie, używając iptables:

iptables -A INPUT -p tcp --dport ssh -s IP -j DROP

Ale jestem zmęczony i napisałem

iptables -A INPUT -p tcp --dport ssh -j DROP

i wyrzuciłem siebie (i wszystkich innych) ...

Jak to naprawić?

pomidor
źródło
1
nie, ponieważ blokuje wszystkie pakiety ssh na maszynie. w źle skonfigurowanej podsieci wystarczy tcpdump dla tego adresu mac, pobrać podsieć, w której arp jest uruchamiany, a następnie skonfigurować wirtualną nici w tej samej podsieci i porozmawiać z nią.
jfalcon alias Don Fanning
50
Cóż, na pewno usunąłeś dostęp przynajmniej nieupoważnionej osobie.
CVn
2
Może następnym razem przyda się zmiana martwego człowieka .
Wayne Conrad,
2
Kto jest twoim gospodarzem Wiele hostów VM oferuje konsolę szeregową, która umożliwia SSH w przypadkach, gdy nie możesz tego zrobić ze zdalnej lokalizacji.
Jon

Odpowiedzi:

60

Istnieje kilka alternatyw:

  • Sprawdź, czy mają dostęp do serwera IPMI / „KVM” / konsoli, co pozwala kontrolować go tak, jakbyś miał podłączoną fizyczną klawiaturę.
  • Jeśli tego nie oferują, sprawdź, czy możesz uruchomić maszynę wirtualną z dysku CD z linuksem odzyskiwania (niektórzy dostawcy to oferują), a następnie popraw w ten sposób reguły zapory, a następnie uruchom ją normalnie.
  • Jeśli nie masz dostępu do konsoli, przed uruchomieniem w celu odzyskania lub podłączeniem woluminu do innej maszyny wirtualnej (jak w przypadku Amazon, odpowiedź user3550767 na kredyt), możesz wypróbować odpowiedź Ankh2054 dotyczącą ponownego uruchomienia, jeśli nie zapisałeś reguł ( prawdopodobnie sprawa, ponieważ wyrzuciłeś się, zanim miałeś szansę uratować). Skorzystaj z panelu sterowania lub poproś kogoś, aby wyłączył i uruchomił go przy użyciu nie wdzięcznego resetu / wyłączenia (aka hard restart lub hard shutdown) na wypadek, gdyby skrypt init zapisał reguły automatycznie po wdzięcznym restarcie (kredyt @ jfalcon, @ joshudson).

    Zważ to na wady (np. Dane zapisywane podczas ponownego uruchamiania mogą zostać utracone, a kontrola systemu plików może być wymagana podczas rozruchu, więc dłuższy czas uruchamiania, choć opóźnienie to może być mniejsze niż uruchomienie odzyskiwania).

g491
źródło
1
w zależności od serwera VPS dostęp do niego może być niemożliwy. systemy takie jak vmware, kvm, xen itp. mają konsole, ale nie są skonfigurowane do publicznego użytku. zamyka, który pozwala tej formie kontroli publicznej jest openstack.
jfalcon alias Don Fanning
4
powiedział, że jeśli jest w przestrzeni amazon / google, może wykonać migawkę dysku i zamontować go z innej maszyny wirtualnej, aby naprawić.
jfalcon alias Don Fanning
47

Jeśli nie zapisałeś jeszcze reguły IPtables, możesz ponownie uruchomić serwer na VPS (jeśli jest dostępny) i reguła powinna zniknąć.

Ankh2054
źródło
chyba że skrypt init zapisze iptables podczas zamykania.
jfalcon alias Don Fanning
3
@jfalcon: Dlatego możesz poprosić ich o wyciągnięcie wirtualnej wtyczki.
joshudson
22
@jfalcon Dlatego też złym pomysłem jest automatyczne zapisywanie przy zamykaniu ... podejmowanie świadomej decyzji przez sysadmin, a nie coś wykonywanego na ślepo przez system.
CVn
@joshudson: Musisz powiedzieć małemu ponownemu uruchomieniu dokładnie, co ma robić, i wyłączyć zasilanie. Nie tylko zainicjuj zamknięcie.
jfalcon alias Don Fanning
@ MichaelKjörling: Ta filozofia jest również błędna. Jest to VPS, więc prawdopodobnie wykonuje piaskownicę w swoich aplikacjach i nie ma kontroli nad tym, kto włączy przełącznik zasilania. I nie masz pojęcia, jak hosting VPS skonfigurował swoje kompilacje. Nie ma nic złego w oszczędzaniu przy wyłączaniu. Jego błąd był jego pomyłką. Sprytne posunięcie polegałoby przede wszystkim na umieszczeniu SSH na niestandardowym porcie lub użyciu fail2ban zamiast reagowania spanikowaną reakcją.
jfalcon alias Don Fanning
30

Po to są linie pomocy obsadzone przez ludzi. Zadzwoń do usługodawcy i poproś jednego z jego operatorów o usunięcie reguły.

RobertG
źródło
3

Ogólnym sposobem naprawy uszkodzonej instancji jest zamknięcie jej i dołączenie woluminu głównego do działającej instancji. Następnie możesz tam zamontować wolumin i przeglądać dzienniki lub edytować pliki konfiguracyjne. Następnie możesz odłączyć wolumin i uruchomić go we własnej instancji.

użytkownik3550767
źródło
2
Prawda dla VPS AWS; ogólnie nie prawda.
MadHatter
@MadHatter Dokładne szczegóły mogą się różnić, ale jeśli dostawca VPS nie oferuje żadnej metody uruchamiania ze znanym działającym obrazem, z którego można zamontować i naprawić główny system plików, to oczekiwałbym, że przestaną działać, gdy klienci dowiedziałem się o tym ograniczeniu.
kasperd
Zazwyczaj robią to, oferując dostęp do konsoli, dzięki czemu można uruchomić system w trybie pojedynczego użytkownika lub z nośnika ratunkowego (zwykle wyodrębnionego jako ISO). Uważam, że w rzeczywistości jest to o wiele bardziej normalne niż dziwny sposób obsługi problemu przez AWS, w którym drugi VPS jest (tymczasowo) wymagany.
MadHatter
@MadHatter Które z dwóch podejść wydaje się dziwne, może bardzo zależeć od tego, co znasz. I każde z tych podejść wykona zadanie. Którego najczęściej nie mogę komentować, ponieważ do tej pory potrzebowałem tylko takiego dostępu na jednym dostawcy VPS.
kasperd
@kasperd: Nie, którego używasz, zależy od tego, który dostawca obsługuje VPS; to nie jest kwestia wyboru. Jeśli używasz AWS, montujesz wolumin na innym VPS; jeśli używasz bardziej normalnego dostawcy VPS, uruchamiasz jednego użytkownika lub z nośnika ratunkowego. Nie uważam tego za kutasa (cóż, nie do końca), ale ponieważ ważne jest, aby zrozumieć, że trzeba dowiedzieć się, jakie są metody obsługiwane przez swojego dostawcę, a następnie ich użyć. Próba użycia metody AWS z, powiedzmy, Hetzner po prostu nie zadziała , ponieważ jeden serwer Hetzner nie może zobaczyć FS (afaik).
MadHatter
3

Formalna odpowiedź: przejdź do panelu zarządzania VPS, uzyskaj dostęp lokalny (wirtualny KVM) lub zadzwoń do nich.

Objaśnienie kroków / zasad, aby ponownie się nie zakochać:

  1. Istnieją zmiany reguł IP, routingu i zapory ogniowej, które mogą się nie powieść i zablokować dostęp.
  2. i dotyczy to również konfiguracji dedykowanych urządzeń sieciowych, a nie tylko VPS

Więc jeśli nie jesteś w 100% pewien, że można odzyskać .. Polecam zawsze sposób, ażeby config sieci do poprzedniego stanu .. jak, otwartą sesję z tła albo screen, nohupalbo tmuxnawet cronmoże pracować na to, i dodać iptables -Flub inne pożądane sposoby przywrócenia czegokolwiek do poprzedniego stanu.

kagali-san
źródło