Praktikaj ekzemploj SSHtio prenos viajn kapablojn kiel fora sistemadministranto al nova nivelo. Komandoj kaj konsiletoj helpos ne nur uzi SSH, sed ankaŭ navigi la reton pli inteligente.
Sciante kelkajn lertaĵojn ssh utila al iu ajn sistemadministranto, ret-inĝeniero aŭ sekureca profesiulo.
La sekva ekzemplo uzas oftajn eblojn ofte renkontitajn dum konektado al fora servilo SSH.
localhost:~$ ssh -v -p 22 -C neo@remoteserver
-v: La sencimiga eligo estas precipe utila kiam oni analizas aŭtentigajn problemojn. Povas esti uzata plurfoje por montri pliajn informojn.
- p 22: konekta haveno al fora SSH-servilo. 22 ne devas esti specifita, ĉar ĉi tiu estas la defaŭlta valoro, sed se la protokolo estas sur iu alia haveno, tiam ni specifas ĝin uzante la parametron -p. La aŭskulta haveno estas specifita en la dosiero sshd_config en formato Port 2222.
-C: kunpremo por konekto. Se vi havas malrapidan kanalon aŭ rigardas multe da teksto, ĉi tio povas akceli la konekton.
neo@: La linio antaŭ la @ signo indikas la uzantnomon por aŭtentikigi ĉe la fora servilo. Se vi ne specifas ĝin, ĝi defaŭlte al la uzantnomo de la konto, al kiu vi nun estas ensalutinta (~$ whoami). La uzanto ankaŭ povas esti specifita per la parametro -l.
remoteserver: nomo de la gastiganto al kiu konektiĝi ssh, ĝi povas esti plene kvalifikita domajna nomo, IP-adreso aŭ iu ajn gastiganto en la lokaj gastigantoj-dosiero. Por konektiĝi al gastiganto kiu subtenas kaj IPv4 kaj IPv6, vi povas aldoni la komandlinian parametron -4 aŭ -6 por ĝusta rezolucio.
Ĉiuj ĉi-supraj parametroj estas laŭvolaj krom remoteserver.
Uzante agordan dosieron
Kvankam multaj konas la dosieron sshd_config, ekzistas ankaŭ klienta agorda dosiero por la komando ssh. Defaŭlta valoro ~/.ssh/config, sed ĝi povas esti difinita kiel parametro al opcio -F.
Host *
Port 2222
Host remoteserver
HostName remoteserver.thematrix.io
User neo
Port 2112
IdentityFile /home/test/.ssh/remoteserver.private_key
La ekzemplo ssh-agorda dosiero supre havas du gastigajn enirojn. La unua indikas ĉiujn gastigantojn, ĉar ĉiuj aplikas la agorda parametro de Port 2222. La dua diras tion por la gastiganto. fora servilo vi devus uzi malsaman uzantnomon, havenon, FQDN kaj IdentityFile.
Agorda dosiero povas ŝpari multe da tempo de tajpado de signoj, permesante ke altnivela agordo estu aplikata aŭtomate kiam li konektas al specifaj gastigantoj.
Kopiante dosierojn per SSH per SCP
La SSH-kliento venas kun du aliaj tre oportunaj iloj por kopii dosierojn ĉifrita ssh-konekto. Malsupre estas ekzemplo de tipa uzo de la komandoj scp kaj sftp. Notu, ke multaj el la opcioj por ssh validas ankaŭ por ĉi tiuj komandoj.
En ĉi tiu ekzemplo la dosiero miapic.png kopiita al fora servilo al dosierujo /media/datenoj kaj renomita al miapic_2.png.
Ne forgesu pri la diferenco en la haveno-parametro. Sur ĉi tio renkontas multajn, kiuj lanĉas scp de la komandlinio. Jen la haveno-parametro -Pkaj ne -pkiel en ssh-kliento! Vi forgesos, sed ne maltrankviliĝu, ĉiuj forgesas.
Por tiuj, kiuj konas konzolon ftp, multaj el la komandoj estas similaj en sftp. Vi povas fari puŝo, metis и lskiel via koro deziras.
sftp neo@remoteserver
Praktikaj ekzemploj
En multaj el ĉi tiuj ekzemploj, la rezulto povas esti atingita per malsamaj metodoj. Kiel en ĉiuj niaj lernolibroj kaj ekzemploj, oni preferas praktikajn ekzemplojn, kiuj nur faras la lertaĵon.
1. SSH-ŝtrumpetoj prokurilo
La funkcio de SSH Proxy estas numero 1 pro bona kialo. Ĝi estas pli potenca ol plej multaj homoj pensas kaj donas al vi aliron al ajna sistemo al kiu fora servilo havas aliron, uzante preskaŭ ajnan aplikaĵon. Ssh-kliento povas tuneli trafikon tra SOCKS-prokurilo per unu simpla komando. Gravas kompreni, ke trafiko al foraj sistemoj venos de fora servilo, kiel estos indikite en la retservilaj protokoloj.
Ĉi tie ni komencas ŝtrumpetprokurilon sur TCP-haveno 8888, la dua komando kontrolas, ke la haveno estas aktiva en aŭskulta reĝimo. 127.0.0.1 precizigas, ke la servo nur funkcias per localhost. Ni povas uzi iomete malsaman komandon por aŭskulti en ĉiuj interfacoj, inkluzive de ethernet aŭ wifi, ĉi tio permesos al aliaj aplikaĵoj (retumiloj, ktp.) en nia reto konektiĝi al la prokura servo per la prokurilo ssh socks.
Nun ni povas agordi la retumilon por konekti al la ŝtrumpeta prokurilo. En Firefox elektu Agordoj | Ĉefa | Retaj agordoj. Indiku la IP-adreson kaj pordon al kiu konektiĝi.
Atentu la opcion ĉe la malsupro de la formularo, por ke la DNS-demandoj de la retumilo ankaŭ trairu la SOCKS-prokurilon. Se vi uzas prokuran servilon por ĉifri retan trafikon en via loka reto, tiam vi verŝajne volos elekti ĉi tiun opcion por ke DNS-demandoj estu tuneligitaj per la SSH-konekto.
Aktivigo de ŝtrumpetaj prokurilo en Chrome
Lanĉi Chrome kun certaj komandliniaj opcioj ebligos la ŝtrumpetprokurilon kaj ankaŭ tuneli DNS-demandojn de la retumilo. Fidu sed kontrolu. Uzu tcpdump por kontroli ke DNS-demandoj ne plu estas videblaj.
Memoru, ke multaj aliaj aplikoj ankaŭ povas uzi ŝtrumpetajn prokurojn. La TTT-legilo estas simple la plej populara el ili ĉiuj. Iuj aplikaĵoj havas agordajn elektojn por aktivigi prokurilon. Aliaj bezonas iom da helpo kun helpa programo. Ekzemple, prokurĉenoj permesas vin trakuri ŝtrumpetojn-proxy Microsoft RDP, ktp.
La ŝtrumpetaj prokuraj agordaj parametroj estas fiksitaj en la agorda dosiero de proxychains.
Sugesto: ĉu vi uzas fora labortablo de Linukso al Vindozo? Provu Klienton FreeRDP. Ĉi tio estas pli moderna efektivigo ol rdesktop, kun multe pli milda interago.
Opcio uzi SSH per ŝtrumpetaj prokurilo
Vi sidas en kafejo aŭ hotelo - kaj estas devigita uzi sufiĉe nefidinda WiFi. De la tekkomputilo, ni lanĉas ssh-prokurilon loke kaj starigas ssh-tunelon al la hejma reto sur la loka Rasberry Pi. Uzante retumilon aŭ aliajn aplikojn agorditajn por ŝtrumpeta prokurilo, ni povas aliri ajnajn retajn servojn en nia hejma reto aŭ enreti per nia hejma konekto. Ĉio inter via tekkomputilo kaj via hejma servilo (per Wi-Fi kaj interreto al via hejmo) estas ĉifrita en SSH-tunelo.
2. SSH-tunelo (havena plusendado)
En ĝia plej simpla formo, SSH-tunelo simple malfermas havenon en via loka sistemo, kiu konektas al malsama haveno ĉe la alia fino de la tunelo.
Ni analizu la parametron -L. Ĝi povas esti opiniita kiel la loka aŭskultanta flanko. Tiel, en la supra ekzemplo, haveno 9999 aŭskultas ĉe la lokahost-flanko kaj plusendita sur haveno 80 al la fora servilo. Notu, ke 127.0.0.1 rilatas al localhost sur la fora servilo!
Ni supreniru la ŝtuparon. La sekva ekzemplo ligas aŭskultajn havenojn al aliaj gastigantoj en la loka reto.
En ĉi tiu ekzemplo, ni plusendas tunelon de fora servilo al retservilo funkcianta je 10.10.10.10. Trafiko de fora servilo al 10.10.10.10 ne plu en SSH-tunelo. La retservilo je 10.10.10.10 konsideros fora servilo kiel la fonto de retpetoj.
4. Inversa SSH-tunelo
Ĉi tie ni starigos aŭskultan havenon sur la fora servilo, kiu konektos reen al loka haveno sur nia loka gastiganto (aŭ alia sistemo).
Ĉi tiu SSH-sesio establas konekton de haveno 1999 sur la fora servilo al haveno 902 sur nia loka kliento.
5. SSH Reverse Proxy
En ĉi tiu kazo, ni agordas ŝtrumpetojn prokurilon sur nia ssh-konekto, tamen la prokurilo aŭskultas ĉe la fora fino de la servilo. Konektoj al ĉi tiu fora prokurilo nun eliras el la tunelo kiel trafiko de nia loka gastiganto.
Se vi havas problemojn por funkcii la forajn opciojn de SSH, kontrolu netstat, al kiuj aliaj interfacoj la aŭskulta haveno estas konektita. Kvankam ni indikis 0.0.0.0 en la ekzemploj, sed se la valoro GatewayPorts в sshd_config starigis al ne, tiam la aŭskultanto nur estos ligita al localhost (127.0.0.1).
Sekureca Averto
Bonvolu noti, ke dum malfermado de tuneloj kaj ŝtrumpetaj prokuriloj, internaj retaj rimedoj povas esti haveblaj al nefidindaj retoj (ekzemple, la Interreto!). Ĉi tio povas esti grava sekureca risko, do certigu, ke vi komprenas, kio estas aŭskultanto kaj al kio ĝi havas aliron.
6. Instalu VPN per SSH
Ofta termino inter atakantoj (pentestistoj, ktp.) estas "reta fulcro". Post kiam ligo estas establita sur unu sistemo, tiu sistemo iĝas la enirejo por plia aliro al la reto. Apogpunkto, kiu ebligas al vi moviĝi larĝe.
Por tia piedtenejo, ni povas uzi SSH-prokurilon kaj prokurĉenoj, tamen estas iuj limigoj. Ekzemple, ne eblos labori rekte kun ingoj, do ni ne povos skani havenojn ene de la reto per NmapSYN.
Uzante ĉi tiun pli altnivelan VPN-opcion, la konekto falas al nivelo 3. Ni povas tiam simple direkti trafikon tra la tunelo uzante norman retvojigon.
La metodo uzas ssh, iptables, tun interfaces kaj vojigo.
Unue vi devas agordi ĉi tiujn parametrojn sshd_config. Ĉar ni faras ŝanĝojn al la interfacoj de kaj la fora kaj klienta sistemoj, ni bezonas radikajn permesojn ambaŭflanke.
PermitRootLogin yes
PermitTunnel yes
Tiam ni establos ssh-konekton uzante la parametron, kiu petas la inicialigon de tun-aparatoj.
localhost:~# ssh -v -w any root@remoteserver
Ni nun havu tun-aparaton dum montrado de interfacoj (# ip a). La sekva paŝo aldonos IP-adresojn al la tunelaj interfacoj.
SSH-klienta flanko:
localhost:~# ip addr add 10.10.10.2/32 peer 10.10.10.10 dev tun0
localhost:~# ip tun0 up
SSH-servila flanko:
remoteserver:~# ip addr add 10.10.10.10/32 peer 10.10.10.2 dev tun0
remoteserver:~# ip tun0 up
Nun ni havas rektan vojon al alia gastiganto (route -n и ping 10.10.10.10).
Eblas direkti ajnan subreton tra la gastiganto sur la alia flanko.
localhost:~# route add -net 10.10.10.0 netmask 255.255.255.0 dev tun0
Eksplodo! VPN super SSH-tunelo ĉe retotavolo 3. Ĉi tio jam estas venko.
Se estas problemoj, uzu tcpdump и pingpor determini la kaŭzon. Ĉar ni ludas ĉe tavolo 3, niaj icmp-pakoj trairos ĉi tiun tunelon.
7. Kopiu SSH-ŝlosilo (ssh-copy-id)
Estas pluraj manieroj fari tion, sed ĉi tiu komando ŝparas tempon ne kopiante la dosierojn permane. Ĝi simple kopias ~/.ssh/id_rsa.pub (aŭ la defaŭltan ŝlosilon) de via sistemo al ~/.ssh/authorized_keys sur fora servilo.
localhost:~$ ssh-copy-id user@remoteserver
8. Fora komanda ekzekuto (ne-interaga)
teamo ssh povas esti ligita al aliaj komandoj por la kutima uzant-amika interfaco. Nur aldonu la komandon, kiun vi volas ruli sur la fora gastiganto kiel la lastan parametron inter citiloj.
En ĉi tiu ekzemplo grep estas ekzekutita en la loka sistemo post kiam la protokolo estis elŝutita per la ssh-kanalo. Se la dosiero estas granda, estas pli oportune ruliĝi grep sur la fora flanko simple enmetante ambaŭ komandojn inter citiloj.
Alia ekzemplo plenumas la saman funkcion kiel ssh-copy-id el ekzemplo 7.
Mi prenis unu el niaj tcpdump ekzemploj. Uzu ĝin por kapti pakaĵetojn malproksime kaj resendi la rezulton rekte al la GUI de via loka Wireshark.
:~$ ssh root@remoteserver 'tcpdump -c 1000 -nn -w - not port 22' | wireshark -k -i -
10. Kopiante lokan dosierujon al fora servilo per SSH
Bela lertaĵo per kiu kunpremas dosierujon bzip2 (ĉi tio estas la opcio -j en la komando tar) kaj poste prenas la rivereton bzip2 aliflanke, kreante duplikatan dosierujon sur la fora servilo.
Se kaj la kliento kaj la fora servilo havas "x" instalitan, tiam vi povas malproksime ekzekuti GUI-komandon, kun fenestro sur via loka labortablo. Ĉi tiu funkcio ekzistas delonge, sed ankoraŭ estas tre utila. Lanĉu malproksiman retumilon aŭ eĉ VMWawre Workstation-konzolon kiel mi faras en ĉi tiu ekzemplo.
localhost:~$ ssh -X remoteserver vmware
Ŝnuro bezonata X11Forwarding yes en dosiero sshd_config.
12. Foraj kopiaj dosieroj uzante rsync kaj SSH
rsync multe pli oportuna scpse vi bezonas periodan sekurkopion de dosierujo, granda nombro da dosieroj, aŭ tre grandaj dosieroj. Estas funkcio por rekuperi post malsukceso de translokigo kaj kopii nur ŝanĝitajn dosierojn, kio ŝparas trafikon kaj tempon.
Ĉi tiu ekzemplo uzas kunpremadon gzip (-z) kaj arkivreĝimo (-a), kiu ebligas rekursivan kopiadon.
Torsokoj uzos la havenon 9050 sur localhost por la prokurilo. Kiel ĉiam kiam vi uzas Tor, vi devas serioze kontroli kian trafikon tunelas kaj aliajn problemojn pri operacia sekureco (opsec). Kien viaj DNS-petoj iras?
14. SSH al EC2-instanco
Necesas privata ŝlosilo por konekti al EC2-instanco. Elŝutu ĝin (.pem etendo) de la kontrolpanelo de Amazon EC2 kaj ŝanĝu la permesojn (chmod 400 my-ec2-ssh-key.pem). Konservu la ŝlosilon en sekura loko aŭ metu ĝin en vian dosierujon ~/.ssh/.
Parametro -i simple diras al la ssh-kliento uzi tiun ŝlosilon. Dosiero ~/.ssh/config ideala por aŭtomate agordi ŝlosilan uzadon dum konekto al ec2-gastiganto.
Host my-ec2-public
Hostname ec2???.compute-1.amazonaws.com
User ubuntu
IdentityFile ~/.ssh/my-ec2-key.pem
15. Redaktu tekstajn dosierojn per VIM per ssh/scp
Por ĉiuj amantoj vim ĉi tiu konsileto ŝparos al vi iom da tempo. Uzante vim dosieroj estas redaktitaj per scp per unu komando. Ĉi tiu metodo simple kreas la dosieron loke en /tmp, kaj tiam kopias ĝin reen post kiam ni konservis ĝin vim.
localhost:~$ vim scp://user@remoteserver//etc/hosts
Noto: la formato estas iomete malsama al la kutima scp. Post la gastiganto ni havas duoblon //. Ĉi tio estas absoluta vojo-referenco. Ununura oblikvo signifos, ke la vojo estas relativa al la hejma dosierujo users.
Defaŭlte, se ekzistas ekzistanta konekto al fora servilo uzante ssh dua ligo kun ssh aŭ scp establas novan sesion kun plia aŭtentigo. Opcio ControlPath permesas al vi uzi ekzistantan sesion por ĉiuj postaj konektoj. Ĉi tio signife akcelos la procezon: la efiko estas videbla eĉ en la loka reto, kaj des pli kiam ligite al foraj rimedoj.
Host remoteserver
HostName remoteserver.example.org
ControlMaster auto
ControlPath ~/.ssh/control/%r@%h:%p
ControlPersist 10m
ControlPath specifas la ingon por novaj konektoj por kontroli aktivan seancon ssh. La lasta opcio signifas, ke eĉ post elsalutiĝo el la konzolo, la ekzistanta sesio restos malfermita dum 10 minutoj, do dum tiu tempo vi povas rekonekti sur la ekzistanta ingo. Vidu helpon por pliaj informoj. ssh_config man.
18. Flui video super SSH kun VLC kaj SFTP
Eĉ delongaj uzantoj ssh и vlc (Video Lan Kliento) ne ĉiam scias pri ĉi tiu oportuna opcio kiam vi vere bezonas spekti videon tra la reto. En agordoj dosiero | Malfermu Network Stream programoj vlc vi povas enigi la lokon kiel sftp://. Se pasvorto estas postulata, oni petos vin.
sftp://remoteserver//media/uploads/myvideo.mkv
19. Dufaktora aŭtentigo
La sama dufaktora aŭtentigo kiel via banka konto aŭ Google-konto validas por la SSH-servo.
Kompreneble, ssh komence havas dufaktoran aŭtentikigfunkcion, kio signifas pasvorton kaj SSH-ŝlosilon. La avantaĝo de aparatara ĵetono aŭ Google Authenticator-programo estas, ke ĝi kutime estas malsama fizika aparato.
La ĉefa afero ĉi tie estas kompreni, ke ĉi tio ne similas al la komando ssh host1tiam user@host1:~$ ssh host2 kaj tiel plu.La opcio -J lerte uzas plusendon por ke localhost establas kunsidon kun la sekva gastiganto en la ĉeno. Do en la supra ekzemplo, nia loka gastiganto aŭtentikigas al host4. Tio estas, niaj lokalhost-ŝlosiloj estas uzataj, kaj la sesio de localhost ĝis host4 estas plene ĉifrita.
Por tia ŝanco ssh_config specifu agordan opcion ProxyJump. Se vi regule devas iri tra pluraj gastigantoj, tiam aŭtomatigo per la agordo ŝparos multan tempon.
21. Blokado de SSH-krudfortaj provoj kun iptables
Ĉiu, kiu administris SSH-servon kaj rigardis la protokolojn, konscias pri la nombro da krudfortaj provoj, kiuj okazas ĉiun horon de ĉiu tago. Rapida maniero redukti ŝtipbruon estas movi SSH al ne-norma haveno. Faru ŝanĝojn al la dosiero sshd_config uzante agordan opcion Haveno##.
Kun la helpo de iptables vi ankaŭ povas facile bloki provojn de konekto al haveno kiam certa sojlo estas atingita. Facila maniero fari ĉi tion estas uzi OSSEC, ĉar ĝi ne nur blokas SSH, sed elfaras amason da aliaj hostname-bazitaj entruddetekto (HIDS) mezuroj.
22. SSH-Escape por Ŝanĝi Haven-Sendadon
Kaj nia lasta ekzemplo ssh desegnita por ŝanĝi havensendadon sur la flugo ene de ekzistanta sesio ssh. Imagu tian scenaron. Vi estas profunde en la reto; eble saltis tra duondekduo da gastigantoj kaj bezonas lokan havenon sur la laborstacio, kiu estas plusendita al la Microsoft SMB de malnova Windows 2003 sistemo (ĉu iu memoras ms08-67?).
Klakante enter, provu tajpi en konzolo ~C. Ĉi tio estas seanca eskapa sekvenco, kiu ebligas al vi fari ŝanĝojn al ekzistanta konekto.
Ĉi tie vi povas vidi, ke ni plusendis nian lokan havenon 1445 al Windows 2003 gastiganto, kiun ni trovis en la interna reto. Nun nur kuru msfconsole, kaj vi estas bona por iri (supoze ke vi planas uzi ĉi tiun gastiganton).
Kompletigo
Ĉi tiuj ekzemploj, konsiletoj kaj komandoj ssh devus doni deirpunkton; Pliaj informoj pri ĉiu el la komandoj kaj funkcioj estas haveblaj sur la manpaĝoj (man ssh, man ssh_config, man sshd_config).
Mi ĉiam estis fascinita de la kapablo aliri sistemojn kaj plenumi komandojn ie ajn en la mondo. Disvolvante viajn kapablojn per iloj kiel ssh vi fariĝos pli efika en kia ajn ludo vi ludas.