Praktilised näited SSH, mis viib teie oskused kaughaldurina uuele tasemele. Käsud ja näpunäited aitavad mitte ainult kasutada SSH, vaid ka navigeerida võrgus asjatundlikumalt.
Teades mõnda nippi ssh kasulik kõigile süsteemiadministraatoritele, võrguinseneridele või turbespetsialistidele.
Järgmine näide kasutab tavalisi parameetreid, mida kaugserveriga ühenduse loomisel sageli kohtab SSH.
localhost:~$ ssh -v -p 22 -C neo@remoteserver
-v: Silumisväljund on eriti kasulik autentimisprobleemide analüüsimisel. Täiendava teabe kuvamiseks saab kasutada mitu korda.
- p 22: ühendusport kaug-SSH-serverisse. 22 ei pea määrama, kuna see on vaikeväärtus, aga kui protokoll on mõnes teises pordis, siis määrame selle parameetri abil -p. Kuulamisport on failis määratud sshd_config vormingus Port 2222.
-C: Ühenduse tihendamine. Kui ühendus on aeglane või vaatate palju teksti, võib see ühendust kiirendada.
neo@: rida enne sümbolit @ näitab kasutajanime kaugserveris autentimiseks. Kui te seda ei määra, kasutatakse vaikimisi selle konto kasutajanime, kuhu olete praegu sisse logitud (~$whoami). Kasutaja saab määrata ka parameetri abil -l.
remoteserver: hosti nimi, millega ühenduse luua ssh, võib see olla täielikult kvalifitseeritud domeeninimi, IP-aadress või mis tahes host kohalikus hostifailis. Nii IPv4 kui ka IPv6 toetava hostiga ühenduse loomiseks saate parameetri käsureale lisada -4 või -6 õigeks lahendamiseks.
Kõik ülaltoodud parameetrid on valikulised, välja arvatud remoteserver.
Konfiguratsioonifaili kasutamine
Kuigi paljud on failiga tuttavad sshd_config, käsu jaoks on olemas ka kliendi konfiguratsioonifail ssh. Vaikeväärtus ~/.ssh/config, kuid seda saab määratleda valiku parameetrina -F.
Host *
Port 2222
Host remoteserver
HostName remoteserver.thematrix.io
User neo
Port 2112
IdentityFile /home/test/.ssh/remoteserver.private_key
Ülaltoodud näites ssh-konfiguratsioonifailis on kaks hostikirjet. Esimene tähendab kõiki hoste, mis kõik kasutavad konfiguratsiooniparameetrit Port 2222. Teine tähendab, et hosti jaoks kaugserver tuleks kasutada teist kasutajanime, porti, FQDN-i ja IdentityFile'i.
Konfiguratsioonifail võib säästa palju tippimisaega, võimaldades konkreetsete hostidega ühenduse loomisel automaatselt rakendada täpsemat konfiguratsiooni.
Failide kopeerimine SSH kaudu SCP abil
SSH-kliendiga on kaasas veel kaks väga mugavat tööriista failide kopeerimiseks krüptitud ssh-ühendus. Vaadake allpool näidet käskude scp ja sftp standardsest kasutamisest. Pange tähele, et paljud ssh-suvandid kehtivad ka nende käskude puhul.
Selles näites fail mypic.png kopeeritud kaugserver kausta /media/data ja ümber nimetatud mypic_2.png.
Ärge unustage pordi parameetri erinevust. Siin jäävad paljud inimesed startimisel vahele scp käsurealt. Siin on pordi parameeter -PJa mitte -p, täpselt nagu ssh-kliendis! Sa unustad, aga ära muretse, kõik unustavad.
Neile, kes on konsooliga tuttavad ftp, on paljud käsud sarnased sftp... Saate teha lükkama, panema и lsnagu süda soovib.
sftp neo@remoteserver
Praktilised näited
Paljudes nendes näidetes saab tulemusi saavutada erinevate meetoditega. Nagu meie kõigis õpikud ja näited, eelistatakse praktilisi näiteid, mis lihtsalt teevad oma töö.
1. SSH sokkide puhverserver
SSH-puhverserveri funktsioon on mõjuval põhjusel number 1. See on võimsam, kui paljud arvavad, ja annab peaaegu iga rakenduse abil juurdepääsu mis tahes süsteemile, millele kaugserveril on juurdepääs. SSH-klient saab SOCKS-i puhverserveri kaudu liiklust tunnelida ühe lihtsa käsuga. Oluline on mõista, et liiklus kaugsüsteemidesse tuleb kaugserverist, see kuvatakse veebiserveri logides.
Siin käivitame sokkide puhverserveri TCP pordil 8888, teine käsk kontrollib, kas port on kuulamisrežiimis aktiivne. 127.0.0.1 näitab, et teenus töötab ainult kohalikul hostil. Kõigi liideste, sealhulgas Etherneti või wifi kuulamiseks saame kasutada veidi erinevat käsku, mis võimaldab meie võrgu teistel rakendustel (brauserid jne) ssh sokkide puhverserveri kaudu puhverserveri teenusega ühenduse luua.
Nüüd saame konfigureerida brauseri sokkide puhverserveriga ühenduse loomiseks. Firefoxis valige Seaded | Põhiline | Võrgusätted. Määrake ühendamiseks IP-aadress ja port.
Pange tähele vormi allosas olevat valikut, et ka teie brauseri DNS-päringud läheksid SOCKS-i puhverserveri kaudu. Kui kasutate oma kohalikus võrgus veebiliikluse krüptimiseks puhverserverit, soovite tõenäoliselt valida selle valiku, et DNS-i päringud tunneldataks SSH-ühenduse kaudu.
Sokkide puhverserveri aktiveerimine Chrome'is
Chrome'i käivitamine teatud käsurea parameetritega lubab sokkide puhverserveri ja tunnelib brauserist DNS-i päringuid. Usalda, aga kontrolli. Kasuta tcpdump et kontrollida, kas DNS-päringud pole enam nähtavad.
Pidage meeles, et ka paljud teised rakendused võivad kasutada sokkide puhverserverit. Veebibrauser on neist kõigist kõige populaarsem. Mõnel rakendusel on puhverserveri lubamiseks konfiguratsioonisuvandid. Teised vajavad abiprogrammiga pisut abi. Näiteks, puhverahelad võimaldab teil joosta läbi sokkide puhverserveri Microsoft RDP jne.
Socksi puhverserveri konfiguratsiooniparameetrid määratakse puhverahelate konfiguratsioonifailis.
Vihje: kui kasutate Windowsis Linuxi kaugtöölauda? Proovige klienti FreeRDP. See on kaasaegsem teostus kui rdesktop, palju sujuvama kogemusega.
Võimalus kasutada SSH-d sokkide puhverserveri kaudu
Istud kohvikus või hotellis – ja oled sunnitud kasutama üsna ebausaldusväärset WiFi-d. Käivitame ssh-puhverserveri kohapeal sülearvutist ja installime ssh-tunneli koduvõrku kohalikule Rasberry Pi-le. Kasutades brauserit või muid sokkide puhverserveri jaoks konfigureeritud rakendusi, pääseme ligi mis tahes koduvõrgu võrguteenustele või pääseme koduühenduse kaudu Internetti. Kõik sülearvuti ja koduserveri vahel (Wi-Fi ja Interneti kaudu koju) krüpteeritakse SSH-tunnelis.
2. SSH tunnel (pordi edastamine)
Lihtsamal kujul avab SSH-tunnel lihtsalt teie kohalikus süsteemis pordi, mis ühendub tunneli teises otsas oleva teise pordiga.
Vaatame parameetrit -L. Seda võib pidada kuulamise kohalikuks pooleks. Nii et ülaltoodud näites kuulab port 9999 kohaliku hosti poolel ja edastatakse pordi 80 kaudu kaugserverisse. Pange tähele, et 127.0.0.1 viitab kaugserveris olevale localhostile!
Lähme trepist üles. Järgmine näide suhtleb kuulamispordid teiste kohaliku võrgu hostidega.
Selles näites suuname tunneli kaugserverist veebiserverisse, mis töötab 10.10.10.10. Liiklus kaugserverist 10.10.10.10 pole enam SSH tunnelis. Veebiserver 10.10.10.10 peab veebipäringute allikaks kaugserverit.
4. Pöörake SSH tunnel
Siin konfigureerime kaugserveri kuulamispordi, mis loob ühenduse tagasi meie localhosti (või muu süsteemi) kohaliku pordiga.
See SSH-seanss loob ühenduse kaugserveri pordist 1999 meie kohaliku kliendi pordiga 902.
5. SSH pöördpuhverserver
Sel juhul seadistame oma ssh-ühenduses sokkide puhverserveri, kuid puhverserver kuulab serveri kaugemas otsas. Ühendused selle kaugpuhverserveriga kuvatakse nüüd tunnelist meie kohaliku hosti liiklusena.
Kaug-SSH-tunnelitega seotud probleemide tõrkeotsing
Kui teil on probleeme kaug-SSH-suvandite tööga, kontrollige netstat, milliste muude liidestega on kuulamisport ühendatud. Kuigi näidetes märkisime 0.0.0.0, kuid kui väärtus GatewayPorts в sshd_config seatud ei, siis on kuulaja seotud ainult localhostiga (127.0.0.1).
Turvahoiatus
Pange tähele, et tunnelite ja sokkide puhverserveri avamisel võivad sisevõrgu ressursid olla juurdepääsetavad ebausaldusväärsetele võrkudele (nt Internet!). See võib olla tõsine turvarisk, seega veenduge, et mõistate, mis on kuulaja ja millele tal on juurdepääs.
6. VPN-i installimine SSH kaudu
Rünnakumeetodite spetsialistide (pentestijad jne) levinud termin on "võrgu tugipunkt". Kui ühes süsteemis on ühendus loodud, saab sellest süsteemist edasise võrgule juurdepääsu värav. Tugipunkt, mis võimaldab liikuda laiuses.
Selliseks tugipunktiks saame kasutada SSH-puhverserverit ja puhveraheladSiiski on mõned piirangud. Näiteks ei ole võimalik otse pistikupesadega töötada, seega ei saa me skaneerida võrgusiseseid porte NmapSYN.
Kasutades seda täpsemat VPN-i suvandit, väheneb ühendus tase 3. Seejärel saame lihtsalt suunata liikluse läbi tunneli, kasutades standardset võrgumarsruutimist.
Meetod kasutab ssh, iptables, tun interfaces ja marsruutimine.
Kõigepealt peate need parameetrid määrama sshd_config. Kuna teeme muudatusi nii kaug- kui ka kliendisüsteemide liidestes, siis vaja juurõigusi mõlemal küljel.
PermitRootLogin yes
PermitTunnel yes
Seejärel loome ssh-ühenduse, kasutades parameetrit, mis nõuab tun-seadmete lähtestamist.
localhost:~# ssh -v -w any root@remoteserver
Meil peaks nüüd liideste kuvamisel olema hääleseade (# ip a). Järgmine samm lisab tunneli liidestele IP-aadressid.
SSH kliendi pool:
localhost:~# ip addr add 10.10.10.2/32 peer 10.10.10.10 dev tun0
localhost:~# ip tun0 up
SSH serveri pool:
remoteserver:~# ip addr add 10.10.10.10/32 peer 10.10.10.2 dev tun0
remoteserver:~# ip tun0 up
Nüüd on meil otsetee teise hosti juurde (route -n и ping 10.10.10.10).
Saate suunata mis tahes alamvõrgu teisel pool asuva hosti kaudu.
localhost:~# route add -net 10.10.10.0 netmask 255.255.255.0 dev tun0
buum! VPN SSH tunneli kaudu võrgukihil 3. Nüüd on see võit.
Probleemide ilmnemisel kasutage tcpdump и pingpõhjuse väljaselgitamiseks. Kuna me mängime 3. kihis, siis meie icmp-paketid läbivad seda tunnelit.
7. Kopeerige SSH-võti (ssh-copy-id)
Selleks on mitu võimalust, kuid see käsk säästab aega, kuna ei kopeeri faile käsitsi. See lihtsalt kopeerib ~/.ssh/id_rsa.pub (või vaikevõtme) teie süsteemist ~/.ssh/authorized_keys kaugserveris.
localhost:~$ ssh-copy-id user@remoteserver
8. Kaugkäskude täitmine (mitteinteraktiivne)
meeskond ssh Ühise kasutajasõbraliku liidese jaoks saab linkida teiste käskudega. Lihtsalt lisage jutumärkidesse viimase parameetrina käsk, mida soovite kaughostis käivitada.
Selles näites grep käivitatakse kohalikus süsteemis pärast logi allalaadimist ssh-kanali kaudu. Kui fail on suur, on seda mugavam käivitada grep kaugküljel, lisades mõlemad käsud lihtsalt jutumärkidesse.
Teine näide täidab sama funktsiooni kui ssh-copy-id näitest 7.
9. Kaugpakettide püüdmine ja vaatamine Wiresharkis
Võtsin ühe meie oma tcpdump näited. Kasutage seda pakettide eemalt jäädvustamiseks ja tulemuste kuvamiseks otse kohalikus Wiresharki GUI-s.
:~$ ssh root@remoteserver 'tcpdump -c 1000 -nn -w - not port 22' | wireshark -k -i -
10. Kohaliku kausta kopeerimine kaugserverisse SSH kaudu
Kena trikk, mis tihendab kausta kasutades bzip2 (see on käsu -j valik tar) ja hangib seejärel voo bzip2 teisel poolel, luues kaugserveris duplikaatkausta.
Kui X on installitud klienti ja kaugserverisse, saate GUI-käsu kaugjuhtimise teel käivitada kohalikul töölaual oleva aknaga. See funktsioon on olnud kasutusel juba pikka aega, kuid on endiselt väga kasulik. Käivitage kaugveebibrauser või isegi VMWawre Workstationi konsool, nagu ma selles näites teen.
rsync palju mugavam scp, kui vajate kataloogi, suure hulga failide või väga suurte failide perioodilisi varukoopiaid. Seal on funktsioon edastustõrkest taastumiseks ja ainult muudetud failide kopeerimiseks, mis säästab liiklust ja aega.
See näide kasutab tihendamist gzip (-z) ja arhiveerimisrežiim (-a), mis võimaldab rekursiivset kopeerimist.
Torsokid kasutab puhverserveri jaoks localhosti porti 9050. Nagu alati, peate Tori kasutamisel tõsiselt kontrollima, millist liiklust tunnelitakse ja muid tööturbe (opsec) probleeme. Kuhu teie DNS-päringud lähevad?
14. SSH-st EC2-le
EC2 eksemplariga ühenduse loomiseks vajate privaatvõtit. Laadige see alla (.pem laiendus) Amazon EC2 juhtpaneelilt ja muutke õigusi (chmod 400 my-ec2-ssh-key.pem). Hoidke võtit kindlas kohas või asetage see oma kausta ~/.ssh/.
Parameeter -i lihtsalt käsib ssh-kliendil seda võtit kasutada. Fail ~/.ssh/config Ideaalne võtmekasutuse automaatseks konfigureerimiseks ec2 hostiga ühenduse loomisel.
Host my-ec2-public
Hostname ec2???.compute-1.amazonaws.com
User ubuntu
IdentityFile ~/.ssh/my-ec2-key.pem
15. Tekstifailide redigeerimine VIM-iga ssh/scp kaudu
Kõigile armastajatele vim See näpunäide säästab veidi aega. Kasutades vim faile redigeeritakse scp kaudu ühe käsuga. See meetod loob faili lihtsalt lokaalselt /tmpja kopeerib selle siis tagasi, kui oleme selle salvestanud vim.
localhost:~$ vim scp://user@remoteserver//etc/hosts
Märkus: formaat erineb pisut tavapärasest scp. Peale hosti on meil topelt //. See on absoluutne teeviit. Üks kaldkriips näitab teie kodukaustaga seotud teed users.
Vaikimisi, kui kaugserveriga on olemasolev ühendus kasutades ssh teist ühendust kasutades ssh või scp loob uue seansi koos täiendava autentimisega. Võimalus ControlPath võimaldab olemasolevat seanssi kasutada kõigi järgnevate ühenduste jaoks. See kiirendab protsessi oluliselt: mõju on märgatav isegi kohalikus võrgus ja veelgi enam kaugressurssidega ühenduse loomisel.
Host remoteserver
HostName remoteserver.example.org
ControlMaster auto
ControlPath ~/.ssh/control/%r@%h:%p
ControlPersist 10m
ControlPath määrab pesa uute ühenduste kontrollimiseks, et näha, kas on aktiivne seanss ssh. Viimane võimalus tähendab, et isegi pärast konsoolist väljumist jääb olemasolev seanss avatuks 10 minutiks, nii et selle aja jooksul saate olemasoleva pistikupesaga uuesti ühenduse luua. Lisateabe saamiseks vaadake abi. ssh_config man.
18. Voogesitage videot SSH kaudu, kasutades VLC-d ja SFTP-d
Isegi pikaajalised kasutajad ssh и vlc (Video Lan Client) ei ole sellest mugavast valikust alati teadlikud, kui teil on tõesti vaja videot võrgu kaudu vaadata. Seadetes Fail | Avage võrguvoog programmid vlc asukoha saate sisestada kui sftp://. Kui nõutakse parooli, kuvatakse viip.
sftp://remoteserver//media/uploads/myvideo.mkv
19. Kahefaktoriline autentimine
SSH-teenusele kehtib sama kahefaktoriline autentimine, mis teie pangakontol või Google'i kontol.
Muidugi, ssh on algselt kahefaktoriline autentimisfunktsioon, mis tähendab parooli ja SSH-võtit. Riistvaramärgi või Google Authenticatori rakenduse eeliseks on see, et tavaliselt on tegemist erineva füüsilise seadmega.
Peamine asi, mida siin mõista, on see, et see ei ole sama mis käsk ssh host1Siis user@host1:~$ ssh host2 jne. Valik -J kasutab nutikalt edastamist, et sundida localhosti looma seanssi ahela järgmise hostiga. Nii et ülaltoodud näites on meie localhost autentitud host4 jaoks. See tähendab, et kasutatakse meie localhosti võtmeid ja seanss localhostist host4-ni on täielikult krüptitud.
Sellise võimaluse eest sisse ssh_config määrake konfiguratsiooni valik ProxyJump. Kui peate regulaarselt läbima mitu hosti, säästab konfiguratsiooni kaudu automatiseerimine palju aega.
21. Blokeerige SSH-i jõhkra jõu katsed iptablesi abil
Igaüks, kes on SSH-teenust haldanud ja logisid vaadanud, teab, kui palju toore jõu katseid tehakse iga tunni tagant. Kiire viis logide müra vähendamiseks on SSH teisaldamine mittestandardsesse porti. Tehke failis muudatused sshd_config konfiguratsiooniparameetri kaudu Port ##.
Koos iptables Samuti saate teatud läve saavutamisel hõlpsasti blokeerida pordiga ühenduse loomise katsed. Lihtne viis seda teha on kasutada OSSEC, sest see mitte ainult ei blokeeri SSH-d, vaid teeb ka hulga muid hostinimepõhiseid sissetungimise tuvastamise (HIDS) meetmeid.
22. SSH Escape pordi suunamise muutmiseks
Ja meie viimane näide ssh loodud pordi edastamise muutmiseks olemasoleva seansi jooksul ssh. Kujutage ette seda stsenaariumi. Oled sügaval võrgus; võib-olla hüppas üle poole tosina hosti ja vajate tööjaama kohalikku porti, mis edastatakse vana Windows 2003 süsteemi Microsoft SMB-le (keegi mäletab ms08-67?).
Klõpsates enter, proovige konsooli sisestada ~C. See on seansi juhtimisjada, mis võimaldab olemasolevas ühenduses muudatusi teha.
Siin näete, et oleme edastanud oma kohaliku pordi 1445 sisevõrgust leitud Windows 2003 hostile. Nüüd lihtsalt jookse msfconsole, ja võite edasi liikuda (eeldusel, et kavatsete seda hosti kasutada).
Lõpuleviimine
Need näited, näpunäited ja käsud ssh peaks andma lähtepunkti; Lisateavet kõigi käskude ja võimaluste kohta leiate man-lehtedelt (man ssh, man ssh_config, man sshd_config).
Mind on alati paelunud võimalus pääseda ligi süsteemidele ja täita käske kõikjal maailmas. Arendades oma oskusi selliste tööriistadega nagu ssh muutute igas mängitavas mängus tõhusamaks.