H5 – Virtuaalipalvelimen luonti

h5. Tee nimipohjainen virtuaalipalvelin Apachelle (name based virtual hosting). Muista laittaa sekä http://www.example.com että example.com. Voit simuloida asiakkaan nimipalvelua muuttamalla /etc/hosts -tiedostoa.

Kokeile virtuaalipalvelinta (VPS). Voit vuokrata palvelimen esimerkiksi Linodelta, Amazonilta, DigitalOceanilta tai monista muista paikoista. Linodella ja Amazonilla saattaa olla ilmainen kokeilupaketti, DigitalOcean on halvin. Vaihtoehto: jos et jostain syystä halua vuokrata virtuaalipalvelinta, voit kokeilla tehdä oman vagrantilla.

Harjoitusta tehdessäni käytössäni oli seuraavat laitteet ja ohjelmistot:

Virtuaalipalvelin

Digital Ocean
Ubuntu 16.04 LTS 32-bit
512MB Ram
20 GB kiintolevy
Sijainti Frankfurt

Tietokone

Windows 10 Home 64-bit, x64
Intel Core i5-3337U CPU @ 1.80Ghz
8 Gt Ram
Nvidia GeForce 710M
PuTTY, version 0.65
PuTTYgen, version 0.67

 

Palvelimen luonti

Tehtävän tekoa varten hain ilmaista GitHub Education:n Student Developer Pack:a, sillä siihen kuului mukaan 50 $ kuponki Digital Ocean:lle. Minulta löytyi jo entuudestaan GitHub-tili, mutta kävin lisäämässä siihen kouluni sähköpostiosoitten paketin hakemista varten. Sain jo seuraavana päivänä vahvistusviestin tilaukseni hyväksymisestä. Tämän jälkeen kirjauduin GitHub-tililleni, ja hain Education-sivulta koodin Digital Oceanille.

Koodin ylle ilmestyi linkki Digital Oceanin sivulle, sekä alle linkki tekniseen tukeen. Linkki ohjasi Digital Ocean:n sivulle, jonka ylälaidassa näkyi ilmoitus :

Enter the GitHub Student promo code after activating your account. Valid for new users only.

Minun piti siis luoda sekä aktivoida uusi tili Digital Ocean:lle ennen kuin voisin saada koodin aktivoitua. Siirryin luomaan tiliä, ja huomasin että tilin aktivoimiseksi piti vahvistaa sähköpostiosoite, sekä lisätä pakollinen luottokortti, jotta koodin pystyi lisätä. Tämän jälkeen sain koodin onnistunesti aktivoitua, ja pääsin luomaan harjoituksen palvelinta.

Valitsin palvelimen käyttöjärjestelmäksi uuden Ubuntu 16.04 32-bittisenä, sillä valitsin pienimmän palvelimen ja en ollut varma pystyisikö se kunnolla pyörittämään 64-bittistä käyttöjärjestelmää. Tämän jälkeen valitsin palvelimeni sijainniksi Frankfurtin, sillä se oli lähimpänä omaa sijaintiani, parhaimman verkkoyhteyden saamiseksi.

ScreenShot_20160501234451

Tämän jälkeen sain kaksi sähköpostia Digital Ocean:sta, joissa jälkimmäisessä oli juuri luomani palvelimen tiedot käyttäjätunnuksineen. Ensimmäinen viesti piti sisällää ohjeita, ja linkkejä Ubuntu-palvelimen alkuvaiheita varten sekä SSH-yhteyden ottamista varten. Ohjeet oli tarkoitettu 14.04 – versiolle, mutta löysin Digital Ocean:n sivuilta päivitetyt ohjeet uusimmalle Ubuntu:lle.

Seuraavaksi otin SSH-yhteyden palvelimelle putty-sovelluksen avulla. IP-osoitteeksi laitoin Digital Ocean:n ilmoittaman palvelimen osoitteen, sekä käytin valmiina valittua porttia 22 ja SSH-yhteystyyppiä. Tämän jälkeen kirjauduin palvelimelle sähköpostiini tulleilla root-käyttäjätunnuksella. Kirjauduttuani palvelimelle sain ilmotuksen, että root-käyttäjän salasana pitää vaihtaa välittömästi. Vaihtamisen jälkeen hyödynsin sähköpostiini tullutta ubunu-tietopakettia, ja avasin linkin Intial server setup with ubuntu 16.04, ja seurasin ohjeistusta seuraavaa vaihetta tehdessäni.

Palvelimen asennus

Loin uuden käyttäjän littlepi komennolla:

$ adduser littlepi

jonka määrittelin käyttäjälle salasanan, sekä annoin käyttäjälle nimeksi Little Pi. Tämän jälkeen annoin käyttäjälle root-oikeudet, jotta tarvittaessa voimme käyttää sudo-komentoja, komennolla:

$ gpasswd -a littlepi sudo

Tämän jälkeen ohjeissa neuvotaan luomaan SSH-avainparit palvelimen turvallisuuden lisäämiseksi. Koska käytössäni oli Windows 10 tarvitsin Digital Ocean:n toisen ohjeen, How to create SSH-keys with putty to connect to a vps?, apua. Avainten luontiin tarvittiin PuTTYgen-sovellusta, joten kävin lataamassa sen valmistajan sivun kautta. Julkinen avain kopioidaan vain  aiemmin luodulle käyttäjälle, sillä root-käyttäjälle SSH-kirjautuminen estetään myöhemmin turvallisuussyistä, jonka takia siirryin littlepi-käyttäjälle ennen avainten luontia komennolla:

$ su – littlepi

SSH-avainten luonti ja kopionti

Avasin PuTTYgen-sovelluksen, jolloin Windows varoitti sovelluksen olevan mahdollisesti haitallinen. Ohitin varoituksen lisätiedoista, jonka jälkeen sovellus aukesi normaalisti. Käytin alla olevan kuvan arvoja avaimia luodessa.

2016-05-02.png
Ohjessa neuvottiin että avaimet pitää tallentaa sillaiseen kansioon, jonne vain minulla on pääsyoikeudet, joten tallensin ne käyttäjäni tiedostot-kansioon. Tämän jälkeen kopioin Public key for pasting into OpenSSH authorized_keys file-kentän sisällön palvelimen julkisen avaimen luontia varten.

Avaimen luonnin jälkeen menin takaisin PuTTY:lle ja seurasin alkuperäistä ohjetta tästä eteenpäin. Seuraavaksi loin .ssh-kansion ja rajoitin sen oikeuksia, vain omistaja saa lukea, kirjoittaa ja suorittaa, komennoilla:

$ mkdir .ssh
$ chmod 700 .ssh

Tämän jälkeen loin authorized_keys-tiedoston nano:lla .ssh-kansioon, jonne tallensin aiemmin kopioidun julkisen avaimen, jonka jälkeen muutin tiedoston oikeudet myös (omistajalla luku- ja kirjoitusoikeus) komennoilla:

$ nano .ssh/authorized_keys
$ chmod 600 authorized_keys

Seuraavaksi muutin PuTTY-sovelluksessa palvelimelle kirjautumista niin, että se käyttää aiemmin luomaani yksityistä avainta, sekä loin kirjautumisen tapahtumaan suoraan littlepi-käyttäjälle. Loin uuden session, jossa ip-osoitteena oli palvelimen osoite, porttina vakio 22 ja protokollana SSH. Tämän jälkeen Vasemman puoleisesta valikosta avatsin Connection alla olevan Data-osion. Täällä määrittellin Auto-login username-kenttään käyttäjätunnuksen jolle halusin kirjautua, tässä tapauksessa littlepi. Lisäsin vielä yksityisen avaimen SSH-valikon alla olevan osioon Auth, sen sisällä oleva Browse-nappulan kautta. Tämän jälkeen sessiolle annetaan etusivulla nimi, jonka jälkeen sessio tallennetaan.

Root SSH-kirjautumisen esto ja salasanakirjautumisen poisto

Jotta palvelimen käyttö olisi turvallisempaa, poistin root-käyttäjälle kirjautumisen SSH-yhteyden kautta. Näin hakkeri ei aivan heti saa täysiä oikeuksia onnistuneessa murtautumisessa. Ensin kirjauduin ulos littlepi-käyttäjän puolelta komennolla:

$ exit

Seuraavaksi menin muuttamaan /etc/ssh/sshd_config-tiedostoa, josta menin vaihtamaan PermitRootLogin-kohdassa arvon ”yes”, arvoksi ”no”. Asetukset tulevat voimaan SSH:n uudenlleenkäynnistyksen yhteydessä, muuta kävin poistamassa vielä salasanalla kirjautumisen jolloin palvelimelle on vaikeampaa murtautua bruteforce käyttäen.

Tämän asetuksen sain muuttamalla samaisessa tiedostossa kohtaan PasswordAuthentication arvoksi ”no” ja poistamalla komenttimerkin edestä. Tallennettuani muutokset tiedostoon käynnistin SSH-palvelimen uudelleen komennolla:

$ sudo systemctl reload sshd

Testasin asetusten toimivuutta kirjautumalla palvelimelta ulos ja uudelleen sisälle root-käyttäjällä, jolloin tuli ilmoitus Access denied. Kyseiset muutokset ovat siis tulleet voimaan.

Domain name rekisteröinti

Päätin käyttää dot.tk tarjoamaa mahdollisuutta rekisteröidä ilmaiseksi verkkonimi palvelimeni ip-osoittelle, sillä en aikonut käyttää tätä palvelinta kurssin suorituksen jälkeen enää. Päätin antaa palvelimelle osoitteen meandmylittlepi2.tk, sillä se oli persoonallinen ja helposti yhdistettävissä omiin sivuihini.

Annettuani nimen siirryin osoitteen rekisteröintiin, jossa valitsin Use your new domain-kohdassa Use DNS, jossa kirjoitin molempiin Host name-kenttiin palvelimeni ip-osoitteen.  Jätin rekisteröinnin pituudeksi vain 3 kk, sillä en ollut aikeissa pitää nimea hallussani edes niinkään pitkään. Tämän jälkeen viimeistelin rekisteröintini sähköpostiosoitteellani ja salasanalla, jonka jälkeen vahvistin vielä tilin.

Apachen asennus palvelimelle

Ennen apache2 asennusta ajoin paketinhallinnan päivityskomennot:

$ sudo apt-get update
$ sudo apt-get upgrade

Tämän jälkeen vasta ajoin apache2 ja apache2-utils asennuskomennon:

$ sudo apt-get install apache2 apache2-utils

Testasin apachen asentumista avaamalla selaimen ja syöttämällä ensin osoitekenttään palvelimen ip-osoitteen, ja sen jälkeen uudella verkkonimellä. Sain molemmilla aikaiseksi saman ilmotuksen, eli asennus oli onnistunut ja verkkonimi oli toiminnassa.

2016-05-02 (1)

Otsikkokentässä näkyi selvästi erot, eli eri hakemiston index.html tiedosto kyseessä

2016-05-02 (2)2016-05-02 (3)

 

Lähteet:

http://terokarvinen.com/2016/aikataulu-%E2%80%93-linux-palvelimena-ict4tn003-19-loppukevat-2016

https://education.github.com/

https://www.digitalocean.com/github-students/?utm_medium=partnerships&utm_source=github&utm_campaign=studentdevpack#

http://www.dot.tk/

Digital Ocean – How to set up apache virtual hosts on ubuntu 16.04

Digital Ocean – Initial server setup with Ubuntu 16.04

Digital Ocean – How to create SSH-keys with puTTY to connect to a VPS

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

http://www.thinkplexx.com/learn/article/unix/command/chmod-permissions-flags-explained-600-0600-700-777-100-etc

Modifying Host files on Windows

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out / Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out / Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out / Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out / Muuta )

Muodostetaan yhteyttä palveluun %s