Differences between revisions 28 and 29
Revision 28 as of 2007-08-05 13:25:07
Size: 5884
Editor: Epeli
Comment: edellinen
Revision 29 as of 2007-08-17 16:34:35
Size: 6986
Editor: Epeli
Comment: DSA->RSA, paljon siivousta ja lisäsin keychain jutun.
Deletions are marked like this. Additions are marked like this.
Line 7: Line 7:
# apt-get install openssh-server $ sudo apt-get install openssh-server
Line 11: Line 11:
 1. Avaa tekstieditorissa tiedosto '''/etc/ssh/sshd_config'''
 {{{
# gedit /etc/ssh/sshd_config
}}}
 1. Avaa tekstieditorissa pääkäyttäjän oikeuksin (sudo) tiedosto '''/etc/ssh/sshd_config'''
Line 18: Line 15:
 1. lisää tiedoston loppupuolelle rivi joka alkaa avainsanalla '''!AllowUsers''' ja listataan sen perään välilyönnillä erotettuna käyttäjät jotka saavat ottaa koneeseen yhteyden:  1. Halutessasi voit rajoittaa ssh:n käyttöoikeuden tietyille käyttäjille. Lisää tiedoston loppupuolelle rivi joka alkaa avainsanalla '''!AllowUsers''' ja listataan sen perään välilyönnillä erotettuna käyttäjät jotka saavat ottaa koneeseen yhteyden:
Line 24: Line 21:
# /etc/init.d/ssh restart $ sudo /etc/init.d/ssh restart
Line 27: Line 24:
Line 30: Line 28:
 1. avaa tiedosto '''/etc/ssh/sshd_config'''
 {{{
# gedit /etc/ssh/sshd_config
}}}

 1. etsi kohdat
 1. Avaa taas tiedosto pääkäyttäjän oikeuksin '''/etc/ssh/sshd_config'''

 1. Etsi kohdat
Line 42: Line 38:
Huomaat, että kukaan ei pääse sisään, itse asiassa kukaan ei pääse edes yrittämään salasanan arvaamista. Nyt onkin tosi turvallista, mutta mitenkäs siihen sitten oikein pääsee sisälle...Käyttäjien pitää luoda itselleen avaimet joita tulee kaksi kappaletta, '''julkinen''' ja '''yksityinen'''. '''julkinen''' avain pitää toimittaa koneelle johon ollaan loggautumassa ja yksityinen avain pitää lisätä käyttäjän kotihakemistossa olevaan hakemistoon .ssh tiedostoon authorized_keys aivan kuten tuolla konffissa määrittelimme. Huomaat, että kukaan ei pääse sisään, itse asiassa kukaan ei pääse edes yrittämään salasanan arvaamista. Nyt onkin tosi turvallista, mutta mitenkäs siihen sitten oikein pääsee sisälle... Käyttäjien pitää luoda itselleen avaimet joita tulee kaksi kappaletta, '''julkinen''' ja '''yksityinen'''. '''Julkinen''' avain pitää toimittaa koneelle johon ollaan loggautumassa ja yksityinen avain pitää lisätä käyttäjän kotihakemistossa olevaan hakemistoon '''.ssh''' tiedostoon '''authorized_keys''' aivan kuten tuolla konffissa määrittelimme.
Line 44: Line 40:
Windows-käyttäjä voi luoda avaimen putty:n tarjoamalla softalla nimeltä puttygen. suosittelen generoimaan DSA-tyyppisen avaimen jonka pituus on vähintään 1024, mutta mielellään 2048 bittiä. Windows-käyttäjä voi luoda avaimen putty:n tarjoamalla softalla nimeltä puttygen. suosittelen generoimaan RSA-tyyppisen avaimen jonka pituus on vähintään 1024, mutta mielellään 2048 bittiä.
Line 48: Line 44:
 Luodaan dsa-tyyppisen avainpari jonka pituus on 2048 bittiä päätteessä komentamalla:  Luodaan rsa-tyyppisen avainpari jonka pituus on 2048 bittiä päätteessä komentamalla:
Line 50: Line 46:
 . {{{
$ ssh-keygen -t dsa
 {{{
$ ssh-keygen -t rsa
Line 53: Line 49:
kannattanee hyväksyä tiedostojen oletussijainti ~/.ssh/id_dsa ja ~/.ssh/id_dsa.pub. noista jälkimmäinen on se julkinen avain (public) joka pitää toimittaa palvelimelle. tuo ohjelma kysyy myös salasanaa joka liitetään avaimeen ja jota käytetään jatkossa avaimen kanssa loggautuessa (se voi olla eri kuin käyttäjän kohdekoneen salasana). Kannattanee hyväksyä tiedostojen oletussijainti '''~/.ssh/id_rsa''' ja '''~/.ssh/id_rsa.pub'''. Noista jälkimmäinen on se julkinen avain (public) joka pitää toimittaa palvelimelle. Tuo ohjelma kysyy myös salasanaa joka liitetään avaimeen ja jota käytetään jatkossa avaimen kanssa loggautuessa (se voi olla eri kuin käyttäjän kohdekoneen salasana). 
Line 57: Line 53:
 Yksityisen avaimen lisääminen tapahtuu vaikkapa näin: === Julkisen avaimen lisääminen palvelimelle ===
Line 59: Line 55:
 . {{{
cat <avain> >> /home/<käyttäjä>/.ssh/authorized_keys
 1. Kopioidaan avain palvelimelle
 {{{
$ scp ~/.ssh/id_rsa.pub tunnus@palvelin:/home/tunnus
Line 62: Line 59:
nyt loggamista avaimeen liitetyn salasanan kanssa voi jo yrittää ja sen pitäisi onnistua. toisaalta murtautujan jolla ei ole privaattiavainta, pitäisi sisään päästäkseen arvata käyttäjätunnus, käyttäjän 1024 bittinen privaattiavain ja avainta vastaava salasana. heikolta näyttää murtautujan puolesta.  1. Kirjaudutaan palvelimelle
 {{{
$ ssh tunnus@palvelin
}}}
 1. Lisätään avain
 {{{
$ cat id_rsa.pub >> .ssh/authorized_keys
}}}
 1. Ja lopuksi kannattanee vielä poistaa turha avaintiedosto palvelimelta
 {{{
$ rm id_rsa.pub
}}}
Line 64: Line 72:
== Käyttövinkkejä ==
linuxissa tuota privaattiavainta osataan käyttää/tarjota automaattisesti jos se on tallennettu tuonne oletussijaintiin, windowsissa sovellukselle pitää kertoa missä käytettävä avain on (sitä varten sovelluksessa on joku kenttä).
Line 67: Line 73:
Windows-sovelluksia ja GFTP:tä käytetään kuten mitä tahansa FTP-ohjelmaa, mutta Nautilus ja Konqueror toimivat hitusen eri tavalla. Tämän saman tempun voi tehdä siis niin monelle palvelimelle kuin haluaa tällä samalla id_rsa.pub -tiedostolla. Nyt sinun pitäisi pystyä kirjautumaan niille kaikille palvelimille sillä salasanalla jonka asetit tuolle avaimelle.
Line 69: Line 75:
Nautiluksessa etäyhteys otetaan vaikkapa Places -> Connect to Server... valinnan kautta. Service type on SSH, porttia ei tarvitse antaa mutta se on 22 ellei serveri ole konffattu muuhun porttiin, ja loput kohdat ovatkin selviä. Ssh osaa siis käyttää suoraan tuota id_rsa-privaatti avainta kunhan se on tallennettu oletussijaintiin. Jos haluat käyttää muualle tallennettua avainta niin se onnistuu -i vivulla:
 {{{
$ ssh tunnus@palvelin -i /polku/yksityiseen/avaimeen
}}}
Line 71: Line 80:
toinen vaihtoehto on painaa Nautiluksen avoimen ikkunan päällä <ctrl> + l ja kirjoittamalla riville '''sftp://<käyttäjätunnus>@<palvelin>''' ja enteriä. tuota käyttäjätunnusta ja sen jälkeen olevaa @:iä ei tarvita jos käyttäjätunnus on sama molemmilla koneilla.
Line 73: Line 81:
Breezyssä avattuihin yhteyksiin voikin tehdä bookmarkkeja jolloin niihin pääsen helposti käsiksi myöhemmin. == Keychain ==
Line 75: Line 83:
Konquerorilla homma onnistuu ainakin kirjoittamalla osoiteriville fish://<käyttäjätunnus>@<palvelin> ja tässäkään ei tarvita välttämättä tuota käyttäjätunnusta ja @:iä. Kun käytössä alkaa olla useita palvelimia, niin ainainen salasanojen syöttäminen alkaa tuntua turhauttavalta ja tulee tarve vähentää niitä. Helppo, mutta typerä ratkaisu olisi tehdä avainpari ilman salasanaa, jolloin kirjautumiseen ei koskaan tarvittaisi salasanaa. Tämä olisi tosin äärimmäisen epäturvallista, sillä jos joku saa käsiisi sinun id_rsa-tiedoston hän pystyisi kirjautumaan kaikkille niille palvelimille joille olet asettanu sen.

Kun sinulla on julkisella avaimella kirjautuminen käytössä voidaan hommaa helpottaa komenolla '''ssh-add ~/.ssh/id_rsa''' joka kysyy avaimen salasanan ja ottaa sen talteen '''ssh-agent'''-palveluun jonka jälkeen sinun ei enää tarvitse syöttää sitä vastaavaa salasanaa, mutta tämä toimii vai yhdessä terminaalisessiossa kerrallaan joten hyöty jää melko minimaaliseksi. Tätä korjaamaan otamme scriptin nimeltä Keychain.

 Aloitetaan asentamalla se
 {{{
$ sudo apt-get install keychain
}}}

 Avaa tekstieditoriin '''~/.bashrc'''
 Laita sinne seuraavat rivit
 {{{
keychain --nogui id_rsa id_dsa
. ~/.keychain/`uname -n`-sh
}}}
'''id_dsa''':n tilalle voit toki suorankin polun privaattiavaimeesi. Siihen voi myös laittaa argumentiksi useammankin avaimen mikäli sille on tarvetta.

Tämän jälkeen ainakin kun avaa uuden terminaalin ajetaan tuo keychain scripti. Se käynnistää ssh-agentin mikäli se ei ole käynnissä ja ensimmäisellä kerralla kysyy avaimen salasanaa. Tämän jälkeen voit avata niin monta terminaalia kuin haluat kirjautua niillä haluamillesi palvelimille.

Kun lopetat työskentelyn, niin voit sulkea ssh-agentin komennolla:
{{{
ssh-agent -k
}}}
Tämän jälkeen kirjautujalta kysytään taas normaalisi avaimen salasanaa.



SSH ja SFTP-palvelimen asennus

SSH:hän on tietoturvaltaan erittäin hyvä tapa ottaa etäyhteyksiä. SFTP puolestaan on tarkoitettu tiedonsiirtoon aivan kuten FTP, mutta se käyttää yhteyden (ja yhteydenoton) salaamiseen SSH:n tarjoamaan turvaa. tosin myös ssh:iä kannattaa käyttää versiota 2 jonka mukana tuo SFTP:kin tuli, aikaisemman version yhteydessä SFTP:n tilalla käytettiin vähän vähemmän toiminnallisuutta tarjoavaa SCP:ä.

Palvelimen asennus

  1. Avaa pääte ja komenna
    $ sudo apt-get install openssh-server

    SSH-palvelin käynnistyy samalla kuin se asennetaan, joten siihen voi heti yrittää ottaa yhteyttä joko SSH:llä tai SFTP:lla.Nythän kuka tahansa joka näkee koneen ulkoisen IP:n pystyy yrittämään koneelle sisään arvaamalla käyttäjätunnuksen ja salasanan. Ubuntussa ei onneksi ole rootin tiliä aktivoituna, joten siihen kohdistuvat yritykset ovat luonnollisesti turhia. Muutenkin nuo madot yrittävät yleensä arvailla englantilaisia erisnimiä, joten suomalaisilla koneilla niitä ei useinkaan onnista. Olisi kuitenkin mukavaa jos pystyisi määräämään ketkä saavat ottaa koneelle yhteyttä, ja sen toki pystyykin tekemään seuraavasti:

  2. Avaa tekstieditorissa pääkäyttäjän oikeuksin (sudo) tiedosto /etc/ssh/sshd_config

  3. etsi kohta PermitRootLogin yes ja muuta sen arvoksi no

  4. Halutessasi voit rajoittaa ssh:n käyttöoikeuden tietyille käyttäjille. Lisää tiedoston loppupuolelle rivi joka alkaa avainsanalla AllowUsers ja listataan sen perään välilyönnillä erotettuna käyttäjät jotka saavat ottaa koneeseen yhteyden:

    AllowUsers janne mikk0 ninnnu
  5. tallenna tiedosto ja käynnistä palvelin uudestaan komentamalla:
    $ sudo /etc/init.d/ssh restart
    Nyt koneelle pääsee vain tunnuksilla janne, mikk0 ja ninnnu Tällä tietoturvatasolla voi aloittaa. Kannattaa kuitenkin seurata tiedostosta /var/log/messages, keitä koneelle on yrittänyt sisään.

Avainten käyttöönotto

Avain muodostuu kahdesta osasta, julkisesta ja yksityisestä avaimesta. Julkinen avain sijoitetaan palvelimelle ja yksityinen avain pitää löytyä koneelta, joka yhteyttä muodostaa.

  1. Avaa taas tiedosto pääkäyttäjän oikeuksin /etc/ssh/sshd_config

  2. Etsi kohdat
    #AuthorizedKeysFile     %h/.ssh/authorized_keys
    #PasswordAuthentication yes
    Poista molemmilta riveiltä kommentti (se risuaita siitä alusta).

    Muuta vielä passwordAuthentication yes arvoksi no

  3. Tallenna tiedosto ja käynnistä palvelin uudestaan.

Huomaat, että kukaan ei pääse sisään, itse asiassa kukaan ei pääse edes yrittämään salasanan arvaamista. Nyt onkin tosi turvallista, mutta mitenkäs siihen sitten oikein pääsee sisälle... Käyttäjien pitää luoda itselleen avaimet joita tulee kaksi kappaletta, julkinen ja yksityinen. Julkinen avain pitää toimittaa koneelle johon ollaan loggautumassa ja yksityinen avain pitää lisätä käyttäjän kotihakemistossa olevaan hakemistoon .ssh tiedostoon authorized_keys aivan kuten tuolla konffissa määrittelimme.

Windows-käyttäjä voi luoda avaimen putty:n tarjoamalla softalla nimeltä puttygen. suosittelen generoimaan RSA-tyyppisen avaimen jonka pituus on vähintään 1024, mutta mielellään 2048 bittiä.

Linuxissa (ja mäkissä OsX:ssä) homma hoituu komentoriviltä komennolla ssh-keygen.

  • Luodaan rsa-tyyppisen avainpari jonka pituus on 2048 bittiä päätteessä komentamalla:
    $ ssh-keygen -t rsa

Kannattanee hyväksyä tiedostojen oletussijainti ~/.ssh/id_rsa ja ~/.ssh/id_rsa.pub. Noista jälkimmäinen on se julkinen avain (public) joka pitää toimittaa palvelimelle. Tuo ohjelma kysyy myös salasanaa joka liitetään avaimeen ja jota käytetään jatkossa avaimen kanssa loggautuessa (se voi olla eri kuin käyttäjän kohdekoneen salasana).

kun meillä nyt on avain ja sitä vastaava salasana, voidaan avain kopioida paikoilleen. (huom. puttygenin generoiman avaimen alussa ja lopussa on kommenttirivi jotka on hyvä poistaa ennen avaimen lisäämistä käyttäjän tietoihin).

Julkisen avaimen lisääminen palvelimelle

  1. Kopioidaan avain palvelimelle
    $ scp ~/.ssh/id_rsa.pub tunnus@palvelin:/home/tunnus
  2. Kirjaudutaan palvelimelle
    $ ssh tunnus@palvelin
  3. Lisätään avain
    $ cat id_rsa.pub >> .ssh/authorized_keys
  4. Ja lopuksi kannattanee vielä poistaa turha avaintiedosto palvelimelta
    $ rm id_rsa.pub

Tämän saman tempun voi tehdä siis niin monelle palvelimelle kuin haluaa tällä samalla id_rsa.pub -tiedostolla. Nyt sinun pitäisi pystyä kirjautumaan niille kaikille palvelimille sillä salasanalla jonka asetit tuolle avaimelle.

Ssh osaa siis käyttää suoraan tuota id_rsa-privaatti avainta kunhan se on tallennettu oletussijaintiin. Jos haluat käyttää muualle tallennettua avainta niin se onnistuu -i vivulla:

  • $ ssh tunnus@palvelin -i /polku/yksityiseen/avaimeen

Keychain

Kun käytössä alkaa olla useita palvelimia, niin ainainen salasanojen syöttäminen alkaa tuntua turhauttavalta ja tulee tarve vähentää niitä. Helppo, mutta typerä ratkaisu olisi tehdä avainpari ilman salasanaa, jolloin kirjautumiseen ei koskaan tarvittaisi salasanaa. Tämä olisi tosin äärimmäisen epäturvallista, sillä jos joku saa käsiisi sinun id_rsa-tiedoston hän pystyisi kirjautumaan kaikkille niille palvelimille joille olet asettanu sen.

Kun sinulla on julkisella avaimella kirjautuminen käytössä voidaan hommaa helpottaa komenolla ssh-add ~/.ssh/id_rsa joka kysyy avaimen salasanan ja ottaa sen talteen ssh-agent-palveluun jonka jälkeen sinun ei enää tarvitse syöttää sitä vastaavaa salasanaa, mutta tämä toimii vai yhdessä terminaalisessiossa kerrallaan joten hyöty jää melko minimaaliseksi. Tätä korjaamaan otamme scriptin nimeltä Keychain.

  • Aloitetaan asentamalla se
    $ sudo apt-get install keychain

    Avaa tekstieditoriin ~/.bashrc Laita sinne seuraavat rivit

    keychain --nogui id_rsa id_dsa
    . ~/.keychain/`uname -n`-sh

id_dsa:n tilalle voit toki suorankin polun privaattiavaimeesi. Siihen voi myös laittaa argumentiksi useammankin avaimen mikäli sille on tarvetta.

Tämän jälkeen ainakin kun avaa uuden terminaalin ajetaan tuo keychain scripti. Se käynnistää ssh-agentin mikäli se ei ole käynnissä ja ensimmäisellä kerralla kysyy avaimen salasanaa. Tämän jälkeen voit avata niin monta terminaalia kuin haluat kirjautua niillä haluamillesi palvelimille.

Kun lopetat työskentelyn, niin voit sulkea ssh-agentin komennolla:

ssh-agent -k

Tämän jälkeen kirjautujalta kysytään taas normaalisi avaimen salasanaa.

[http://forum.ubuntu-fi.org/index.php?topic=503.0 Keskustelu Ubuntu-fi foorumilla]