Praktické príklady SSH, ktorý posunie vaše schopnosti vzdialeného správcu systému na novú úroveň. Príkazy a tipy pomôžu nielen pri používaní SSH, ale aj kompetentnejšie navigovať v sieti.
Poznať pár trikov ssh užitočné pre každého správcu systému, sieťového inžiniera alebo bezpečnostného špecialistu.
Nasledujúci príklad používa bežné parametre, s ktorými sa často stretávate pri pripájaní na vzdialený server SSH.
localhost:~$ ssh -v -p 22 -C neo@remoteserver
-v: Výstup ladenia je užitočný najmä pri analýze problémov s autentifikáciou. Dá sa použiť viackrát na zobrazenie ďalších informácií.
- p 22: pripojovací port na vzdialený server SSH. 22 nemusí byť špecifikované, pretože toto je predvolená hodnota, ale ak je protokol na inom porte, potom ho špecifikujeme pomocou parametra -p. Port počúvania je špecifikovaný v súbore sshd_config vo formáte Port 2222.
-C: Kompresia pre pripojenie. Ak máte pomalé pripojenie alebo zobrazujete veľa textu, môže to urýchliť pripojenie.
neo@: Riadok pred symbolom @ označuje meno používateľa pre autentifikáciu na vzdialenom serveri. Ak ho nešpecifikujete, predvolene sa použije používateľské meno účtu, do ktorého ste práve prihlásení (~$whoami). Používateľa je možné špecifikovať aj pomocou parametra -l.
remoteserver: názov hostiteľa, ku ktorému sa chcete pripojiť ssh, môže to byť plne kvalifikovaný názov domény, IP adresa alebo akýkoľvek hostiteľ v lokálnom súbore hosts. Ak sa chcete pripojiť k hostiteľovi, ktorý podporuje IPv4 aj IPv6, môžete pridať parameter do príkazového riadka -4 alebo -6 pre správne rozlíšenie.
Všetky vyššie uvedené parametre sú voliteľné okrem remoteserver.
Pomocou konfiguračného súboru
Hoci mnohí poznajú spis sshd_config, existuje aj konfiguračný súbor klienta pre príkaz ssh. Predvolená hodnota ~/.ssh/config, ale môže byť definovaný ako parameter pre možnosť -F.
Host *
Port 2222
Host remoteserver
HostName remoteserver.thematrix.io
User neo
Port 2112
IdentityFile /home/test/.ssh/remoteserver.private_key
Vo vyššie uvedenom príklade konfiguračného súboru ssh sú dve položky hostiteľa. Prvý znamená všetkých hostiteľov, všetci používajúci konfiguračný parameter Port 2222. Druhý hovorí, že pre hostiteľa vzdialený server malo by sa použiť iné používateľské meno, port, FQDN a IdentityFile.
Konfiguračný súbor môže ušetriť veľa času pri písaní, pretože umožňuje automatické použitie pokročilej konfigurácie pri pripájaní ku konkrétnym hostiteľom.
Kopírovanie súborov cez SSH pomocou SCP
Klient SSH prichádza s ďalšími dvoma veľmi praktickými nástrojmi na kopírovanie súborov šifrované ssh pripojenie. Nižšie nájdete príklad štandardného použitia príkazov scp a sftp. Všimnite si, že veľa možností ssh sa vzťahuje aj na tieto príkazy.
V tomto príklade súbor mypic.png skopírované do vzdialený server do priečinka /media/data a premenovaný na mypic_2.png.
Nezabudnite na rozdiel v parametri portu. To je miesto, kde sa veľa ľudí chytí pri spustení scp z príkazového riadku. Tu je parameter portu -PA nie -p, rovnako ako v klientovi ssh! Zabudnete, ale nebojte sa, každý zabúda.
Pre tých, ktorí poznajú konzolu ftp, mnohé z príkazov sú podobné v sftp... Môžete robiť tlačiť, dať и lsako srdce túži.
sftp neo@remoteserver
Praktické príklady
V mnohých z týchto príkladov možno výsledky dosiahnuť použitím rôznych metód. Ako vo všetkých našich učebnice a príklady sa uprednostňujú praktické príklady, ktoré jednoducho robia svoju prácu.
1. SSH socks proxy
Funkcia SSH Proxy je číslo 1 z dobrého dôvodu. Je výkonnejší, než si mnohí uvedomujú, a poskytuje vám prístup k akémukoľvek systému, ku ktorému môže vzdialený server pristupovať pomocou prakticky akejkoľvek aplikácie. Ssh klient môže tunelovať prevádzku cez SOCKS proxy jedným jednoduchým príkazom. Je dôležité pochopiť, že prevádzka do vzdialených systémov bude pochádzať zo vzdialeného servera, čo bude uvedené v protokoloch webového servera.
Tu spustíme socks proxy na TCP porte 8888, druhý príkaz skontroluje, či je port aktívny v režime počúvania. 127.0.0.1 označuje, že služba beží iba na localhost. Môžeme použiť trochu iný príkaz na počúvanie na všetkých rozhraniach vrátane ethernetu alebo wifi, čo umožní iným aplikáciám (prehliadačom atď.) v našej sieti pripojiť sa k službe proxy cez proxy ssh socks.
Teraz môžeme nakonfigurovať prehliadač na pripojenie k proxy socks. Vo Firefoxe vyberte Nastavenia | Základné | Nastavenia siete. Zadajte IP adresu a port na pripojenie.
Všimnite si prosím možnosť v spodnej časti formulára, aby aj požiadavky vášho prehliadača DNS prechádzali cez SOCKS proxy. Ak používate proxy server na šifrovanie webovej prevádzky vo vašej lokálnej sieti, pravdepodobne budete chcieť vybrať túto možnosť, aby sa požiadavky DNS tunelovali cez pripojenie SSH.
Aktivácia proxy socks v prehliadači Chrome
Spustenie prehliadača Chrome s určitými parametrami príkazového riadku povolí server proxy socks, ako aj tunelovanie požiadaviek DNS z prehliadača. Dôveruj, ale preveruj. Použite tcpdump aby ste skontrolovali, či DNS dotazy už nie sú viditeľné.
Majte na pamäti, že mnoho ďalších aplikácií môže tiež používať proxy ponožiek. Webový prehliadač je jednoducho najobľúbenejší zo všetkých. Niektoré aplikácie majú možnosti konfigurácie na povolenie servera proxy. Iní potrebujú trochu pomôcť s pomocným programom. Napríklad, proxy reťazce umožňuje spustiť cez socks proxy Microsoft RDP atď.
Konfiguračné parametre proxy servera Socks sa nastavujú v konfiguračnom súbore proxychains.
Tip: ak používate vzdialenú plochu z Linuxu na Windows? Vyskúšajte klienta FreeRDP. Ide o modernejšiu implementáciu ako rdesktop, s oveľa hladším zážitkom.
Možnosť použitia SSH cez Socks proxy
Sedíte v kaviarni alebo hoteli - a ste nútení používať dosť nespoľahlivé WiFi. Spustíme ssh proxy lokálne z notebooku a nainštalujeme ssh tunel do domácej siete na lokálnom Rasberry Pi. Pomocou prehliadača alebo iných aplikácií nakonfigurovaných pre Socks proxy môžeme pristupovať k akýmkoľvek sieťovým službám v našej domácej sieti alebo pristupovať na internet cez naše domáce pripojenie. Všetko medzi vaším notebookom a vašim domácim serverom (cez Wi-Fi a internet do vášho domova) je šifrované v tuneli SSH.
2. Tunel SSH (presmerovanie portov)
Vo svojej najjednoduchšej forme tunel SSH jednoducho otvorí port na vašom lokálnom systéme, ktorý sa pripája k inému portu na druhom konci tunela.
Pozrime sa na parameter -L. Možno si to predstaviť ako lokálnu stránku počúvania. Takže vo vyššie uvedenom príklade port 9999 počúva na strane localhost a posiela sa cez port 80 na vzdialený server. Upozorňujeme, že 127.0.0.1 odkazuje na localhost na vzdialenom serveri!
Poďme na schodík. Nasledujúci príklad komunikuje načúvacie porty s inými hostiteľmi v lokálnej sieti.
V tomto príklade presmerujeme tunel zo vzdialeného servera na webový server spustený 10.10.10.10. Prevádzka zo vzdialeného servera do 10.10.10.10 už nie v tuneli SSH. Webový server dňa 10.10.10.10 bude považovať vzdialený server za zdroj webových požiadaviek.
4. Reverzný tunel SSH
Tu nakonfigurujeme načúvací port na vzdialenom serveri, ktorý sa pripojí späť k lokálnemu portu na našom localhoste (alebo inom systéme).
Táto relácia SSH vytvára spojenie z portu 1999 na vzdialenom serveri do portu 902 na našom lokálnom klientovi.
5. SSH Reverse Proxy
V tomto prípade nastavujeme socks proxy na našom ssh pripojení, ale proxy počúva na vzdialenom konci servera. Pripojenia k tomuto vzdialenému proxy sa teraz zobrazujú z tunela ako prevádzka z nášho localhost.
Ak máte problémy s fungovaním vzdialených možností SSH, skontrolujte ich netstat, na aké ďalšie rozhrania je pripojený port počúvania. V príkladoch sme síce uviedli 0.0.0.0, ale ak je hodnota GatewayPorts в SSHD_config nastavený na žiadny, potom bude poslucháč viazaný iba na localhost (127.0.0.1).
Bezpečnostné varovanie
Upozorňujeme, že otvorením tunelov a serverov proxy môžu byť interné sieťové zdroje prístupné nedôveryhodným sieťam (ako je internet!). Môže to predstavovať vážne bezpečnostné riziko, preto sa uistite, že rozumiete tomu, čo je poslucháč a k čomu má prístup.
6. Inštalácia VPN cez SSH
Bežný termín medzi odborníkmi na metódy útoku (pentestery atď.) je „oporný bod v sieti“. Po vytvorení spojenia na jednom systéme sa tento systém stane bránou pre ďalší prístup do siete. Oporný bod, ktorý vám umožní pohybovať sa v šírke.
Pre takúto oporu môžeme použiť SSH proxy a proxy reťazceexistujú však určité obmedzenia. Napríklad nebude možné pracovať priamo so zásuvkami, takže nebudeme môcť skenovať porty v rámci siete cez NmapSYN.
Pomocou tejto pokročilejšej možnosti VPN sa pripojenie zredukuje na úroveň 3. Potom môžeme jednoducho smerovať prevádzku cez tunel pomocou štandardného sieťového smerovania.
Metóda používa ssh, iptables, tun interfaces a smerovanie.
Najprv musíte nastaviť tieto parametre sshd_config. Keďže robíme zmeny v rozhraniach vzdialených aj klientskych systémov, my potrebujú práva root na oboch stranách.
PermitRootLogin yes
PermitTunnel yes
Potom vytvoríme ssh pripojenie pomocou parametra, ktorý požaduje inicializáciu zariadení tun.
localhost:~# ssh -v -w any root@remoteserver
Teraz by sme mali mať zariadenie tun pri zobrazovaní rozhraní (# ip a). Ďalší krok pridá IP adresy do tunelových rozhraní.
Strana klienta SSH:
localhost:~# ip addr add 10.10.10.2/32 peer 10.10.10.10 dev tun0
localhost:~# ip tun0 up
Strana servera SSH:
remoteserver:~# ip addr add 10.10.10.10/32 peer 10.10.10.2 dev tun0
remoteserver:~# ip tun0 up
Teraz máme priamu cestu k inému hostiteľovi (route -n и ping 10.10.10.10).
Môžete smerovať akúkoľvek podsieť cez hostiteľa na druhej strane.
localhost:~# route add -net 10.10.10.0 netmask 255.255.255.0 dev tun0
Na vzdialenej strane musíte povoliť ip_forward и iptables.
Bum! VPN cez tunel SSH na sieťovej vrstve 3. Teraz je to víťazstvo.
Ak sa vyskytnú nejaké problémy, použite tcpdump и pingurčiť príčinu. Keďže hráme na vrstve 3, naše icmp pakety prejdú týmto tunelom.
7. Skopírujte kľúč SSH (ssh-copy-id)
Existuje niekoľko spôsobov, ako to urobiť, ale tento príkaz šetrí čas tým, že nekopíruje súbory manuálne. Jednoducho skopíruje ~/.ssh/id_rsa.pub (alebo predvolený kľúč) z vášho systému do ~/.ssh/authorized_keys na vzdialenom serveri.
tím ssh Môže byť prepojený s inými príkazmi pre spoločné, užívateľsky prívetivé rozhranie. Stačí pridať príkaz, ktorý chcete spustiť na vzdialenom hostiteľovi, ako posledný parameter v úvodzovkách.
V tomto príklade grep spustí sa na lokálnom systéme po stiahnutí protokolu cez ssh kanál. Ak je súbor veľký, je pohodlnejšie ho spustiť grep na vzdialenej strane jednoduchým uzavretím oboch príkazov do dvojitých úvodzoviek.
Ďalší príklad vykonáva rovnakú funkciu ako ssh-copy-id z príkladu 7.
9. Vzdialené zachytávanie a prezeranie paketov v programe Wireshark
Vzal som jeden z našich príklady tcpdump. Použite ho na vzdialené zachytávanie paketov a zobrazenie výsledkov priamo v lokálnom rozhraní Wireshark GUI.
:~$ ssh root@remoteserver 'tcpdump -c 1000 -nn -w - not port 22' | wireshark -k -i -
10. Kopírovanie lokálneho priečinka na vzdialený server cez SSH
Pekný trik, ktorý komprimuje priečinok pomocou bzip2 (toto je voľba -j v príkaze tar) a potom načíta stream bzip2 na druhej strane vytvorenie duplicitného priečinka na vzdialenom serveri.
Ak je X nainštalovaný na klientovi a vzdialenom serveri, potom môžete vzdialene spustiť príkaz GUI s oknom na vašej lokálnej ploche. Táto funkcia je tu už dlho, ale stále je veľmi užitočná. Spustite vzdialený webový prehliadač alebo dokonca konzolu VMWawre Workstation, ako to robím v tomto príklade.
localhost:~$ ssh -X remoteserver vmware
Požadovaný reťazec X11Forwarding yes v súbore sshd_config.
12. Vzdialené kopírovanie súborov pomocou rsync a SSH
rsync oveľa pohodlnejšie scp, ak potrebujete pravidelné zálohy adresára, veľkého počtu súborov alebo veľmi veľkých súborov. Nechýba funkcia pre obnovu po zlyhaní prenosu a kopírovanie iba zmenených súborov, čo šetrí prevádzku a čas.
Tento príklad používa kompresiu gzip (-z) a režim archivácie (-a), ktorý umožňuje rekurzívne kopírovanie.
Torsocks bude používať port 9050 na localhost pre proxy. Ako vždy, pri používaní Tor musíte vážne skontrolovať, aká prevádzka je tunelovaná a ďalšie problémy s prevádzkovou bezpečnosťou (opsec). Kam smerujú vaše DNS dotazy?
14. Inštancia SSH na EC2
Na pripojenie k inštancii EC2 potrebujete súkromný kľúč. Stiahnite si ho (rozšírenie .pem) z ovládacieho panela Amazon EC2 a zmeňte povolenia (chmod 400 my-ec2-ssh-key.pem). Uchovajte kľúč na bezpečnom mieste alebo ho umiestnite do vlastného priečinka ~/.ssh/.
Parameter -i jednoducho povie klientovi ssh, aby použil tento kľúč. Súbor ~/.ssh/config Ideálne na automatickú konfiguráciu použitia kľúča pri pripojení k hostiteľovi ec2.
Host my-ec2-public
Hostname ec2???.compute-1.amazonaws.com
User ubuntu
IdentityFile ~/.ssh/my-ec2-key.pem
15. Úprava textových súborov pomocou VIM cez ssh/scp
Pre všetkých milovníkov vim Tento tip vám ušetrí čas. Používaním vim súbory sa upravujú cez scp jedným príkazom. Táto metóda jednoducho vytvorí súbor lokálne v /tmpa potom ho skopírujeme späť, keď ho uložíme z vim.
localhost:~$ vim scp://user@remoteserver//etc/hosts
Poznámka: formát sa mierne líši od bežného scp. Po hostiteľovi máme dvojku //. Toto je absolútna referencia cesty. Jedna lomka označuje cestu k vášmu domovskému priečinku users.
Ak sa zobrazí táto chyba, skontrolujte formát príkazu. Zvyčajne to znamená chybu syntaxe.
16. Pripojenie vzdialeného SSH ako lokálneho priečinka s SSHFS
Prostredníctvom sshfs - klient súborového systému ssh - môžeme pripojiť lokálny adresár na vzdialené miesto so všetkými interakciami so súbormi v šifrovanej relácii ssh.
localhost:~$ apt install sshfs
Nainštalujte balík na Ubuntu a Debian sshfsa potom jednoducho pripojte vzdialené umiestnenie do nášho systému.
V predvolenom nastavení, ak existuje existujúce pripojenie k vzdialenému serveru pomocou ssh pomocou druhého pripojenia ssh alebo scp vytvorí novú reláciu s dodatočnou autentifikáciou. Možnosť ControlPath umožňuje použiť existujúcu reláciu pre všetky nasledujúce pripojenia. To výrazne urýchli proces: efekt je viditeľný aj v lokálnej sieti a ešte viac pri pripojení k vzdialeným zdrojom.
Host remoteserver
HostName remoteserver.example.org
ControlMaster auto
ControlPath ~/.ssh/control/%r@%h:%p
ControlPersist 10m
ControlPath určuje soket na kontrolu nových pripojení, aby sa zistilo, či existuje aktívna relácia ssh. Posledná možnosť znamená, že aj keď opustíte konzolu, existujúca relácia zostane otvorená 10 minút, takže počas tejto doby sa môžete znova pripojiť k existujúcemu soketu. Ďalšie informácie nájdete v pomocníkovi. ssh_config man.
18. Streamujte video cez SSH pomocou VLC a SFTP
Dokonca aj dlhoroční používatelia ssh и vlc (Video Lan Client) si nie vždy uvedomujú túto pohodlnú možnosť, keď skutočne potrebujete sledovať video cez sieť. V nastaveniach Súbor | Otvorte Network Stream relácie vlc môžete zadať polohu ako sftp://. Ak sa vyžaduje heslo, zobrazí sa výzva.
sftp://remoteserver//media/uploads/myvideo.mkv
19. Dvojfaktorová autentifikácia
Pre službu SSH platí rovnaké dvojfaktorové overenie ako pre váš bankový účet alebo účet Google.
Samozrejme, ssh spočiatku má funkciu dvojfaktorovej autentifikácie, čo znamená heslo a kľúč SSH. Výhodou hardvérového tokenu alebo aplikácie Google Authenticator je, že zvyčajne ide o iné fyzické zariadenie.
Hlavná vec, ktorú tu treba pochopiť, je, že to nie je to isté ako príkaz ssh host1, potom user@host1:~$ ssh host2 atď. Voľba -J šikovne využíva presmerovanie, aby prinútila localhost nadviazať reláciu s ďalším hostiteľom v reťazci. Takže vo vyššie uvedenom príklade je náš localhost autentifikovaný na host4. To znamená, že sa používajú naše kľúče localhost a relácia z localhost na host4 je úplne šifrovaná.
Pre takúto možnosť v ssh_config špecifikovať možnosť konfigurácie ProxyJump. Ak musíte pravidelne prechádzať niekoľkými hostiteľmi, automatizácia prostredníctvom konfigurácie ušetrí veľa času.
21. Blokujte pokusy o hrubú silu SSH pomocou iptables
Každý, kto spravoval službu SSH a pozrel si protokoly, vie o počte pokusov hrubou silou, ktoré sa vyskytujú každú hodinu každého dňa. Rýchly spôsob, ako znížiť šum v protokoloch, je presunúť SSH na neštandardný port. Vykonajte zmeny v súbore sshd_config cez konfiguračný parameter Port##.
S iptables Môžete tiež jednoducho zablokovať pokusy o pripojenie k portu po dosiahnutí určitého prahu. Jednoduchý spôsob, ako to urobiť, je použiť OSSEC, pretože nielen blokuje SSH, ale vykonáva množstvo ďalších opatrení na detekciu narušenia bezpečnosti na základe názvu hostiteľa (HIDS).
22. SSH Escape na zmenu presmerovania portov
A náš posledný príklad ssh navrhnutý na zmenu presmerovania portov za behu v rámci existujúcej relácie ssh. Predstavte si tento scenár. Ste hlboko v sieti; možno preskočili pol tucta hostiteľov a potrebovali lokálny port na pracovnej stanici, ktorý je presmerovaný do Microsoft SMB starého systému Windows 2003 (pamätáte si niekto ms08-67?).
Kliknutie enter, skúste zadať do konzoly ~C. Toto je sekvencia riadenia relácie, ktorá umožňuje vykonať zmeny v existujúcom pripojení.
Tu môžete vidieť, že sme preposlali náš lokálny port 1445 hostiteľovi Windows 2003, ktorý sme našli vo vnútornej sieti. Teraz už len utekať msfconsolea môžete pokračovať (za predpokladu, že plánujete používať tohto hostiteľa).
Завершение
Tieto príklady, tipy a príkazy ssh by mal poskytnúť východiskový bod; Viac informácií o každom z príkazov a schopností je dostupných na manuálových stránkach (man ssh, man ssh_config, man sshd_config).
Vždy ma fascinovala možnosť pristupovať k systémom a vykonávať príkazy kdekoľvek na svete. Rozvíjaním svojich zručností pomocou nástrojov ako ssh budete efektívnejší v akejkoľvek hre, ktorú hráte.