Tässä postauksessa raportoin Tero Karvisen Linux Palvelimet-kurssin tehtävää 4.
Käyttämäni tietokone on HP:n 655 G1 läppäri.
Raportin aloitus klo 12:03 09.02.2018.
Tehtäviin postatuissa kuvissa saattaa vahingossa vilkkua palvelimen IP-osoite, muistutuksena ettei kyseinen osoiteavaruus ei toimi tätä dokumenttia lukeville.
Käytän multitail-nimistä ohjelmaa lokitiedostojen tarkasteluun.
Ennen tehtävien aloittamista annoin terminaaliin komennot
$ sudo-apt get update $ sudo apt-get upgrade
päivittääkseni kaiken ajan tasalle.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
a) Virtuaalipalvelimelle käyttäjille oikeudet tehdä kotisivuja
Aloitetaan tehtävä kirjautumalla palvelimelle.
$ ssh käyttäjä@palvelin
Kun ollaan palvelimella voidaan laittaa tulimuuriin oikeat reiät meidän käyttötarkoituksille eli portti 22 ssh:lle ja portti 80 http:lle ja lopuksi itse tulimuuri päälle.
$ sudo ufw allow 22/tcp $ sudo ufw allow 80/tcp $ sudo ufw enable
Sitten vielä palvelin ajan tasalle.
$ sudo apt-get update $ sudo apt-get upgrade
Asennetaan Apache.
$ sudo apt-get install apache2
Käyttäjille oikeudet tehdä sivuja komennolla
$ sudo a2enmod userdir
Nyt käyttäjät voivat tehdä kotisivuja omaan kotihakemistoonsa ja pääsevät niitä katsomaan osoitteessa
roopeme.me/~käyttäjä
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
s) Käyttäjän kotisivu näkymään Apachen oletussivuna
Tehdään ensin käytäjälleni oma public_html-hakemisto (olen jo lisännyt itselleni oman käyttäjän ja lisännyt sen sudo, adm ja admin ryhmiin ja lukinnut root-käyttäjän, kiitokset ohjeesta Terolle)
$ cd $ mkdir public_html
Sen jälkeen nanolla äkkiä testisivu, johon ihan perus html
$ cd public_html/ $ nano index.html
Lisätään vielä testimielessä sivulle kuva, jonka siirrän scp-komennolla palvelimelle
$ scp kuva.jpg käyttäjä@palvelin:public_html/
Tämän jälkeen muokataan index.html-tiedostoa näyttämään kuva.jpg jonkun surffatessa sivulle.
Apachen oletussivun muokkaamiseksi tehdään uusi .conf-file Apachelle antamalla komento
$ sudoedit /etc/apache2/sites-available/roope.conf
Lisätään seuraavat konfiguraatiot:
## /etc/apache/sites-available/roope.conf <VirtualHost *:80> DocumentRoot /home/roope/public_html/ <Directory /home/roope/public_html/> Require all granted </Directory> </VirtualHost>
Pistetään äsken tehdyt konfiguraatiot käyttöön ja restartataan Apache niiden voimaan tulemiseksi.
$ sudo a2ensite roope.conf $ sudo systemctl restart apache2.service
roopeme.me voi nähdä työn tuloksen.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Tässä kohtaa pitää keskeyttää raportointi, kello on 13:13.
Raportin jatkaminen 13.2.2018 klo 18:02
Taas ennen itse tehtäviä sekä omalla koneella että palvelimella
$ sudo-apt get update $ sudo apt-get upgrade
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
y) Etsi palvelimesi lokeista murtautumisyrityksiä ja hae IP-osotteista lisätietoa
Ehdimme katsoa jo tunneilla muutaman kaverin kanssa lokeja ja silloin jo murtautumisyrityksiä tuli joka kymmenes sekunti, eli tehtävään tarvittavan materiaalin hankkiminen ei tosiaan ole vaikeaa.
Avataan ensin ssh-yhteys palvelimeen
$ ssh käyttäjä@palvelin
Avataan lokit
$ multitail /var/log/auth.log
Heti löytyy useitakin
IP:t ovat:
- 58.218.198.173
- 125.212.247.108
Ladataan geoiplookup ja whois
$ sudo apt-get install -y geoip-bin whois
Katsotaan ensin geoiplookupin tulokset
IP:t ovat Kiinasta ja Vietnamista.
Seuraavaksi whois
$ whois ip.os.oi.te
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
b) Tee weppisivuja paikallisella koneellasi ja kopioi ne palvelimelle scp-komennolla
Tehdään pari perusnettisivua samaan tapaan kuin ennen, nimetään ne scptesti1.html, scptesti2.html, scptesti3.html ja laitetaan ne kansioon scptestisivut
$ cd $ cd public_html # kansioon siirtyminen ei siis ole pakollista, mutta itse teen ensin kansion public_html hakemistoon ja siirrän sen sieltä $ mkdir scptestisivut $ cd scptestisivut $ nano scptesti1.html $ nano scptesti2.html $ nano scptesti3.html
Lisäsin luodessani kaikkiin perus-htmlpätkän, mutta jokainen eroaa hieman toisistaan.
Viedään kansio sisältöineen palvelimen public_html-kansioon. Muistetaan olla oikeassa hakemistossa, eli annetaan ennen siirtämistä komento cd .. siirtyäksemme ylemmäksi.
$ cd .. $ scp -r scptestisivut/ käyttäjä@palvelin:public_html/
Tiedostot ovat siirtyneet ja sivut toimivat! Voit nähdä ne halutessasi osoitteessa http://www.roopeme.me/scptestisivut/. (Ois ehkä voinut nimetä yhden index.html)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c) Laita palvelimellesi jokin yksinkertainen PHP-sivu
Asennetaan ensimmäiseksi palvelimelle Apacheen PHP-moduli, kommentoidaan php7.0.conf-tiedostosta käyttäjien estot pois ja käynnistetään apache uudestaan muutoksien voimaan tulemiseksi.
$ sudo apt-get install libapache2-mod-php $ sudoedit /etc/apache/mods-enabled/php7.0.conf # <ifmodule> osuus pois $ sudo systemctl restart apache2.service
Tehdään ohjeen ehdottama IP-tulostin
$ cd public_html $ nano ip.php
En vieläkään ole suuri koodaamisen ystävä, mutta väsäsin parin minuutin googletuksen avulla nämä kolme riviä koodia:
<?php echo 'I know your IP is '.$_SERVER['REMOTE_ADDR'] .'; ?>
Testasin surffata sivulle roopeme.me/ip.php, mutta se antoi errorkoodia 500. Katsotaan lokia.
$ multitail /var/log/apache2/error.log
Loki kertoo, että rivillä kaksi on virhe. Korjaillaan koodia. Laitoin pari rivinvaihtoa nähdäkseni missä kohtaa virhe on. Rivillä 5 eli
'$_SERVER['REMOTE_ADDR'] .";
on jotain mätää. Kysytään apua toverilta joka tätä hommaa paremmin osaa, muokataan koodia, multa puuttuu yksi piste ja sulku. Korjattu koodi näyttää tältä:
<?php echo 'I know your IP is '.$_SERVER['REMOTE_ADDR'].'.'; ?>
Pitää taas tässä kohtaa taas todeta, etten ole luotu koodaamaan. Sivua voi kokeilla täällä.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Raportin pakollisten tehtävien lopetus 19:31. Ajattelin tehdä muutaman valinnaisen tehtävän, mutta oletan ettei niiden aikataulu ole yhtä tiukka niin lisäilen niitä kun kerkeän.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
r) ja x) VPS ja domain-nimi
14.2.2018 klo 00:07
Ehdin tehdä nämä jo tunneilla, mutta fiksuna otin muistiinpanot ja voin raportoida tapahtumat.
Aktivoimalla Github Educationin saimme Digital Oceanille ilmaiseksi $50 ja NameCheapistä domainin vuodeksi.
Virtuaalipalvelin
Digital Oceanissa valitsin käyttäjän teon ja alennuskoodin lunastamisen jälkeen avautuvalla “Make a Droplet”-sivulla paketiksi $5/kk ja palvelintaloista valitsin Amsterdamin koska se on lähimpänä maantieteellisesti.
Koneelle on varattu:
- 1 GB RAM
- 25 GB SSD-levytilaa
- 1 virtuaaliprosessori
- 1 TB transfer-raja
- Ubuntu 16.04.03 x64 käyttöjärjestelmä
En ostanut mitään spesiaalipalveluita. Koko palvelinkoneen luomiseen meni yhteensä ehkä kymmenisen minuuttia.
Heti koneen asennuttua sain sähköpostiini root-tunnuksen salasanan, jolla pääsin tekemään alkutoimet eli tulimuurin asetukset ja oman käyttäjän.

Domain
Domainia NameCheapista ostaessa olisi voinut valita maksullisen .com-päätteen, mutta tyydyin .me päätteeseen ainakin vielä, ehkä joskus tulevaisuudessa ostan omasukunimi.com.
Ostaessa valittiin domainin nimi (roopeme.me), tehtiin käyttäjä ja lopuksi kirjauduttiin sisään muuttamaan domainin asetuksia.
Asetuksista muokkasin:
- A Record, hostiksi @, IP:ksi palvelimen ip ja TTL:ksi 5 minuuttia
- CNAME Record, hostiksi www, targetiksi roopeme.me ja TTL 5 minuuttia
Homma lähti rullaamaan vasta ~30 tunnin kuluttua asetusten vaihdon jälkeen, koska NameCheap oli automaattisesti laittanut sivulle mainoksiaan, eli “Parking Page”-tilan päälle.
Lopetus 00:16
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
v) Laita monta DNS-nimeä samaan IP-osoitteeseen
14.2.2018 klo 01:24
Kokeillaan. Löysin hyvän ohjeenkin. Hahmotan ohjeen luettuani tehtävän jotenkuten.
Tein hakemistot käyttäen esimerkiksi näitä komentoja pariin otteeseen
$ sudo mkdir esimerkkihakemisto $ sudo cp -r esimerkkihakemisto uusiesimerkkihakemisto $ sudo nano index.html
Kopioin yhden sivun (koko hakemiston eli cp -r), jota käytän kuvien siirtämiseen koneelta koneelle, lataussivu.jee:n public_html-kansioon ja toinensivu.jee sai public_html-kansioonsa ihan perus index.html-sivun ilmaan mitään spesiaalia sisältöä.
Tämän jälkeen kopioin Apachen 000-default.conf tiedoston lataussivu.jee:tä varten
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/lataussivu.jee.conf $ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/toinensivu.jee.conf
Muokkasin lataussivu.jee.conf tiedostoa seuraavanlaiseksi:
<VirtualHost *:80> ServerAdmin roope@enhaluueemailia.com ServerName lataussivu.jee ServerAlias www.lataussivu.jee DocumentRoot /var/www/lataussivu.jee/public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Kopioin sen toinensivu.jee:tä varten komennolla
$ sudo cp /etc/apache2/sites-available/lataussivu.jee.conf /etc/apache2/sites-available/toinensivu.jee.conf
Ja muokkasin sen
<VirtualHost *:80> ServerAdmin roope@enhaluueemailia.com ServerName toinensivu.jee ServerAlias www.toinensivu.jee DocumentRoot /var/www/toinensivu.jee/public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Pistetään konfiguraatiot käyttöön ja vanha pois käytöstä komennoilla
$ sudo a2ensite lataussivu.jee.conf $ sudo a2ensite toinensivu.jee.conf $ sudo a2endissite 000-default.conf
Ja käynnistetään vielä Apache uudelleen niiden voimaan tulemiseksi
$ sudo systemctl restart apache2.service
Muokataan /etc/ hakemistossa olevaa hosts-tiedostoa ja lisätään sinne palvelimen IP-osoite ja mihin se osoittaa jos haluan niihin surffailla omalla koneellani
Huomautuksena, että tämä tosin toimii vain jos olen kotiverkossani ja jos Xubuntukoneen IP ei mysteerisesti vaihdu vaikka se on asetettu staattiseksi.
192.168.1.7 lataussivu.jee 192.168.1.7 toinensivu.jee
Toistetaan sama Windowsilla, että voin siellä puolella sivuihin yhdistää. Iso kiitos tämän ohjeen tekijälle, Windowsissa vaihteeksi tuhottomasti vaikeampaa muokata yhtä tiedostoa.
Kokeillaan.
Molemmat sivut toimii niinkuin pitää, eli tyytyväisenä voin lopettaa tältä päivältä tehtävät tähän.
Kello näyttää 02:16
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 thoughts on “Linux Palvelimet: Harjoitus 4 raportti”