Ero sivun ”SSH” versioiden välillä

Siirry navigaatioon Siirry hakuun
5 458 merkkiä lisätty ,  22. tammikuuta 2008
tietoturvaan liittyviä lisäyksiä
(parempi, kakkosta ei tarvitakaan)
(tietoturvaan liittyviä lisäyksiä)
Rivi 17: Rivi 17:


== Graafiset ohjelmat ==
== Graafiset ohjelmat ==
Jos halutaan ajaa [[X]]-ohjelmia SSH:n kautta on komentoon sisällyttävä parametri <tt>-X</tt>, esimerkiksi näin:
Jos halutaan ajaa [[X]]-ohjelmia SSH:n kautta on komentoon sisällyttävä parametri <tt>-X</tt> ([[#X:n tietoturva|tietoturvasyistä]] tämä ei yleensä ole oletuksena), esimerkiksi näin:
  ssh -X guru@linuxburken.firma.example
  ssh -X guru@linuxburken.firma.example


Rivi 23: Rivi 23:
  ssh -X -C guru@linuxburken.firma.example
  ssh -X -C guru@linuxburken.firma.example


Jotta graafisten ohjelmien käyttäminen onnistuisi, on sshd:n asetustiedostossa (<tt>/etc/ssh/sshd_config</tt>) oltava rivi
Jotta graafisten ohjelmien käyttäminen onnistuisi, on sshd:n (etäkoneen) asetustiedostossa (<tt>/etc/ssh/sshd_config</tt>) oltava rivi
  ForwardX11 yes
  ForwardX11 yes
Oletuksena tämä arvo on <tt>no</tt>.
Oletuksena tämä arvo on <tt>no</tt>, vaikkakaan tällä ei ole suurempaa merkitystä ''palvelinkoneen'' turvallisuudelle.
 
Jotta yhteystyö, esimerkiksi tekstin kopioiminen leikepöydän kautta, toimisi normaaliin tapaan paikallisten ja palvelimella ajettavien sovellusten välillä joutuu lisäksi hyväksymään "ForwardX11Trusted", komentorivillä <code>-Y</code>. Sekä tavallinen että varsinkin luotettu X-edelleenohjaus antaa vieraalle koneelle mahdollisuuden käyttää hyväkseen X-sovellusten välistä melko heikkoa tietoturvaa. Katso [[#X:n tietoturva|X:n tietoturva]] alla.
 
Oletusasetukset ForwardX11 ja ForwardX11Trusted voi asettaa tiedostoissa /etc/ssh_config ja /etc/.ssh/config, haluttaessa kone- ja verkkokohtaisesti:
 
Host *.luotettuverkko.example.org,omakone.example.net
  ForwardX11 yes
  ForwardX11Trusted yes
Host muu-x-palvelin.example.com
  ForwardX11 yes
  ForwardX11Trusted no
Host *
  ForwardX11 no
  ForwardX11Trusted no


== Yhteyksien uusiokäyttö ==
== Yhteyksien uusiokäyttö ==
Rivi 51: Rivi 65:
  ssh-keygen -t rsa
  ssh-keygen -t rsa


*Tässä vaiheessa ssh-keygen kysyy polkua ja salasanaa avaimelle. Oletuspolku (~/.ssh/id_rsa) käy hyvin, mutta salasanaa on syytä käyttää, sillä tämän jälkeen koneellasi ei enää tarvita salasanaa tälle palvelimelle paikallisella käyttäjälläsi kirjauduttaessa. Myös <tt>id_rsa</tt>-tiedoston turvallisuudesta on pidettävä huolta, sillä sen avulla kuka tahansa voi kirjautua käyttämillesi palvelimille tunnuksillasi.
*Tässä vaiheessa ssh-keygen kysyy salasanaa avaimelle ja mahdollisesti polkua. Oletuspolkua (~/.ssh/id_rsa) ei yleensä pidä muuttaa, mutta salasana lisää turvallisuutta oleellisesti, jos joku pääsee käsiksi avaintiedostoon. Salasana saa olla mielivaltaisen pitkä. Tiedoston <tt>id_rsa</tt> turvallisuudesta on pidettävä huolta, sillä sen avulla kuka tahansa voi kirjautua käyttämillesi palvelimille tunnuksillasi (murrettuaan mahdollisen salasanan).
 
*Sitten kopioidaan julkinen osa kaikille palvelimille missä tätä avainparia halutaan hyödyntää. Huomaa, että <tt>authorized_keys</tt>-tiedostossa jokaisella rivillä määritetään yksi avain. Jos et ole aiemmin käyttänyt tätä menetelmää, tiedostoa ei ole, ja oman julkisen avaimen kopioiminen etäkoneen <tt>authorized_keys</tt>-tiedostoksi ei tuota ongelmia.
*Sitten kopioidaan julkinen osa kaikille palvelimille missä tätä avainparia halutaan hyödyntää. Huomaa, että <tt>authorized_keys</tt>-tiedostossa jokaisella rivillä määritetään yksi avain. Jos et ole aiemmin käyttänyt tätä menetelmää, tiedostoa ei ole, ja oman julkisen avaimen kopioiminen etäkoneen <tt>authorized_keys</tt>-tiedoston päälle ei tuota ongelmia.
  [[scp]] ~/.ssh/id_rsa.pub palvelin:/home/kayttaja/.ssh/authorized_keys
  [[scp]] ~/.ssh/id_rsa.pub palvelin:/home/kayttaja/.ssh/authorized_keys
Mikäli sinulla on jo ennestään etäkoneessa <tt>~/.ssh/authorized_keys2</tt>-tiedosto, voit komentaa näin:
Mikäli sinulla on jo ennestään etäkoneessa <tt>~/.ssh/authorized_keys2</tt>-tiedosto, voit komentaa näin:
  [[cat]] ~/.ssh/id_rsa.pub | ssh käyttäjä@etäkone '[[cat]] >> ~/.ssh/authorized_keys'
  [[cat]] ~/.ssh/id_rsa.pub | ssh käyttäjä@etäkone '[[cat]] >> ~/.ssh/authorized_keys'


*Nyt voit kirjautua kaikille palvelimille, joille olet julkisen avaimesi kopioinut ilman salasanaa (tai siis avainparin salasanaa käyttäen).
*Nyt voit kirjautua kaikille palvelimille, joille olet julkisen avaimesi kopioinut käyttämättä palvelimen salasanaa. Salasanan ei siis enää tarvitse olla helposti muistettava &ndash; ja salasanalla kirjautumisen sshd:n kautta voi kieltää kokonaan. Käyttäen ohjelmaa ssh-agent säästytään myös avaintiedoston salasanan antamisesta, paitsi kerran X- tai pääteistunnon alussa, ssh-agentin käynnistämisen yhteydessä.
 
Jos haluaa kirjautua automaattisesti, esimerkiksi cron-työn yhteydessä, joutuu käyttämään salasanatonta avaintiedostoa. Tähän käyttöön voi luoda rinnakkaisen avaimen, jota pidetään eri tiedostossa (johon viitataan ssh:n vivulla <code>-i</code>) ja avaimen valtuuksia voi rajoittaa laittamalla tiedoston authorized_keys tämän avaimen kohdalle rivin alkuun "optioita", esimerkiksi (huomaa pilkkujen, lainausmerkkien ja välilyöntien käyttö):
from="*.kotiverkko.example.org,työkoneeni.example.com",no-port-forwarding,no-X11-forwarding jatässäitsejulkinenavainkaikkinensa


== Tunneli ==
== Tunneli ==
SSH:n avulla voi tunneloida minkä tahansa TCP-portin käytettäväksi verkon yli. Tämä tapahtuu sovelluksille läpinäkyvästi, joten se tarjoaa hienon mahdollisuuden parantaa tietoturvaa tilanteissa, joissa itse sovelluksen muokkaaminen ei ole mahdollista tai käytännöllistä. Seuraavassa esimerkissä tunneloidaan paikallisen koneen ([[localhost]]) portti 123 SSH:lla niin, että sen kautta voi käyttää etäkoneen porttia 1337.
SSH:n avulla voi tunneloida minkä tahansa TCP-portin käytettäväksi verkon yli. Tämä tapahtuu sovelluksille läpinäkyvästi, joten se tarjoaa hienon mahdollisuuden parantaa &ndash; tai huonontaa &ndash; tietoturvaa tilanteissa, joissa tietyn sovelluksen muokkaaminen ei ole mahdollista tai käytännöllistä. Seuraavassa esimerkissä tunneloidaan paikallisen koneen ([[localhost]]) portti 123 SSH:lla niin, että sen kautta voi käyttää etäkoneen porttia 1337.
  ssh -L 1337:localhost:123 etäkone
  ssh -L 1337:localhost:123 etäkone
Tunnelia ei ole pakko tehdä localhostiin, vaan mikä tahansa kone käy. Näin voit esimerkiksi päästä käsiksi sisäverkkoihin, joihin et suoraan Internetistä pääse. Esimerkki:  
Tunnelia ei ole pakko tehdä localhostiin, vaan mikä tahansa kone käy. Näin voit esimerkiksi päästä käsiksi sisäverkkoihin, joihin et suoraan Internetistä pääse. Esimerkki:  
  ssh -L 1337:192.168.6.12:123 etäkone
  ssh -L 1337:192.168.6.12:123 etäkone


== Käänteinen tunneli ==
=== Käänteinen tunneli ===
Käänteisen tunnelin idea on sama kuin normaalinkin tunnelin, mutta se käynnistetään toisesta päästä. Käänteinen tunneli mahdollistaa vaikkapa palomuurin takana olevan koneen etäylläpidon. Seuraavassa esimerkissä tunneloidaan paikallisen koneen portti 123 SSH:lla niin, että se on käytettävissä etäkoneelta portissa 1337.
Käänteisen tunnelin idea on sama kuin normaalinkin tunnelin, mutta se käynnistetään toisesta päästä. Käänteinen tunneli mahdollistaa vaikkapa palomuurin takana olevan koneen etäylläpidon. Seuraavassa esimerkissä tunneloidaan paikallisen koneen portti 123 SSH:lla niin, että se on käytettävissä etäkoneelta portissa 1337.
  ssh -R 1337:localhost:123 etäkone
  ssh -R 1337:localhost:123 etäkone
Rivi 72: Rivi 88:
==Tietoturva==
==Tietoturva==
SSH-yhteys on salattu, mutta ei pidä tuudittautua valheellisen turvallisuuden tunteeseen, sillä erilaisia hyökkäyskeinoja löytyy. Lue artikkelista [[SSH-turvatoimet]] vinkkejä SSH-palvelimesi turvaamiseen.
SSH-yhteys on salattu, mutta ei pidä tuudittautua valheellisen turvallisuuden tunteeseen, sillä erilaisia hyökkäyskeinoja löytyy. Lue artikkelista [[SSH-turvatoimet]] vinkkejä SSH-palvelimesi turvaamiseen.
Salaus auttaa siiihen, ettei verkkoa passiivisesti salakuunteleva pysty seuraamaan liikennettä ja ettei sitä pystytä muokkaamaan. Edellinen voi myös olla tietoturvaongelma, sillä yrityksen palomuurikaan ei pysty erottamaan ongelmallista liikennettä sallittusta.
===Koneiden avaimet===
SSH estää koneitten avainten avulla vieraan koneen esiintymisen luotettuna palvelimena (nimipalvelinhyökkäysten tms. avulla). ssh varoittaa, jos avaimet eivät täsmää. Varoituksesta ei ole hyötyä, jos siitä ei välitä, joten on oleellista kopioida koneitten avaimet /etc/ssh_host*_key.pub omalle koneelle tiedostoon /etc/ssh/ssh_known_hosts tai ~/.ssh/known_hosts.
Avainriville pitää lisätä myös koneesta mahdollisesti käytettävät aliakset
kone.example.com,kone,alias,alias.example.com,192.168.0.1 itseavainkaikkinensa
Varoituksen yhteydessä ssh kertoo koneen avaimen "sormenjäljen", jonka voi verrata oikean avaimen sormenjälkeen jopa puhelimitse. Jos vain yhden koneen kanssa on ongelmia, ssh-yhteyden voi ottaa toiselle koneelle toiseen verkkoon ja yrittää yhteyttä sitä kautta. Jos tältä koneelta katsottuna vieraan koneen sormenjälki on sama kuin omastakin koneesta katsottuna, kyseessä ei ole paikallinen nimipalvelinhuijaus.
===Murtautuminen===
Se, että ssh-liikenne on salattua, ei estä murtautumaasta ssh-palvelimen kautta suoraan. Itse palvelimessa ei ole ollut kovin paljon reikiä, mutta heikkoja salasanoja voi hyödyntää ssh-palvelimen kautta. Joissakin [[jakelu]]issa palvelin on oletuksena päällä, koska koneita on tarkoitettu etäylläpidettäviksi. Tällöin on tärkeää rajoittaa miltä koneilta ja mille tunnuksille ssh:lla pystyy kirjautumaan ja varmistamaan, että näillä tunnuksilla on hyvät salasanat &ndash; ellei salasanalla kirjautumista ssh:lla estetä kokonaan (katso [[#Tunnistaminen avainpareilla|tunnistaminen avainpareilla]] yllä).
Katso myös [[SSH-turvatoimet]].
===X:n tietoturva===
Samalla [[X]]-palvelimella ajettavat ohjelmat luottavat yleensä toisiinsa ja X-palvelin luottaa ohjelmiin. Jos jossakin ohjelmassa on [[troijan hevonen]], se pystyy esimerkiksi valtaamaan leikepöydän juuri ennen sen sisällön kopioimista komentoriville ja siten ajamaan mielivaltaisia komentoja, tai luomaan läpinäkyvän näytön kokoisen ikkunan ja sen kautta salakuuntelemaan näppäimistöä. Tämä ei yleensä ole ongelma, sillä jos jokin ajettava ohjelma on trojan hevonen, se pystyy myös käyttämään tunnuksen oikeuksia suoraan. Verkon yli ajettaessa yhden koneen trojan hevonen voi kuitenkin siirtyä myös samaa X-palvelinta käyttäville muille koneille.
Jotta voisi käyttää myös heikomman tietoturvan koneita tai koneita, joiden ylläpitoon ei luota, ssh ei yleensä pyytämättä anna toisella koneella ajettavien ohjelmien käyttää paikallista X-palvelinta. Nykyisissä X-palvelimissa on myös mahdollista rajoittaa X:n käyttöä niin, että jotkut, tässä tilanteessa vaarallisiksi huomatut toiminnot ei ole vieraan ohjelman käytettävissä.
Jos etäyhteydessä ei ole tarkoituksena ajaa graafisia ohjelmia, X-yhteyttä ei siis kannata muodostaa. Jos käyttää graafisia ohjelmia, mutta epäilee etäkoneen tietoturvaa, X:n voi sallia vain kohtuullisen turvaallisesti koetuin osin.
ssh -x kone-ilman-x-ohjelmia.example.org
ssh -X kone-jossa-x-ohjelmia.example.org
ssh -X -Y kone-johon-luottaa.example.org


==SSH välityspalvelimen läpi==
==SSH välityspalvelimen läpi==
Rivi 89: Rivi 132:


   cat kotisivut.tar.bz2 | ssh toinen.kone.fi 'cd public_html && tar xjvf -'
   cat kotisivut.tar.bz2 | ssh toinen.kone.fi 'cd public_html && tar xjvf -'
Vastaava [[Varmuuskopiointi#rsync|perusteellisempi esimerkki]] löytyy artikkelissa varmuuskopioinnista.


==Katso myös==
==Katso myös==
785

muokkausta

Navigointivalikko