Tämän julkaisun sisältö oli yksi osa Järjestelmäprojektia, jonka toteutin yhdessä toisen opiskelijan, Oliver Sirénin, kanssa.
SFTP-client tiedostojen siirtoon
Tarkoituksena oli siirtää tiedostoja työpöytätietokoneelta suoraan palvelimelle. Tätä varten tarvittiin FTP-client -ohjelma. FTP on TCP-protokollaa käyttävä menetelmä tiedostonsiirtoon kahden tietokoneen välillä, eli tässä tapauksessa palvelimen ja työpöydän välillä. FTP ei kuitenkaan ole kovinkaan turvallinen yksinään, joten käytimme uudempaa SFTP-protokollaa (SSH File Transfer Protocol), jonka avulla tiedonsiirto tapahtuu turvallisen SSH-yhteyden yli.
Siirsimme verkkosivutiedostot Haaga-Helian laboratorioluokan tietokoneelta. Työpöytämme järjestelmätiedot:
- Nimi: ItLab-PC
- Intel Core i5-2400 @ 3.10GHz
- 8GB RAM
- Xubuntu 16.04.2 LTS
Käyttöjärjestelmänä oli alun perin tarkoitus käyttää Windowsia, mutta meillä ei ollut järjestelmänvalvojan oikeuksia asentaa haluamaamme SFTP-client ohjelmaa koulun Windows työpöydälle. Tämän vuoksi käytimme Linux-livetikkua Xubuntu 16.04.2 LTS käyttöjärjestelmällä. Tiedostojen siirto tapahtuu kuitenkin samalla tavalla myös Windows pohjaisilla käyttöjärjestelmillä.
FileZillan asennus
SFTP-client ohjelmaksemme valitsimme vapaan lähdekoodin FileZillan. Hyvin vastaava ohjelma olisi ollut esimerkiksi WinSCP.
Asensimme ohjelman osoitteesta terminaalin komennolla:
$ sudo apt-get install filezilla
SSH-avaimet PuTTYgen:illä
SFTP-protokollaa käytettäessä on kaksi käyttäjän todennusmenetelmää: salasana ja SSH-avaimet. SSH-avaimet tarjoavat enemmän tietoturvaa verrattuna pelkkään salasanaan, koska salasana voidaan murtaa eri menetelmin, kuten brute force -menetelmällä, vaikka se saattaa vaatiakin paljon aikaa ja resursseja. SSH-avaimia on sen sijaan melko mahdotonta tulkita yksittäisellä hyökkäysmenetelmällä. Julkinen avain säilytetään webpalvelimella, kun taas yksityinen avain työpöytäkoneella.
Tietoturvan vuoksi päätimme käyttää SSH-avaimia. Avaimet loimme PuTTYgen:llä, joka on vapaan lähdekoodin SSH-avain generaattori. Asensimme ohjelman ylläpitäjän verkkosivuilta: http://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
Asennettuamme ja käynnistettymme ohjelman, seurasi tällainen näkymä:
Loimme avaimet painamalla ensin valitsemalla avaintyypiksi ohjelman yläpalkista SSH-2 RSA, jonka jälkeen ”Generate”. Tämän jälkeen liikuttelimme hiirtä satunnaisesti avainosion tyhjällä alueella (PUTTYgen käyttänee osoittimen liikkettä satunnaisluvun luoimseen). Sitten määrittelimme kommentin avaimista sekä tunnuslauseen lisättyä tietoturvaa varten. Käytännössä meillä on nyt siis sekä SSH-avaimet että salasana käytössä.
Avaimet luotuamme työpöydälle kansion nimeltä my_keys, johon tallensimme näin alustavasti sekä julkisen että yksityisen avaimen. Molemmille myös annettiin kuvaavat nimet.
Siirsimme sitten julkisen avaimen Ubuntu 16.04.2 x64 virtuaalipalvelimellemme. Julkinen avain tallennettiin palvelimella hakemistoon ~/.ssh/authorized_keys. SSH-kansiota ei ollut valmiiksi oletuksena, joten loimme sellaisen:
$ mkdir ~/.ssh $ chmod 0700 ~/.ssh $ touch ~/.ssh/authorized_keys $ chmod 0644 ~/.ssh/authorized_keys
Muokkasimme tiedostoa vim-tekstieditorilla.
$ sudo vim ~/.ssh/authorized_keys
Liitimme julkisen SSH-avaimen tiedostoon ja tallensimme. Avain on nyt tallennettuna webpalvelimella.
Tiedostojen siirto FileZillaa käyttäen
Aivan ensimmäisenä avasimme FileZillan ja lisäsimme yksityisen SSH-avaimemme sinne. Menimme asetuksiin, josta valitsimme vasemmasta reunasta SFTP, jonka jälkeen painoimme ”Add key file”. Navigoimme kansioon, johon avaimen tallensimme ja valitsimme sen.
Avain on nyt tallennettuna FileZillaan. Tämän jälkeen aloitetaan tiedostojen siirto palvelimelle. Site Manager valikosta File:n alta, pääsimme asetuksiin, joissa lisäsimme uuden sivun napista ”New Site”, jolle annoimme kuvaavan nimen. Tänne tehnyt asetukset muistetaan jatkossa, jotta niitä ei aina tarvitse tiedostoja siirrettäessä kirjoittaa uudelleen.
Hostiksi määrittelimme webpalvelimemme domain-nimen, eli dc-jarjestelmaprojekti.info. Portiksi 22 ja protokollaksi SFTP – SSH File Transfer Protocol. Kirjautumistyypiksi laitoimme Interactive ja käyttäjäksi markus.
Nyt, kun tiedot oli syötetty oikein, pääsimme yhdistämään palvelimeen SFTP-yhteydellä:
Tässä vaiheessa huomasimme kuitenkin, että meillä ei ole täysiä oikeuksia muokata tai poistaa tiedostoja webpalvelimemme /var/www/html/ -hakemistosta. Oleellista oli päästä poistamaan vanhat html-tiedostot palvelimelta, ja tällä hetkellä meillä ei ollut oikeuksia tehdä siten.
Menimme terminaalin kautta SSH-yhteydellä palvelimelle ja muokkasimme markus-käyttäjän oikeuksia kansiossa. Lisäsimme markus-käyttäjän ryhmään www-data, jolle annoimme seuraavat oikeudet:
$ sudo adduser markus www-data $ sudo chown -R www-data:www-data /var/www $ sudo chmod -R g+rwX /var/www
Tulostus ryhmän ja markus-käyttäjän oikeuksista /var/www/ -hakemistossa:
Kun oikeudet oli laitettu kuntoon, poistuimme SSH-yhteyksistä terminaalissa ja FileZillassa, jotta ne otettiin kunnolla käyttöön. Otimme taas yhteyden webpalvelimeen FileZillalla, ja tällä kertaa sivutiedostojen siirto palvelimen /var/www/html/ -hakemistoon onnistui.
Nyt, kun navigoimme selaimella palvelimellemme, huomaamme, että Digitekniikat-kurssilla toteutettu verkkosivu on siellä julkisesti näkyvillä.
Lähteet:
Wikipedia 2016. FTP. URL: https://fi.wikipedia.org/wiki/FTP. Luettu: 10.4.2017.
FileZilla 2017. Overview. URL: https://filezilla-project.org/. Luettu: 11.4.2017.
PuTTYgen 2017. Download PuTTY: latest release (0.68). URL: http://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html. Luettu: 11.4.2017.
DigitalOcean 2013. How to use FileZilla to transfer and manage files securely on your VPS. URL: https://www.digitalocean.com/community/tutorials/how-to-use-filezilla-to-transfer-and-manage-files-securely-on-your-vps. Luettu: 11.4.2017
DigitalOcean 2013. How to create SSH keys with PuTTY to connect to a VPS. URL: https://www.digitalocean.com/community/tutorials/how-to-create-ssh-keys-with-putty-to-connect-to-a-vps. Luettu: 11.4.2017