Oman virtuaalipalvelimen pystytys pilveen (linux)

Tehtävänanto tällä kertaa:

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.

http://www.linode.com/?r=16774ec53118157d3f5d6e9be9147875cdb167bb(associate-linkki, ilman: http://www.linode.com)

http://aws.amazon.com/vpc/

https://www.digitalocean.com/

Julkisia nimiä myynnissä

https://www.namecheap.com

https://www.gandi.net

Harjoittelua varten voit kokeilla myös http://www.dot.tk/

Domain name

Domainin omistin on ennaltaan ja se on ”fayhra.com”. Ostopaikkana toimi godaddy. Itsellä ei ole toistaiseksi ollut ongelmia heidän kanssaan, joskin GoDaddyn sivusto on epäselvä. Olen omistanut domainin muutaman vuoden, mutten ole tehnyt sillä vielä mitään. Tähän on tulossa muutos..

Virtual Private Server

Katsoin opettajan ehdottamat vaihtoehdot läpi. Digital Ocean ja Linode kiinnostivat, mutta Amazonilla on vuoden ilmainen kokeilu (jos käyttö ei ylitä rajoja). Tein tunnukset Amazonin AWS palveluun. Tänne on tarkoitus pystyttää linux virtuaalipalvelin.

Amazon Console

Amazon Console

Katson Amazonilta aloitus ohjeet.  Valitsen konsolista EC2 Virtual Servers in the Cloud ja seuraavasta ikkunasta Lauch Instance. Nyt pitää valita Amazon Machine Image (AMI) ja valitsen Ubuntun ”Ubuntu Server 14.04 LTS (HVM), SSD Volume Type 64-bit”. Seuraavasta ikkunasta valitaan resurssien määrä ja valitsen Micron, joka on ilmainen. Tein toisen tunnuksen kuten Amazon suositteli. Lisäsin myös kirjautumiseen Google autentikaattorin, eli hallintasivustolle kirjautuessa täytyy antaa puhelimen sovelluksesta koodi. Lisäsin ssh avauksen lisäksi http säännön. Lopulta painoin Launch, vielä piti ladata avainpari ssh:ta varten ja nyt kaiken pitäisi olla ”valmista”. Instansseissa näkyi nyt virtuaalipalvelin running tilassa. Satun olemaan nyt Windows 7 työasemalla. Yhteyden muodostukseen Windowsista löytyi tällaiset ohjeet, mutta noissa aluksi linkitetyissä ohjeissa on samat asiat. Putty-yhteyttä varten piti konvertoida ladatusta avainparista PuttyGenillä ppk päätteinen avain, tämäkin on opastettu noissa ohjeissa. Laitoin Puttyyn ohjeen mukaiset asetukset, mutta sain herjan ”server refused our key”. Käyttäjätunnuksena toimikin oletustunnus ja yritin käyttää aluksi itse luomaani tunnusta. Täytyy tutkia tuota myöhemmin.

Konfigurointi

Lamp

Nyt kun on päästy palvelimelle, niin päivitetään pakettivarastot sudo apt-get update ja asennetaan Lamp sudo apt-get install -y apache2 phpmyadmin mysql-server
Tein asetukset aiemmin tekemäni ohjeen mukaan.

Toisen käyttäjän luonti

Loin uuden käyttäjän adduser fayhra ja asetin oman nimeni Full Name kenttään. Kokeilin kirjautua puttyllä tuolle tunnukselle, mutta Amazon estää tämän ”Server refused our key”, joka viittaa siihen, että tarvitsen tälle käyttäjälle uuden ssh avaimen. Menen takaisin oppaita tutkimaan ja löydän ohjeet. En luettele komentoja nyt tähän, koska ne löytyy linkin ohjeesta selkeästi. Piti siis luoda uuden käyttäjätunnuksen kotihakemistoon .ssh kansio ja sinne authorized_keys tiedosto, jonne laitettiin amazonilta saatu public key eli julkinen avain ja asetettiin vielä tiedoston oikeudet oikeiksi. Tämän jälkeen yritän kirjautua uudelleen käyttäjänä fayhra Puttyllä, mutta saan edelleen saman herjan. Luen ohjeen läpi uudelleen ja huomaan, että tuo public key pitää ottaa puttygenin kautta kun vahingossa laitoin autorized_keys tiedostoon kryptatun avaimen. Käyn muokkaamassa authorized_keys tiedostoa ja yritän uudelleen. Onnistui! Lisäsin käyttäjälle sudo oikeudet sudo adduser fayhra sudo ja avasin Puttyllä uudelleen yhteyden fayhra käyttäjällä, sudo toimii.

Nimipalvelun käyttöönotto

Kirjauduin käyttäjänä fayhra ja loin public_html kansion kotihakemistooni mkdir public_html, sitten loin index.html tiedoston nano public_html/index.html ja laitoin sisällöksi:

<!doctype html>
<html lang="en">
<head>
 <meta charset="utf8">

 <title>Fayhra's site</title>
 <meta name="description" content="Fayhra's site">

 <link rel="stylesheet" href="css/styles.css?v=1.0">

</head>

<body>
 Hello visitor
</body>
</html>

Loin myös css kansion valmiiksi mkdir public_html/css. Katsoin Amazonin hallintapaneelista instanssin saaman ip-osoitteen ja menin selaimella katsomaan toimiiko sivut ”http://ip-osoite/~fayhra/index.html”. Toimii! Sitten pitäisi saada sivu näkymään verkkotunnuksen kautta.

Menin godaddy.com sivustolle, kirjauduin ja löysin täältä DNS Zone File osion, jonne sain laitettua Amazonin tarjoaman IP-osoitteen. www.fayhra.com näyttää nyt oletus apache sivua. Kopioin näin aluksi aiemmin luomani index html tiedoston tämän päälle nyt aluksi, koska oletussivu on riski, komento oli cp home/fayhra/public_html/index.html /var/www/html/index.html. 

Testasin vielä phpmyadminin toiminnan, http://www.fayhra.com/phpmyadmin toimi ja kirjautuminen onnistui asennuksessa annetuilla tunnuksilla.

Sitten pitäisi saada fayhra.com toimimaan eli ilman www. alkua. Tällä hetkellä esiin tulee tyhjä sivu. Loin ensin public_html kansion sisään fayhra.com kansion mkdir /home/fayhra/public_html/fayhra.com ja kopioin sitten index.html tiedoston kyseiseen kansioon cp /home/fayhra/public_html/index.html /home/fayhra/public_html/fayhra.com/index.html. Sitten loin fayhra.com tiedoston apachen asetustiedostoihin /etc/apache2/sites-available/ cd  /etc/apache2/sites-available/ ja sudoedit fayhra.com. Tiedoston sisällöksi tuli seuraavaa:

<VirtualHost *:80>
ServerName www.fayhra.com
ServerAlias fayhra.com
DocumentRoot /home/fayhra/public_html/fayhra.com
</VirtualHost>

Sitten yritin ottaa ottaa sivun käyttöön komennolla sudo a2ensite fayhra.com, mutta sain vain herjaa ERROR: Site fayhra.com does not exist! Googletus auttoi ja löysin täältä vinkin, että sites-available kansiossa olevan tiedoston pitää olla .conf päätteinen toimiakseen. Nimesin tiedoston uudelleen komennolla sudo mv fayhra.com fayhra.com.conf ja ajoin uudelleen sudo a2ensite fayhra.comTällä kertaa apache hyväksyi komennon ja pyysi ajamaan komennon service apache2 reload.

Menen kokeilemaan osoitetta fayhra.com ja se toimii. Myös http://fayhra.com/~fayhra/, http://www.fayhra.com/~fayhra/ ja http://www.fayhra.com/~ubuntu/ toimii. Ubuntu käyttäjän sivulla on php koodia, joka laskee 22+20 ja tulostaa tuloksen 42 eli myös php toimii. Tuo Ubuntu käyttäjän sivu pitäisi tosin saada pois, koska se on turha. Yksi vaihtoehto voisi olla käyttäjäkohtaisten sivujen ottaminen pois käytöstä ja kaikkien sivujen laittaminen /var/www/ kansioon kuten ”oletuksena” tehdään.

Nyt pitäisi sitten kehittää omat sivut…

Subdomain eli aliverkkotunnus

Ajattelin laittaa yhden aikaisemmin tekemäni sivuston aliverkkotunnuksen alle. Ensin menin godaddyn sivuille tekemään A recordin (en osaa suomentaa tätä) mud.fayhra.com, joka ei suinkaan viittaa mutaan vaan vanhaan tekstipohjaiseen pelityyppiin.  Sitten loin kansion kyseiselle sivustolle mkdir /home/fayhra/public_html/mud.fayhra.com. Kopioin ftp:n kautta aiemmin tehdyn sivuston palvelimelle /home/fayhra/public_html/mud.fayhra.com kansioon. Ohjeet ftp:n käyttöön alempana. Tämän jälkeen loin uuden tiedoston /etc/apache2/sites-available/ kansioon sudoedit mud.fayhra.com.conf ja sisällöksi tuli seurava:

<VirtualHost *:80>
ServerName mud.fayhra.com
DocumentRoot /home/fayhra/public_html/mud.fayhra.com
</VirtualHost>

Sen jälkeen komento sudo a2ensite mud.fayhra.com ja service apache2 reload. Sivusto ei ainakaan vielä näytä oikeaa tulosta vaan saman kuin pääsivusto, mutta DNS muutokseen voi mennä 24-48 tuntiakin. Jätän tämän syrjään huomiseen asti.

Seuraavana päivänä sivusto toimi, eli mud.fayhra.com osoitteesta tulee oikea sisältö. Sivu ei nyt toimi, koska tietokanta puuttuu vielä. Vaihdan sisällön tyhjäksi templateksi, koska vanha sisältö ja ulkonäkö ei miellytä. Teen tähän uudet sivut ja laitan kannan toimimaan myöhemmin.

FTP Amazonin palvelimelle

Nyt pitäisi saada tiedostot siirrettyä palvelimelle, joten otin selvää miten saan ftp yhteyden. Löysin tällaiset ohjeet. Otin yhteyden käyttäen Windows 7 työasemaa ja Filezilla ohjelmaa. Mene ohjelmassa: Muokkaa -> Asetukset -> Yhteys -> SFTP -> Lisää avaintiedosto -> OK -> Tiedosto -> Sivustonhallinta -> Isäntä kohtaan Amazonin kertoma julkinen IP-osoite -> Protokolla SFTP -> Kirjautumistyyppi Normaali -> Käyttäjänimeksi laitetaan joko oletustunnus tai luotu käyttäjä, itse laitoin fayhra -> Salasanaksi kirjautumisessa käytettävä salasana -> Yhdistä. Vielä pitää hyväksyä yhteys. Nyt vasemmalla näkyy paikallisen tietokoneen sisältö ja oikealla palvelimen.

Palvelimen suojaaminen hyökkäyksiltä

Ohjeita hakiessani törmäsin tähän toisen opiskelijan artikkeliin. Siinä kerrotaan fail2ban -ohjelmasta, joka auttaa estämään hyökkäyksiä. Päätin lisätä tämän suojan palvelimelleni. Kyseinen ohjelma siis estää ip-osoitteen, jos siitä yritetään kirjautua viisi kertaa epäonnistuneesti. Esto kestää aina 10 minuuttia. Asennus komennolla sudo apt-get install fail2ban ja ohjelma toimii saman tien oletusasetuksilla. Asetuksia voi muuttaa, ohjeet linkin takaa.