Praktyczne wskazówki, przykłady i tunele SSH

Praktyczne wskazówki, przykłady i tunele SSH
Praktyczne przykłady SSH, który wyniesie Twoje umiejętności jako zdalnego administratora systemu na nowy poziom. Polecenia i wskazówki pomogą nie tylko w użyciu SSH, ale także sprawniej poruszać się po sieci.

Znajomość kilku trików ssh przydatne dla każdego administratora systemu, inżyniera sieci lub specjalisty ds. bezpieczeństwa.

Praktyczne przykłady SSH

  1. Serwer proxy SSH skarpetki
  2. Tunel SSH (przekierowanie portów)
  3. Tunel SSH do trzeciego hosta
  4. Odwrotny tunel SSH
  5. Odwrotne proxy SSH
  6. Instalacja VPN przez SSH
  7. Kopiowanie klucza SSH (ssh-copy-id)
  8. Zdalne wykonywanie poleceń (nieinteraktywne)
  9. Zdalne przechwytywanie i przeglądanie pakietów w Wireshark
  10. Kopiowanie folderu lokalnego na serwer zdalny przez SSH
  11. Zdalne aplikacje GUI z przekazywaniem SSH X11
  12. Zdalne kopiowanie plików przy użyciu rsync i SSH
  13. SSH przez sieć Tor
  14. SSH do instancji EC2
  15. Edycja plików tekstowych za pomocą VIM poprzez ssh/scp
  16. Zamontuj zdalny SSH jako folder lokalny za pomocą SSHFS
  17. Multipleksowanie SSH z ControlPath
  18. Przesyłaj strumieniowo wideo przez SSH przy użyciu VLC i SFTP
  19. Uwierzytelnianie dwuskładnikowe
  20. Przeskakiwanie hostów za pomocą SSH i -J
  21. Blokuj próby brutalnej siły SSH przy użyciu iptables
  22. SSH Escape, aby zmienić przekierowanie portów

Najpierw podstawy

Analizowanie wiersza poleceń SSH

W poniższym przykładzie wykorzystano typowe parametry często spotykane podczas łączenia się ze zdalnym serwerem SSH.

localhost:~$ ssh -v -p 22 -C neo@remoteserver

  • -v: Dane wyjściowe debugowania są szczególnie przydatne podczas analizowania problemów z uwierzytelnianiem. Można go używać wielokrotnie w celu wyświetlenia dodatkowych informacji.
  • - p 22: port połączenia do zdalnego serwera SSH. 22 nie trzeba podawać, bo to jest wartość domyślna, ale jeśli protokół jest na jakimś innym porcie, to określamy go za pomocą parametru -p. Port nasłuchiwania jest określony w pliku sshd_config w formacie Port 2222.
  • -C: Kompresja dla połączenia. Jeśli masz wolne połączenie lub przeglądasz dużo tekstu, może to przyspieszyć połączenie.
  • neo@: Linia przed symbolem @ wskazuje nazwę użytkownika do uwierzytelnienia na serwerze zdalnym. Jeśli go nie określisz, domyślnie będzie to nazwa użytkownika konta, na którym jesteś aktualnie zalogowany (~$whoami). Użytkownika można również określić za pomocą parametru -l.
  • remoteserver: nazwa hosta, z którym chcesz się połączyć sshmoże to być w pełni kwalifikowana nazwa domeny, adres IP lub dowolny host w pliku hostów lokalnych. Aby połączyć się z hostem obsługującym zarówno IPv4, jak i IPv6, możesz dodać parametr do wiersza poleceń -4 lub -6 dla prawidłowego rozwiązania.

Wszystkie powyższe parametry są opcjonalne, z wyjątkiem remoteserver.

Korzystanie z pliku konfiguracyjnego

Chociaż wielu zna ten plik sshd_config, istnieje również plik konfiguracyjny klienta dla tego polecenia ssh. Domyślna wartość ~/.ssh/config, ale można go zdefiniować jako parametr opcji -F.

Host *
     Port 2222

Host remoteserver
     HostName remoteserver.thematrix.io
     User neo
     Port 2112
     IdentityFile /home/test/.ssh/remoteserver.private_key

W powyższym przykładowym pliku konfiguracyjnym ssh znajdują się dwa wpisy dotyczące hosta. Pierwsza oznacza wszystkie hosty, wszystkie korzystające z parametru konfiguracyjnego Portu 2222. Druga mówi, że dla hosta zdalny serwer należy użyć innej nazwy użytkownika, portu, nazwy FQDN i pliku tożsamości.

Plik konfiguracyjny może zaoszczędzić dużo czasu na pisaniu, umożliwiając automatyczne zastosowanie zaawansowanej konfiguracji podczas łączenia się z określonymi hostami.

Kopiowanie plików przez SSH przy użyciu SCP

Klient SSH zawiera dwa inne bardzo przydatne narzędzia do kopiowania plików szyfrowane połączenie ssh. Poniżej znajdziesz przykład standardowego użycia poleceń scp i sftp. Należy pamiętać, że wiele opcji ssh ma zastosowanie również do tych poleceń.

localhost:~$ scp mypic.png neo@remoteserver:/media/data/mypic_2.png

W tym przykładzie plik mypic.png skopiowane do zdalny serwer do folderu /media/dane i zmieniono nazwę na mypic_2.png.

Nie zapomnij o różnicy w parametrze portu. To tutaj wiele osób zostaje złapanych podczas startu scp z wiersza poleceń. Oto parametr portu -PI nie -p, tak jak w kliencie ssh! Zapomnisz, ale nie martw się, wszyscy zapominają.

Dla tych, którzy znają konsolę ftp, wiele poleceń jest podobnych w sftp. Możesz to zrobić naciskać, położyć и lsjak serce pragnie.

sftp neo@remoteserver

Praktyczne przykłady

W wielu z tych przykładów wyniki można osiągnąć różnymi metodami. Jak we wszystkich naszych podręczniki i przykłady, preferowane są przykłady praktyczne, które po prostu spełniają swoje zadanie.

1. Serwer proxy SSH skarpetki

Funkcja SSH Proxy jest numerem 1 nie bez powodu. Jest potężniejszy, niż wielu zdaje sobie sprawę, i zapewnia dostęp do dowolnego systemu, do którego zdalny serwer może uzyskać dostęp za pomocą praktycznie dowolnej aplikacji. Klient ssh może tunelować ruch przez serwer proxy SOCKS za pomocą jednego prostego polecenia. Ważne jest, aby zrozumieć, że ruch do systemów zdalnych będzie pochodził ze zdalnego serwera, zostanie to wskazane w dziennikach serwera WWW.

localhost:~$ ssh -D 8888 user@remoteserver

localhost:~$ netstat -pan | grep 8888
tcp        0      0 127.0.0.1:8888       0.0.0.0:*               LISTEN      23880/ssh

Tutaj uruchamiamy proxy skarpetek na porcie TCP 8888, drugie polecenie sprawdza, czy port jest aktywny w trybie nasłuchiwania. 127.0.0.1 wskazuje, że usługa działa tylko na hoście lokalnym. Możemy użyć nieco innego polecenia do nasłuchiwania na wszystkich interfejsach, w tym na sieci Ethernet lub Wi-Fi, pozwoli to innym aplikacjom (przeglądarkom itp.) w naszej sieci na łączenie się z usługą proxy za pośrednictwem proxy ssh skarpetki.

localhost:~$ ssh -D 0.0.0.0:8888 user@remoteserver

Teraz możemy skonfigurować przeglądarkę tak, aby łączyła się z proxy skarpetek. W przeglądarce Firefox wybierz Ustawienia | Podstawowy | Ustawienia sieci. Określ adres IP i port, z którym chcesz się połączyć.

Praktyczne wskazówki, przykłady i tunele SSH

Zwróć uwagę na opcję znajdującą się na dole formularza, umożliwiającą przesyłanie żądań DNS przeglądarki również przez serwer proxy SOCKS. Jeśli używasz serwera proxy do szyfrowania ruchu internetowego w sieci lokalnej, prawdopodobnie będziesz chciał wybrać tę opcję, aby żądania DNS były tunelowane przez połączenie SSH.

Aktywacja proxy skarpetek w przeglądarce Chrome

Uruchomienie przeglądarki Chrome z określonymi parametrami wiersza poleceń włączy proxy skarpetki, a także tunelowanie żądań DNS z przeglądarki. Ufaj, ale sprawdzaj. Używać tcpdump aby sprawdzić, czy zapytania DNS nie są już widoczne.

localhost:~$ google-chrome --proxy-server="socks5://192.168.1.10:8888"

Korzystanie z innych aplikacji z serwerem proxy

Należy pamiętać, że wiele innych aplikacji może również korzystać z proxy skarpetek. Przeglądarka internetowa jest po prostu najpopularniejszą ze wszystkich. Niektóre aplikacje mają opcje konfiguracji umożliwiające włączenie serwera proxy. Inni potrzebują niewielkiej pomocy z programem pomocniczym. Na przykład, łańcuchy proxy pozwala na uruchomienie przez skarpetki proxy Microsoft RDP itp.

localhost:~$ proxychains rdesktop $RemoteWindowsServer

Parametry konfiguracyjne proxy Socks są ustawione w pliku konfiguracyjnym proxychains.

Wskazówka: jeśli korzystasz ze zdalnego pulpitu z Linuksa na Windowsie? Wypróbuj klienta BezpłatnyRDP. Jest to bardziej nowoczesna implementacja niż rdesktop, zapewniając znacznie płynniejsze wrażenia.

Możliwość korzystania z SSH poprzez proxy skarpetki

Siedzisz w kawiarni lub hotelu - i jesteś zmuszony korzystać z raczej zawodnego Wi-Fi. Uruchamiamy lokalnie serwer proxy ssh z laptopa i instalujemy tunel ssh do sieci domowej na lokalnym Rasberry Pi. Za pomocą przeglądarki lub innych aplikacji skonfigurowanych dla proxy skarpetek możemy uzyskać dostęp do dowolnych usług sieciowych w naszej sieci domowej lub uzyskać dostęp do Internetu za pośrednictwem naszego łącza domowego. Wszystko pomiędzy Twoim laptopem a serwerem domowym (przez Wi-Fi i Internet do Twojego domu) jest szyfrowane w tunelu SSH.

2. Tunel SSH (przekierowanie portów)

W najprostszej formie tunel SSH po prostu otwiera port w systemie lokalnym, który łączy się z innym portem na drugim końcu tunelu.

localhost:~$ ssh  -L 9999:127.0.0.1:80 user@remoteserver

Spójrzmy na parametr -L. Można to traktować jako lokalną stronę słuchania. Zatem w powyższym przykładzie port 9999 nasłuchuje po stronie hosta lokalnego i jest przekazywany przez port 80 do serwera zdalnego. Pamiętaj, że 127.0.0.1 odnosi się do localhost na zdalnym serwerze!

Wejdźmy po stopniu. Poniższy przykład komunikuje porty nasłuchujące z innymi hostami w sieci lokalnej.

localhost:~$ ssh  -L 0.0.0.0:9999:127.0.0.1:80 user@remoteserver

W tych przykładach łączymy się z portem serwera WWW, ale może to być serwer proxy lub dowolna inna usługa TCP.

3. Tunel SSH do hosta strony trzeciej

Możemy użyć tych samych parametrów, aby połączyć tunel ze zdalnego serwera z inną usługą działającą na trzecim systemie.

localhost:~$ ssh  -L 0.0.0.0:9999:10.10.10.10:80 user@remoteserver

W tym przykładzie przekierowujemy tunel z serwera zdalnego na serwer WWW działający w dniu 10.10.10.10. Ruch ze zdalnego serwera do 10.10.10.10 nie jest już w tunelu SSH. Serwer WWW w dniu 10.10.10.10 będzie uważał serwer zdalny za źródło żądań sieciowych.

4. Odwrotny tunel SSH

Tutaj skonfigurujemy port nasłuchujący na zdalnym serwerze, który będzie łączyć się z portem lokalnym na naszym hoście lokalnym (lub innym systemie).

localhost:~$ ssh -v -R 0.0.0.0:1999:127.0.0.1:902 192.168.1.100 user@remoteserver

Ta sesja SSH ustanawia połączenie z portu 1999 na zdalnym serwerze do portu 902 na naszym lokalnym kliencie.

5. Zwrotne proxy SSH

W tym przypadku konfigurujemy proxy skarpetki na naszym połączeniu ssh, ale serwer proxy nasłuchuje na zdalnym końcu serwera. Połączenia z tym zdalnym serwerem proxy pojawiają się teraz z tunelu jako ruch z naszego hosta lokalnego.

localhost:~$ ssh -v -R 0.0.0.0:1999 192.168.1.100 user@remoteserver

Rozwiązywanie problemów ze zdalnymi tunelami SSH

Jeśli masz problemy z działaniem opcji zdalnego SSH, skontaktuj się z nami netstat, do jakich innych interfejsów podłączony jest port nasłuchujący. Chociaż w przykładach wskazaliśmy 0.0.0.0, ale jeśli wartość Porty bramy в sshd_config Ustawić Nie, wówczas słuchacz będzie powiązany tylko z hostem lokalnym (127.0.0.1).

Ostrzeżenie bezpieczeństwa

Należy pamiętać, że otwierając tunele i proxy, wewnętrzne zasoby sieciowe mogą być dostępne dla niezaufanych sieci (takich jak Internet!). Może to stanowić poważne zagrożenie bezpieczeństwa, dlatego upewnij się, że rozumiesz, kim jest słuchacz i do czego ma dostęp.

6. Instalacja VPN przez SSH

Powszechnym terminem wśród specjalistów od metod ataków (pentestery itp.) jest „punkt podparcia w sieci”. Po nawiązaniu połączenia w jednym systemie, system ten staje się bramą dla dalszego dostępu do sieci. Punkt podparcia, który pozwala poruszać się wszerz.

Do takiego punktu oparcia możemy użyć serwera proxy SSH i łańcuchy proxyjednak istnieją pewne ograniczenia. Przykładowo nie będzie możliwości bezpośredniej pracy z gniazdami, przez co nie będziemy mogli skanować portów w sieci poprzez Nmap SYN.

Korzystając z tej bardziej zaawansowanej opcji VPN, połączenie zostaje zredukowane do poziom 3. Możemy wtedy po prostu skierować ruch przez tunel, korzystając ze standardowego routingu sieciowego.

Metoda wykorzystuje ssh, iptables, tun interfaces i routingu.

Najpierw musisz ustawić te parametry sshd_config. Ponieważ wprowadzamy zmiany w interfejsach zarówno systemów zdalnych, jak i klienckich, my potrzebne są prawa roota po obu stronach.

PermitRootLogin yes
PermitTunnel yes

Następnie nawiążemy połączenie ssh za pomocą parametru żądającego inicjalizacji urządzeń tun.

localhost:~# ssh -v -w any root@remoteserver

Powinniśmy teraz mieć urządzenie tun podczas pokazywania interfejsów (# ip a). Następny krok doda adresy IP do interfejsów tunelu.

Strona klienta SSH:

localhost:~# ip addr add 10.10.10.2/32 peer 10.10.10.10 dev tun0
localhost:~# ip tun0 up

Po stronie serwera SSH:

remoteserver:~# ip addr add 10.10.10.10/32 peer 10.10.10.2 dev tun0
remoteserver:~# ip tun0 up

Teraz mamy bezpośrednią trasę do innego hosta (route -n и ping 10.10.10.10).

Możesz przekierować dowolną podsieć przez hosta po drugiej stronie.

localhost:~# route add -net 10.10.10.0 netmask 255.255.255.0 dev tun0

Po stronie zdalnej musisz włączyć ip_forward и iptables.

remoteserver:~# echo 1 > /proc/sys/net/ipv4/ip_forward
remoteserver:~# iptables -t nat -A POSTROUTING -s 10.10.10.2 -o enp7s0 -j MASQUERADE

Bum! VPN przez tunel SSH w warstwie sieci 3. Teraz to jest zwycięstwo.

Jeśli wystąpią jakiekolwiek problemy, użyj tcpdump и pingaby ustalić przyczynę. Ponieważ gramy w warstwie 3, nasze pakiety icmp będą przechodzić przez ten tunel.

7. Skopiuj klucz SSH (ssh-copy-id)

Można to zrobić na kilka sposobów, ale to polecenie oszczędza czas, ponieważ nie kopiuje plików ręcznie. Po prostu kopiuje ~/.ssh/id_rsa.pub (lub klucz domyślny) z twojego systemu do ~/.ssh/authorized_keys na zdalnym serwerze.

localhost:~$ ssh-copy-id user@remoteserver

8. Zdalne wykonywanie poleceń (nieinteraktywne)

zespół ssh Można go połączyć z innymi poleceniami w celu uzyskania wspólnego, przyjaznego dla użytkownika interfejsu. Po prostu dodaj polecenie, które chcesz uruchomić na zdalnym hoście, jako ostatni parametr w cudzysłowie.

localhost:~$ ssh remoteserver "cat /var/log/nginx/access.log" | grep badstuff.php

W tym przykładzie grep wykonywane w systemie lokalnym po pobraniu logu poprzez kanał ssh. Jeśli plik jest duży, wygodniej jest go uruchomić grep po stronie zdalnej, po prostu umieszczając oba polecenia w cudzysłowie.

Inny przykład spełnia tę samą funkcję co ssh-copy-id z przykładu 7.

localhost:~$ cat ~/.ssh/id_rsa.pub | ssh remoteserver 'cat >> .ssh/authorized_keys'

9. Zdalne przechwytywanie i przeglądanie pakietów w Wireshark

Wziąłem jednego z naszych przykłady tcpdump. Użyj go do zdalnego przechwytywania pakietów i wyświetlania wyników bezpośrednio w lokalnym interfejsie GUI Wireshark.

:~$ ssh root@remoteserver 'tcpdump -c 1000 -nn -w - not port 22' | wireshark -k -i -

10. Kopiowanie folderu lokalnego na zdalny serwer przez SSH

Niezła sztuczka, która kompresuje folder za pomocą bzip2 (jest to opcja -j w poleceniu tar), a następnie pobiera strumień bzip2 z drugiej strony, tworząc zduplikowany folder na serwerze zdalnym.

localhost:~$ tar -cvj /datafolder | ssh remoteserver "tar -xj -C /datafolder"

11. Zdalne aplikacje GUI z przesyłaniem SSH X11

Jeśli X jest zainstalowany na kliencie i zdalnym serwerze, możesz zdalnie wykonać polecenie GUI z oknem na lokalnym pulpicie. Ta funkcja jest dostępna od dawna, ale nadal jest bardzo przydatna. Uruchom zdalną przeglądarkę internetową lub nawet konsolę VMWawre Workstation, tak jak w tym przykładzie.

localhost:~$ ssh -X remoteserver vmware

Wymagany ciąg X11Forwarding yes w pliku sshd_config.

12. Zdalne kopiowanie plików przy użyciu rsync i SSH

rsync o wiele wygodniejsze scp, jeśli potrzebujesz okresowych kopii zapasowych katalogu, dużej liczby plików lub bardzo dużych plików. Dostępna jest funkcja odzyskiwania po niepowodzeniu transferu i kopiowania tylko zmienionych plików, co oszczędza ruch i czas.

W tym przykładzie zastosowano kompresję gzip (-z) i tryb archiwizacji (-a), który umożliwia kopiowanie rekurencyjne.

:~$ rsync -az /home/testuser/data remoteserver:backup/

13. SSH przez sieć Tor

Anonimowa sieć Tor może tunelować ruch SSH za pomocą polecenia torsocks. Następujące polecenie przekaże proxy ssh przez Tora.

localhost:~$ torsocks ssh myuntracableuser@remoteserver

Torsy użyje portu 9050 na serwerze lokalnym dla serwera proxy. Jak zawsze, używając Tora, musisz poważnie sprawdzić, jaki ruch jest tunelowany i inne problemy związane z bezpieczeństwem operacyjnym (opsec). Gdzie idą Twoje zapytania DNS?

14. SSH do instancji EC2

Aby połączyć się z instancją EC2, potrzebujesz klucza prywatnego. Pobierz go (rozszerzenie .pem) z panelu sterowania Amazon EC2 i zmień uprawnienia (chmod 400 my-ec2-ssh-key.pem). Trzymaj klucz w bezpiecznym miejscu lub umieść go we własnym folderze ~/.ssh/.

localhost:~$ ssh -i ~/.ssh/my-ec2-key.pem ubuntu@my-ec2-public

Parametr -i po prostu mówi klientowi ssh, aby użył tego klucza. Plik ~/.ssh/config Idealny do automatycznego konfigurowania użycia kluczy podczas łączenia się z hostem ec2.

Host my-ec2-public
   Hostname ec2???.compute-1.amazonaws.com
   User ubuntu
   IdentityFile ~/.ssh/my-ec2-key.pem

15. Edycja plików tekstowych za pomocą VIM-a poprzez ssh/scp

Dla wszystkich miłośników vim Ta wskazówka pozwoli zaoszczędzić trochę czasu. Używając vim pliki są edytowane za pomocą scp za pomocą jednego polecenia. Ta metoda po prostu tworzy plik lokalnie w /tmpa następnie kopiuje go z powrotem po zapisaniu vim.

localhost:~$ vim scp://user@remoteserver//etc/hosts

Uwaga: format różni się nieco od zwykłego scp. Po gospodarzu mamy dublet //. Jest to bezwzględne odniesienie do ścieżki. Jeden ukośnik będzie wskazywał ścieżkę względem folderu domowego users.

**warning** (netrw) cannot determine method (format: protocol://[user@]hostname[:port]/[path])

Jeśli widzisz ten błąd, sprawdź dokładnie format polecenia. Zwykle oznacza to błąd składniowy.

16. Montowanie zdalnego SSH jako folderu lokalnego za pomocą SSHFS

Za pomocą sshfs - klient systemu plików ssh - możemy połączyć katalog lokalny ze zdalną lokalizacją ze wszystkimi interakcjami z plikami w szyfrowanej sesji ssh.

localhost:~$ apt install sshfs

Zainstaluj pakiet na Ubuntu i Debianie sshfs, a następnie po prostu zamontuj zdalną lokalizację w naszym systemie.

localhost:~$ sshfs user@remoteserver:/media/data ~/data/

17. Multipleksowanie SSH z ControlPath

Domyślnie, jeśli istnieje połączenie ze zdalnym serwerem za pomocą ssh drugie połączenie za pomocą ssh lub scp ustanawia nową sesję z dodatkowym uwierzytelnieniem. Opcja ControlPath umożliwia wykorzystanie istniejącej sesji do wszystkich kolejnych połączeń. To znacznie przyspieszy proces: efekt jest zauważalny nawet w sieci lokalnej, a tym bardziej przy łączeniu się z zasobami zdalnymi.

Host remoteserver
        HostName remoteserver.example.org
        ControlMaster auto
        ControlPath ~/.ssh/control/%r@%h:%p
        ControlPersist 10m

ControlPath określa gniazdo do sprawdzania nowych połączeń i sprawdzania, czy istnieje aktywna sesja ssh. Ostatnia opcja powoduje, że nawet po wyjściu z konsoli dotychczasowa sesja pozostanie otwarta przez 10 minut, więc w tym czasie będzie można ponownie połączyć się na istniejącym gnieździe. Więcej informacji znajdziesz w pomocy. ssh_config man.

18. Przesyłaj strumieniowo wideo przez SSH przy użyciu VLC i SFTP

Nawet długoletni użytkownicy ssh и vlc (Video Lan Client) nie zawsze są świadomi tej wygodnej opcji, gdy naprawdę potrzebujesz oglądać wideo przez sieć. W ustawieniach Plik | Otwórz strumień sieciowy программы vlc możesz wprowadzić lokalizację jako sftp://. Jeśli wymagane jest hasło, pojawi się monit.

sftp://remoteserver//media/uploads/myvideo.mkv

19. Uwierzytelnianie dwuskładnikowe

W przypadku usługi SSH obowiązuje to samo uwierzytelnianie dwuskładnikowe, co Twoje konto bankowe lub konto Google.

Oczywiście ssh początkowo posiada funkcję uwierzytelniania dwuskładnikowego, co oznacza hasło i klucz SSH. Zaletą tokena sprzętowego lub aplikacji Google Authenticator jest to, że zwykle jest to inne urządzenie fizyczne.

Zobacz nasz 8-minutowy przewodnik za pomocą Google Authenticator i SSH.

20. Przeskakiwanie hostów za pomocą ssh i -J

Jeśli segmentacja sieci oznacza, że ​​musisz przeskakiwać przez wiele hostów ssh, aby dostać się do docelowej sieci docelowej, skrót -J pozwoli Ci zaoszczędzić czas.

localhost:~$ ssh -J host1,host2,host3 [email protected]

Najważniejszą rzeczą do zrozumienia jest to, że nie jest to to samo, co polecenie ssh host1, a następnie user@host1:~$ ssh host2 itd. Opcja -J sprytnie wykorzystuje przekazywanie, aby zmusić hosta lokalnego do ustanowienia sesji z następnym hostem w łańcuchu. Zatem w powyższym przykładzie nasz host lokalny jest uwierzytelniany na serwerze Host4. Oznacza to, że używane są nasze klucze localhost, a sesja od localhost do host4 jest całkowicie szyfrowana.

Za taką możliwość w ssh_config określ opcję konfiguracji Skok proxy. Jeśli regularnie musisz przeglądać kilka hostów, automatyzacja konfiguracji pozwoli zaoszczędzić dużo czasu.

21. Blokuj próby brutalnej siły SSH przy użyciu iptables

Każdy, kto zarządzał usługą SSH i przeglądał logi, wie, ile prób użycia siły ma miejsce w każdej godzinie każdego dnia. Szybkim sposobem na zmniejszenie szumu w logach jest przeniesienie SSH na niestandardowy port. Wprowadź zmiany w pliku sshd_config poprzez parametr konfiguracyjny Port##.

Z iptables Możesz także łatwo zablokować próby połączenia się z portem po osiągnięciu określonego progu. Łatwym sposobem na to jest użycie OSSEC, ponieważ nie tylko blokuje SSH, ale wykonuje szereg innych działań związanych z wykrywaniem włamań na podstawie nazwy hosta (HIDS).

22. SSH Escape, aby zmienić przekierowanie portów

I nasz ostatni przykład ssh zaprojektowany do zmiany przekierowania portów w locie w ramach istniejącej sesji ssh. Wyobraź sobie taki scenariusz. Jesteś głęboko w sieci; może przeskoczyłem ponad pół tuzina hostów i potrzebowałem lokalnego portu na stacji roboczej, który byłby przekazywany do Microsoft SMB starego systemu Windows 2003 (ktoś pamięta ms08-67?).

Kliknięcie enter, spróbuj wpisać w konsoli ~C. Jest to sekwencja kontroli sesji, która umożliwia wprowadzanie zmian w istniejącym połączeniu.

localhost:~$ ~C
ssh> -h
Commands:
      -L[bind_address:]port:host:hostport    Request local forward
      -R[bind_address:]port:host:hostport    Request remote forward
      -D[bind_address:]port                  Request dynamic forward
      -KL[bind_address:]port                 Cancel local forward
      -KR[bind_address:]port                 Cancel remote forward
      -KD[bind_address:]port                 Cancel dynamic forward
ssh> -L 1445:remote-win2k3:445
Forwarding port.

Tutaj możesz zobaczyć, że przekierowaliśmy nasz lokalny port 1445 do hosta Windows 2003, który znaleźliśmy w sieci wewnętrznej. Teraz po prostu biegnij msfconsolei możesz przejść dalej (zakładając, że planujesz używać tego hosta).

Ukończenie

Te przykłady, wskazówki i polecenia ssh powinien dać punkt wyjścia; Więcej informacji na temat każdego polecenia i możliwości można znaleźć na stronach podręcznika (man ssh, man ssh_config, man sshd_config).

Zawsze fascynowała mnie możliwość dostępu do systemów i wykonywania poleceń w dowolnym miejscu na świecie. Rozwijając swoje umiejętności za pomocą narzędzi takich jak ssh staniesz się bardziej skuteczny w każdej grze, w którą grasz.

Źródło: www.habr.com

Dodaj komentarz