Linux palvelimet h4: Virtuaalipalvelin

Tässä harjoituksessa on tarkoitus tehdä erilaisia harjoituksia virtuaalipalvelimella, jonka asensin oppitunnilla. Sain onnistuneesti luotua sivun normaalin käyttäjän oikeuksilla, tutkittua lokia, kopioitua web-sivu paikalliselta koneelta palvelimelle sekä tehtyä pieni PHP-sivu.

Tein harjoituksen Lenovon ideapad Z500:lla sunnuntaina 11.2.2018 klo 13:00-19:05 pitäen välillä taukoja. Käytin Linuxin Ubuntu versiota 16.04.3 LTS.

Tehtävänanto löytyy Tero Karvisen sivuilta: http://terokarvinen.com/2017/aikataulu-%E2%80%93-linux-palvelimet-ict4tn021-7-ti-ja-6-to-alkukevat-2018-5-op kohdasta h4. Sivun mukaan tehtävät ovat:

“a) Laita hankkimallesi virtuaalipalvelimelle mahdollisuus tehdä kotisivuja normaalin käyttäjän oikeuksin.

s) Laita hankkimallesi virtuaalipalvelimelle käyttäjän kotihakemistoon tallennettu sivu näkymään Apachen oletussivuna.

y) Etsi palvelimesi lokeista esimerkkejä murtautumisyrityksistä. Voit etsiä lisätietoa IP-osoitteista ottamatta niihin yhteyttä esimerkiksi komennoilla ipcalc, geoiplookup ja whois.

b) Tee weppisivuja paikallisella koneellasi ja kopioi ne palvelimelle scp-komennolla.

c) Laita palvelimellesi jokin yksinkertainen PHP-sivu. Voit esimerkiksi tulostaa käyttäjän IP-osoitteen$_SERVER[‘REMOTE_ADDR’] tms. Ole huolellinen, jos otat vastaan syötteitä lomakkeilla (forms).”

Tässä harjoituksessa pohjana on käytetty Tero Karvisen oppituntia 6.2.2018 Linux palvelimet -kurssilla sekä hänen nettisivujaan: http://terokarvinen.com/.

 

Kotisivujen tekeminen virtuaalipalvelimelle normaalin käyttäjän oikeuksin

Avasin ensin ssh-yhteyden komennolla “ssh jaana@174.138.10.253“. Olin aiemmin oppitunnilla hankkinut virtuaalipalvelimen DigitalOceanilta: https://www.digitalocean.com/ sekä domain nimen NameCheapilta: https://www.namecheap.com/.  Palvelimeni IP-osoite on siis tuo 174.138.10.253 ja jaana on käyttäjänimi, jonka loin root-tunnuksen lisäksi. Lukitsin rootin, kun olin antanut jaana-käyttäjälle sudo, admin sekä adm -oikeudet. Lisäksi olin tehnyt palomuuriin reiät SSH:lle ja HTTP:lle komennoilla “sudo ufw allow 22/tcp” ja “sudo ufw allow 80/tcp“. Otin palomuurin käyttöön komennolla “sudo ufw enable“. Seurasin palomuurin käyttöönottoon liittyviä ohjeita täältä: http://terokarvinen.com/2016/instant-firewall-sudo-ufw-enable

Aloittaessani harjoitusta käytin ensin update ja upgrade -komentoja, jotta sain päivitykset. Käytin tässä harjoituksessa ohjeena Tero Karvisen materiaalia: http://terokarvinen.com/2016/new-default-website-with-apache2-show-your-homepage-at-top-of-example-com-no-tilde. Olimme aloittaneet tunnilla jo tämän tekemisen, ja olin päässyt kohtaan, jossa olin luonut putro.me.conf -tiedoston. Tämä tiedosto löytyi komennolla “sudoedit /etc/apache2/sites-available/putro.me.conf“. Käytin komentoa “nano putro.me.conf“, jolloin sain eteeni tällaisen näkymän:

putro.me.conf

Yritin aluksi muokata vielä tuon publicSiten public_html:ksi, mutta tätä voi muokata vain sudoeditillä. Joten jätin sen nyt sikseen.

Seuraavaksi käytin ohjeen mukaan komentoja “sudo a2ensite putro.me.conf” sekä “sudo a2dissite 000-default-conf“. En ihan ymmärtänyt täysin, mitä nuo komennot tekevät, mutta käsittääkseni ne sallivat (ensite) ja kieltävät (dissite) joitakin linkkejä sivuja linkkejä hyödyntämällä. Tässä käytin lähteenä Systutorialsin sivua: https://www.systutorials.com/docs/linux/man/8-a2ensite/. Näiden komentojen jälkeen Apache2 piti uudelleenkäynnistää, joten käytin komentoa “sudo systemctl restart apache2-service“.

Tällä hetkellä, kun ip-osoitteeseeni meni, näkyi sivuilla vain “moi”. Tämä johtui siitä, että olin tunnilla tehnyt seuraavanlaisen komennon: “echo moi| sudo tee index.html“. Mutta kun kirjoitin selaimen osoiteriville hhtp://localhost/, latautui siihen Apache2:n oletussivu. En ollut ihan varma, kuuluiko näin käydä, joten jatkoin harjoitusta.

Loin uuden kansion “mkdir publicSite/” ja tämän jälkeen menin kansioon “cd publicSite/“. Käytin “pwd“, jotta näin, että olin luonut kansion oikeaan paikkaan (/home/jaana/publicSite). Nyt pystyin luomaan tuonne kansioon nano-tiedoston “nano index.html“. Kirjoitin tiedostoon yksinkertaisen “Heippa!” ja tallensin CTRL+X, Y+Enter.

Kävin päivittämässä tuon localhost-sivun, mutta siinä näkyi edelleen Apache2 oletussivu. Kävin myös päivittämässä sivun, johon olin mennyt ip-osoitteeni avulla, mutta siellä luki edelleen “moi”. Katsoin komentohistoraani (komento “history“) ja löysin sieltä, että olin tehnyt tuon echo moi -jutun /var/www/html -kansioon. Menin siis sinne komennolla “cd /var/www/html“, tarkistin “ls“, että index.html löytyy sieltä ja poistin sen komennolla “sudo rm -f index.html“. Käynnistin Apache2 vielä uudestaan ja päivitin selaimen sivun. Se ei vieläkään näyttänyt tuota “Heippa!”, vaan pelkän Index of / -sivun:

kotisivu_testi1

Kokeilin käydä muuttamassa sudoeditillä tuota putro.me.conf -tiedostoa: ensin “cd /etc/apache2/sites-available” ja sitten “sudoedit putro.me.conf“. Uudelleenkäynnistin taas palvelimen ja koitin päivittää selaimen sivun. Näytti edelleen samalta. Päätin kokeilla muokata publicSite-kansiossa olevaa index.html-tiedoston HTML-muotoon, jos se vaikka auttaisi:

kotisivu_testi2

Tämäkään ei auttanut, joten katsoin ohjeita alusta alkaen. Huomasin sitten, että minulla oli kirjoitusvirhe (kaksoispisteen sijasta puolipiste) putro.me.conf-tiedostossa porttinumerossa. Korjasin sen, uudelleenkäynnistin palvelimen ja päivitin selaimen. Nyt se toimi.

kotisivu_testi3

Murtautumisyritysten seuranta lokista

Tarkistin ensin, mistä kannattaa yrittää etsiä jälkiä murtautumisyrityksistä. Löysin Server Faultin sivuilta kohdan, jossa kerrottiin, mistä joku toinen henkilö oli seurannut murtautumisyrityksiä: https://serverfault.com/questions/244614/is-it-normal-to-get-hundreds-of-break-in-attempts-per-day. Menin siis ensin “cd var/log“-komennolla kyseiseen kansion ja käytin “ls“, jotta näin mitä kaikkia kansioita siellä oli. Sitten käytin “tail -F auth.log” -komentoa, kun olin jo tuolla var/log kansiossa. Havaitsin lokista sen, että kello oli kaksi tuntia jäljessä. Löysin myös ainakin murtautumisyrityksen:

murto_loki1

Tuosta näki, että joku oli ainakin viisi kertaa antanut väärän salasanan, mutta en oikein tiennyt, että oliko tuo “Connection closed by <ip-osoite>” merkki siitä, että murtautumisyritys oli onnistunut vai epäonnistunut. Minulla oli kyllä vahva salasana, joten en ehkä uskonut, että murtautuminen olisi onnistunut…

Halusin tietää, mistä tuo ip-osoite oli, joten latasin “sudo apt-get install geoip-bin” ja käytin komentoa “geoiplookup 58.242.83.11” ja sain tiedon, että se olisi Kiinasta. Halusin vielä katsoa oliko murtoyrityksiä lisääkin, joten käytin komentoa “less auth.log” ja sain pitkän listan yrityksistä:

murto_loki2

Katsoin vielä kolmen muun tuossa näkyvän ip-osoitteen paikan ja kaikki näyttivät Kiinaan.

SCP-komennon käyttö

Tässä harjoituksessa tarkoitus olisi tehdä web-sivuja paikallisella koneella ja kopioida se sitten palvelimelleni. Löysin Linuxin sivuilta wikiartikkelin SCP:stä ja luin siitä ensin hieman ohjeita: https://www.linux.fi/wiki/SCP. Menin paikalliselle koneelleni jaanaputro@Nyyti ja kävin katsomassa public_html -kansiotani. Siellä oli tuo painoindeksilaskuri, jonka olin tehnyt jossakin aiemmassa harjoituksessa. Päätin yrittää kopioida sen tuonne palvelimelle. Käytin siis komentoa “scp ~/bmi.html jaana@174.138.10.253:/home/jaana/publicSite“. Tämän jälkeen kysyttiin käyttäjän jaana salasanaa ja laitoin sen. Nyt tuli ilmotus, ettei tällaista hakemistoa kuin /home/jaanaputro/bmi.html ole. No siitä näyttäisi puuttuvan vielä tuo public_html välistä. Kokeilin siis:
scp ~/public_html/bmi.html jaana@174.138.10.253:/home/jaana/publicSite“. Nyt ei tullut virheilmoitusta, vaan tieto siitä, että jotakin oli 100% latautunut. Siirryin tuonne palvelimelleni (se oli auki toisessa ikkunassa) ja kävin katsomassa “cd publicSite” ja “ls” -komennoilla, että bmi.html tiedosto näkyi siellä. Menin selaimeen ja kirjoitin osoiteriville: putro.me/bmi. Ei toiminut. Näytti erroria. Kokeilin uudestaan: putro.me/bmi.html. Nyt näkyi painoindeksilaskuri ja vaikutti toimivankin ihan oikein.

Laita palvelimelle yksinkertainen PHP-sivu

Käytin tässä apuna Tero Karvisen ohjetta: http://terokarvinen.com/2016/read-mysql-database-with-php-php-pdo. Ensin: “sudo apt-get install libapache2-mod-php”. Sitten menin “cd PublicSite” kansiooni ja loin uuden tiedoston: “nano testi.php“. Tein siitä tämän näköisen:

php_testi1

Käytin myös apuna tätä ohjetta: http://php.net/manual/en/language.operators.string.php. Tehtävänannossa oli jo annettu esimerkki tuosta $_SERVER-kohdasta. Menin osoitteeseen putro.me/testi.php ja sain tällaisen näkymän:

php_testi2

 

Lähteet

Lähteet on tekstin seassa sitä mukaa, kun niitä on käytetty.

Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s