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
# apt-get install openssh-server
serveri 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:
1. Avaa tekstieditorissa tiedosto (rootin oikeuksin toki) /etc/ssh/sshd_config
# gedit /etc/ssh/sshd_config
1. etsi kohta
PermitRootLogin yes
ja muuta sen arvoksi no
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:
AllowUsers janne mikk0 ninnnu
1. tallenna tiedosto ja käynnistä palvelin uudestaan komentamalla:
# /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 tiedosto /etc/ssh/sshd_config
# gedit /etc/ssh/sshd_config
1. etsi kohdat
#AuthorizedKeysFile %h/.ssh/authorized_keys #PasswordAuthentication yes
- Poistetaan molemmilta riveiltä kommentti (se risuaita siitä alusta).
Muuta vielä passwordAuthentication yes arvoksi no
1. Tallenna tiedosto ja käynnistä palvelin uudestaan. huomataan, 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 se 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 DSA-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 dsa-tyyppisen avainpari jonka pituus on 2048 bittiä päätteessä komentamalla:
$ ssh-keygen -b 2048 -t dsa
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).
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).
Yksityisen avaimen lisääminen tapahtuu vaikkapa näin:
cat <avain> >> /home/<käyttäjä>/.ssh/authorized_keys
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 2084 bittinen privaattiavain ja avainta vastaava salasana. heikolta näyttää murtautujan puolesta.
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ä).
Windows-sovelluksia ja GFTP:tä käytetään kuten mitä tahansa FTP-ohjelmaa, mutta Nautilus ja Konqueror toimivat hitusen eri tavalla.
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ä.
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.
Breezyssä avattuihin yhteyksiin voikin tehdä bookmarkkeja jolloin niihin pääsen helposti käsiksi myöhemmin.
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ä.