Praktyske foarbylden SSH, dy't jo feardichheden as systeembehearder op ôfstân nei in nij nivo bringe sil. Kommando's en tips sille net allinich helpe om te brûken SSH, mar ek navigearje it netwurk mear competently.
Witte in pear trúkjes ssh nuttich foar elke systeembehearder, netwurkingenieur of feiligensspesjalist.
It folgjende foarbyld brûkt mienskiplike parameters dy't faak tsjinkomme by it ferbinen mei in tsjinner op ôfstân SSH.
localhost:~$ ssh -v -p 22 -C neo@remoteserver
-v: Debuggen-útfier is benammen nuttich by it analysearjen fan autentikaasjeproblemen. Kin meardere kearen brûkt wurde om ekstra ynformaasje wer te jaan.
- p 22: ferbining haven nei in SSH-tsjinner op ôfstân. 22 hoecht net oantsjutte te wurden, om't dit de standertwearde is, mar as it protokol op in oare poarte stiet, spesifisearje wy it mei de parameter -p. De harkpoarte is oantsjutte yn it bestân sshd_config yn opmaak Port 2222.
-C: Kompresje foar ferbining. As jo in trage ferbining hawwe of in protte tekst besjen, kin dit de ferbining fersnelle.
neo@: De rigel foar it @-symboal jout de brûkersnamme oan foar autentikaasje op de tsjinner op ôfstân. As jo it net oantsjutte, sil it standert de brûkersnamme wêze fan it akkount wêrop jo op it stuit binne oanmeld (~$whoami). De brûker kin ek oantsjutte mei de parameter -l.
remoteserver: namme fan de host om te ferbinen mei ssh, dit kin in folslein kwalifisearre domeinnamme wêze, in IP-adres, of elke host yn it lokale hostbestân. Om te ferbinen mei in host dy't sawol IPv4 as IPv6 stipet, kinne jo de parameter tafoegje oan 'e kommandorigel -4 of -6 foar goede resolúsje.
Alle boppesteande parameters binne opsjoneel útsein remoteserver.
Mei help fan de konfiguraasje triem
Hoewol in protte binne bekend mei de triem sshd_config, der is ek in client konfiguraasje triem foar it kommando ssh. Standertwearde ~/.ssh/config, mar it kin wurde definiearre as in parameter foar in opsje -F.
Host *
Port 2222
Host remoteserver
HostName remoteserver.thematrix.io
User neo
Port 2112
IdentityFile /home/test/.ssh/remoteserver.private_key
D'r binne twa host-yngongen yn it foarbyld ssh-konfiguraasjebestân hjirboppe. De earste betsjut alle hosts, allegear mei de konfiguraasjeparameter Port 2222. De twadde seit dat foar de host remoteserver in oare brûkersnamme, poarte, FQDN en IdentityFile moatte wurde brûkt.
In konfiguraasjetriem kin in protte typtiid besparje troch avansearre konfiguraasje automatysk tapasse te litten by it ferbinen mei spesifike hosts.
It kopiearjen fan bestannen oer SSH mei SCP
De SSH-kliïnt komt mei twa oare heul handige ark foar it kopiearjen fan bestannen fersifere ssh ferbining. Sjoch hjirûnder foar in foarbyld fan standertgebrûk fan de scp- en sftp-kommando's. Tink derom dat in protte fan 'e ssh-opsjes ek jilde foar dizze kommando's.
Yn dit foarbyld de triem mypic.png kopiearre nei remoteserver oan map /media/data en omneamd ta mypic_2.png.
Ferjit net oer it ferskil yn 'e havenparameter. Dit is wêr't in protte minsken fongen wurde as se lansearje scp fan de kommandorigel. Hjir is de havenparameter -P, en net -p, Krekt as yn in ssh client! Jo sille ferjitte, mar meitsje jo gjin soargen, elkenien ferjit.
Foar dyjingen dy't bekend binne mei konsole ftp, in protte fan 'e kommando's binne ferlykber yn sftp. Jo kinne dwaan triuwe, sette и lssa't it hert begeart.
sftp neo@remoteserver
Praktyske foarbylden
Yn in protte fan dizze foarbylden kinne de resultaten wurde berikt mei ferskate metoaden. Lykas yn al ús learboeken en foarbylden, foarkar wurdt jûn oan praktyske foarbylden dy't gewoan dogge harren wurk.
1. SSH sokken proxy
De SSH Proxy-funksje is nûmer 1 foar in goede reden. It is machtiger dan in protte realisearje en jout jo tagong ta elk systeem dat de tsjinner op ôfstân tagong hat, mei praktysk elke applikaasje. In ssh-kliïnt kin ferkear troch in SOCKS-proxy tunnelje mei ien ienfâldich kommando. It is wichtich om te begripen dat ferkear nei systemen op ôfstân komt fan in tsjinner op ôfstân, dit sil oanjûn wurde yn 'e webserverlogs.
Hjir rinne wy in sockenproxy op TCP-poarte 8888, it twadde kommando kontrolearret dat de haven aktyf is yn harkmodus. 127.0.0.1 jout oan dat de tsjinst allinich op localhost rint. Wy kinne in wat oars kommando brûke om te harkjen op alle ynterfaces, ynklusyf ethernet of wifi, dit sil oare applikaasjes (browsers, ensfh.) Op ús netwurk tastean om te ferbinen mei de proxytsjinst fia de ssh socks proxy.
No kinne wy de browser konfigurearje om te ferbinen mei de socks proxy. Selektearje yn Firefox Ynstellings | Basic | Netwurk ynstellings. Spesifisearje it IP-adres en de poarte om te ferbinen.
Notysje asjebleaft de opsje ûnderoan it formulier om ek de DNS-oanfragen fan jo browser fia in SOCKS-proxy te gean. As jo in proxy-tsjinner brûke om webferkear op jo lokale netwurk te fersiferjen, wolle jo dizze opsje wierskynlik selektearje sadat DNS-oanfragen troch de SSH-ferbining tunneld wurde.
Sockenproxy aktivearje yn Chrome
It starten fan Chrome mei bepaalde kommandorigelparameters sil de socks-proxy ynskeakelje, en ek DNS-oanfragen fan 'e browser tunnelje. Fertrouwe mar kontrolearje. Brûke tcpdump om te kontrolearjen dat DNS-fragen net mear sichtber binne.
Hâld der rekken mei dat in protte oare applikaasjes ek sokke proxies kinne brûke. De webbrowser is gewoan de populêrste fan allegear. Guon applikaasjes hawwe konfiguraasjeopsjes om in proxy-tsjinner yn te skeakeljen. Oaren hawwe in bytsje help nedich mei in helpprogramma. Bygelyks, proxychains kinne jo rinne troch in socks proxy Microsoft RDP, etc.
Socks proxy konfiguraasje parameters wurde ynsteld yn de proxychains konfiguraasje triem.
Hint: as jo buroblêd op ôfstân brûke fan Linux op Windows? Besykje de klant FreeRDP. Dit is in mear moderne ymplemintaasje dan rdesktop, mei in folle soepeler ûnderfining.
Opsje om SSH te brûken fia socks proxy
Jo sitte yn in kafee of hotel - en wurde twongen om frij ûnbetroubere WiFi te brûken. Wy lansearje in ssh-proxy lokaal fan in laptop en ynstallearje in ssh-tunnel yn it thúsnetwurk op in lokale Rasberry Pi. Mei help fan in blêder of oare applikaasjes konfigurearre foar in socks proxy, wy kinne tagong ta alle netwurk tsjinsten op ús thús netwurk of tagong ta it ynternet fia ús thús ferbining. Alles tusken jo laptop en jo thússerver (fia Wi-Fi en ynternet nei jo hûs) is fersifere yn in SSH-tunnel.
2. SSH-tunnel (poarte trochstjoere)
Yn syn ienfâldichste foarm iepenet in SSH-tunnel gewoan in poarte op jo lokale systeem dy't oanslút op in oare poarte oan 'e oare ein fan' e tunnel.
Litte wy nei de parameter sjen -L. It kin beskôge wurde as de lokale kant fan harkjen. Dus yn it foarbyld hjirboppe harket poarte 9999 oan 'e kant fan' e localhost en trochstjoerd fia poarte 80 nei remoteserver. Tink derom dat 127.0.0.1 ferwiist nei localhost op 'e tsjinner op ôfstân!
Litte wy de stap omheech gean. It folgjende foarbyld kommunisearret harkjende havens mei oare hosts op it lokale netwurk.
Yn dit foarbyld ferwize wy in tunnel fan remoteserver nei in webserver dy't rint op 10.10.10.10. Ferkear fan remoteserver nei 10.10.10.10 net mear yn de SSH-tunnel. De webserver op 10.10.10.10 sil remoteserver beskôgje as de boarne fan weboanfragen.
4. Reverse SSH tunnel
Hjir sille wy in harkpoarte konfigurearje op 'e tsjinner op ôfstân dy't werom sil ferbine mei de lokale poarte op ús localhost (as in oar systeem).
Dizze SSH-sesje bringt in ferbining fan poarte 1999 op tsjinner op ôfstân nei poarte 902 op ús lokale client.
5. SSH Reverse Proxy
Yn dit gefal stelle wy in socks-proxy op ús ssh-ferbining, mar de proxy harket op 'e ôfstân fan' e tsjinner. Ferbinings mei dizze proxy op ôfstân ferskine no út 'e tunnel as ferkear fan ús localhost.
As jo problemen hawwe mei SSH-opsjes op ôfstân wurkje, kontrolearje dan mei netstat, hokker oare ynterfaces de harkpoarte is ferbûn mei. Hoewol't wy oanjûn 0.0.0.0 yn 'e foarbylden, mar as de wearde GatewayPorts в sshd_config Klear foar nee, dan sil de harker allinich bûn wêze oan localhost (127.0.0.1).
Feilichheidswarskôging
Tink derom dat troch it iepenjen fan tunnels en sokke proxy's, ynterne netwurkboarnen tagonklik wêze kinne foar net-fertroude netwurken (lykas it ynternet!). Dit kin in serieus feiligensrisiko wêze, dus soargje derfoar dat jo begripe wat de harker is en wêr't se tagong ta hawwe.
6. Ynstallearje VPN fia SSH
In mienskiplike term ûnder spesjalisten yn oanfalsmetoaden (pentesters, ensfh.) is "in steunpunt yn it netwurk." Sadree't der in ferbining is oprjochte op ien systeem, dat systeem wurdt de poarte foar fierdere tagong ta it netwurk. In stipepunt wêrmei jo yn 'e breedte kinne bewegen.
Foar sa'n fuotstân kinne wy brûke in SSH proxy en proxychains, lykwols binne d'r guon beheiningen. It sil bygelyks net mooglik wêze om direkt mei sockets te wurkjen, sadat wy gjin havens binnen it netwurk kinne scannen fia NmapSYN.
Mei dizze mear avansearre VPN-opsje wurdt de ferbining fermindere nei nivo 3. Wy kinne dan gewoan ferkear troch de tunnel routerje mei standert netwurkrouting.
De metoade brûkt ssh, iptables, tun interfaces en routing.
Earst moatte jo dizze parameters ynstelle sshd_config. Sûnt wy meitsje feroarings oan de ynterfaces fan sawol de ôfstân en client systemen, wy nedich root rjochten oan beide kanten.
PermitRootLogin yes
PermitTunnel yes
Dan sille wy in ssh-ferbining meitsje mei de parameter dy't de inisjalisaasje fan tun-apparaten freget.
localhost:~# ssh -v -w any root@remoteserver
Wy soene no in tunapparaat moatte hawwe by it werjaan fan ynterfaces (# ip a). De folgjende stap sil IP-adressen tafoegje oan de tunnel-ynterfaces.
SSH klantside:
localhost:~# ip addr add 10.10.10.2/32 peer 10.10.10.10 dev tun0
localhost:~# ip tun0 up
SSH Server Side:
remoteserver:~# ip addr add 10.10.10.10/32 peer 10.10.10.2 dev tun0
remoteserver:~# ip tun0 up
No hawwe wy in direkte rûte nei in oare host (route -n и ping 10.10.10.10).
Jo kinne elk subnet troch in host oan 'e oare kant rûte.
localhost:~# route add -net 10.10.10.0 netmask 255.255.255.0 dev tun0
Oan 'e kant op ôfstân moatte jo ynskeakelje ip_forward и iptables.
Boom! VPN oer SSH-tunnel by netwurklaach 3. No is dat in oerwinning.
As der problemen foarkomme, brûk dan tcpdump и pingom de oarsaak te bepalen. Sûnt wy spylje op laach 3, sille ús icmp-pakketten troch dizze tunnel gean.
7. Kopiearje de SSH-kaai (ssh-copy-id)
D'r binne ferskate manieren om dit te dwaan, mar dit kommando besparret tiid troch gjin bestannen mei de hân te kopiearjen. It kopiearret gewoan ~/.ssh/id_rsa.pub (as de standertkaai) fan jo systeem nei ~/.ssh/authorized_keys op in tsjinner op ôfstân.
localhost:~$ ssh-copy-id user@remoteserver
8. Utfiering fan kommando op ôfstân (net-ynteraktyf)
ploech ssh Kin wurde keppele oan oare kommando's foar in mienskiplike, brûkerfreonlike ynterface. Foegje gewoan it kommando ta dat jo wolle útfiere op 'e host op ôfstân as de lêste parameter yn oanhalingstekens.
Yn dit foarbyld grep útfierd op it lokale systeem neidat it log is ynladen fia ssh-kanaal. As it bestân grut is, is it handiger om te rinnen grep op 'e ôfstân troch gewoan beide kommando's yn dûbele oanhalingstekens yn te sluten.
In oar foarbyld fiert deselde funksje as ssh-copy-id foarbyld 7.
Ik naam ien fan ús tcpdump foarbylden. Brûk it om pakketten op ôfstân te fangen en de resultaten direkt yn 'e lokale Wireshark GUI te werjaan.
:~$ ssh root@remoteserver 'tcpdump -c 1000 -nn -w - not port 22' | wireshark -k -i -
10. It kopiearjen fan in lokale map nei in tsjinner op ôfstân fia SSH
In moaie trúk dy't in map mei help fan komprimearret bzip2 (dit is de -j opsje yn it kommando tar), en helje dan de stream op bzip2 oan 'e oare kant, it meitsjen fan in dûbele map op' e tsjinner op ôfstân.
11. Remote GUI Applikaasjes mei SSH X11 Forwarding
As X is ynstalleare op de client en de tsjinner op ôfstân, dan kinne jo op ôfstân in GUI-kommando útfiere mei in finster op jo lokale buroblêd. Dizze funksje bestiet al in lange tiid, mar is noch altyd heul nuttich. Starte in webblêder op ôfstân of sels de VMWawre Workstation-konsole lykas ik yn dit foarbyld dwaan.
localhost:~$ ssh -X remoteserver vmware
Fereaske string X11Forwarding yes yn triem sshd_config.
12. Kopiearje fan triem op ôfstân mei rsync en SSH
rsync folle handiger scp, as jo periodike backups nedich hawwe fan in map, in grut oantal bestannen, of heul grutte bestannen. D'r is in funksje om te herstellen fan in oerdrachtfal en allinich feroare bestannen te kopiearjen, wat ferkear en tiid besparret.
Dit foarbyld brûkt kompresje gzip (-z) en argyfmodus (-a), dy't rekursyf kopiearjen mooglik makket.
Torsocks sil poarte 9050 brûke op localhost foar proxy. Lykas altyd, by it brûken fan Tor moatte jo serieus kontrolearje hokker ferkear wurdt tunnelearre en oare problemen mei operasjonele feiligens (opsec). Wêr geane jo DNS-fragen hinne?
14. SSH to EC2 eksimplaar
Om ferbining te meitsjen mei in EC2-eksimplaar, hawwe jo in privee kaai nedich. Download it (.pem-útwreiding) fan it Amazon EC2-kontrôlepaniel en feroarje de tagongsrjochten (chmod 400 my-ec2-ssh-key.pem). Hâld de kaai op in feilich plak of pleats it yn jo eigen map ~/.ssh/.
Parameter -i fertelt gewoan de ssh-kliïnt om dizze kaai te brûken. Map ~/.ssh/config Ideaal foar it automatysk konfigurearjen fan kaaigebrûk by it ferbinen mei in ec2-host.
Host my-ec2-public
Hostname ec2???.compute-1.amazonaws.com
User ubuntu
IdentityFile ~/.ssh/my-ec2-key.pem
15. Teksttriemmen bewurkje mei VIM fia ssh / scp
Foar alle leafhawwers vim Dizze tip sil wat tiid besparje. Troch te brûken vim bestannen wurde bewurke fia scp mei ien kommando. Dizze metoade makket it bestân gewoan lokaal yn /tmpen kopiearret it dan werom as wy it bewarre hawwe vim.
localhost:~$ vim scp://user@remoteserver//etc/hosts
Opmerking: it formaat is wat oars as it gewoane scp. Nei de gasthear wy hawwe dûbele //. Dit is in absolute paadferwizing. Ien slash sil in paad oanjaan relatyf oan jo thúsmap users.
As jo dizze flater sjogge, kontrolearje dan dûbel it kommandoformaat. Dit betsjut normaal in syntaksisflater.
16. Montearje in ôfstân SSH as in lokale map mei SSHFS
Mei help fan sshfs - client foar bestânsysteem ssh - wy kinne in lokale map ferbine mei in lokaasje op ôfstân mei alle triem ynteraksjes yn in fersifere sesje ssh.
localhost:~$ apt install sshfs
Ynstallearje it pakket op Ubuntu en Debian sshfs, en montearje dan gewoan de lokaasje op ôfstân op ús systeem.
Standert, as d'r in besteande ferbining is mei in tsjinner op ôfstân brûkt ssh twadde ferbining mei help ssh of scp stelt in nije sesje yn mei ekstra autentikaasje. Opsje ControlPath lit de besteande sesje brûkt wurde foar alle folgjende ferbiningen. Dit sil it proses signifikant fersnelle: it effekt is merkber sels op in lokaal netwurk, en noch mear by it ferbinen mei boarnen op ôfstân.
Host remoteserver
HostName remoteserver.example.org
ControlMaster auto
ControlPath ~/.ssh/control/%r@%h:%p
ControlPersist 10m
ControlPath spesifisearret de socket om te kontrolearjen op nije ferbiningen om te sjen oft der in aktive sesje is ssh. De lêste opsje betsjut dat sels nei't jo de konsole ferlitte, de besteande sesje 10 minuten iepen bliuwt, dus yn dizze tiid kinne jo opnij ferbine mei de besteande socket. Foar mear ynformaasje, sjoch de help. ssh_config man.
18. Stream fideo oer SSH mei VLC en SFTP
Sels lange tiid brûkers ssh и vlc (Video Lan Client) binne net altyd bewust fan dizze handige opsje as jo wirklik in fideo oer it netwurk moatte besjen. Yn ynstellings Triem | Iepenje Netwurkstream programma vlc kinne jo ynfiere de lokaasje as sftp://. As in wachtwurd nedich is, sil in prompt ferskine.
sftp://remoteserver//media/uploads/myvideo.mkv
19. Twa-faktor autentikaasje
Deselde twa-faktor autentikaasje as jo bankrekken of Google akkount jildt foar de SSH tsjinst.
Fansels, ssh hat ynearsten in twa-faktor autentikaasje funksje, dat betsjut in wachtwurd en in SSH kaai. It foardiel fan in hardware-token as Google Authenticator-app is dat it normaal in oar fysyk apparaat is.
As netwurksegmentaasje betsjut dat jo troch meardere ssh-hosts moatte springe om nei it definitive bestimmingsnetwurk te kommen, sil de fluchtoets -J jo tiid besparje.
It wichtichste ding om hjir te begripen is dat dit net itselde is as it kommando ssh host1, dan user@host1:~$ ssh host2 ensfh De opsje -J brûkt tûk trochstjoere om localhost te twingen om in sesje te fêstigjen mei de folgjende host yn 'e keten. Dat yn it boppesteande foarbyld is ús localhost authentisearre foar host4. Dat is, ús localhost-kaaien wurde brûkt, en de sesje fan localhost nei host4 is folslein fersifere.
Foar sa'n mooglikheid yn ssh_config spesifisearje konfiguraasje opsje ProxyJump. As jo regelmjittich troch ferskate hosts moatte gean, dan sil automatisearring fia de konfiguraasje in protte tiid besparje.
21. Block SSH brute krêft besykjen mei help fan iptables
Elkenien dy't in SSH-tsjinst beheard hat en de logs besjoen hat, wit oer it oantal brute krêftpogingen dy't elke oere fan elke dei foarkomme. In rappe manier om lûd yn 'e logs te ferminderjen is SSH te ferpleatsen nei in net-standert haven. Meitsje feroarings oan it bestân sshd_config fia konfiguraasje parameter Haven##.
Mei help fan iptables Jo kinne besykjen om te ferbinen mei in haven ek maklik blokkearje by it berikken fan in bepaalde drompel. In maklike manier om dit te dwaan is te brûken OSSEC, om't it net allinich SSH blokkearret, mar docht in bosk oare hostnamme-basearre ynbraakdeteksje (HIDS) maatregels.
22. SSH Escape te feroarjen haven trochstjoere
En ús lêste foarbyld ssh ûntworpen om poarte trochstjoere te feroarjen binnen in besteande sesje ssh. Stel jo dit senario foar. Jo binne djip yn it netwurk; miskien hopped oer in heal dozen hosts en nedich in lokale haven op it wurkstasjonStencils dat wurdt trochstjoerd nei de Microsoft SMB fan in âlde Windows 2003 systeem (ien ûnthâlde ms08-67?).
Klikje enter, besykje yn te gean yn 'e konsole ~C. Dit is in sesjekontrôle-sekwinsje wêrmei feroarings kinne wurde makke oan in besteande ferbining.
Hjir kinne jo sjen dat wy ús lokale poarte 1445 trochstjoerd hawwe nei in Windows 2003-host dy't wy fûn hawwe op it ynterne netwurk. No mar rinne msfconsole, en jo kinne trochgean (oannommen dat jo fan plan binne dizze host te brûken).
Fertraging
Dizze foarbylden, tips en kommando's ssh moat in útgongspunt jaan; Mear ynformaasje oer elk fan 'e kommando's en mooglikheden is beskikber op 'e man-siden (man ssh, man ssh_config, man sshd_config).
Ik bin altyd fassinearre west troch de mooglikheid om tagong te krijen ta systemen en kommando's oeral yn 'e wrâld út te fieren. Troch jo feardigens te ûntwikkeljen mei ark lykas ssh do silst wurden effektiver yn alle spultsje jo spylje.