Apache2, PHP and firewall with Salt

Tein harjoituksen kotonani HP Pavilion 15-aw022no-tietokoneella, käyttöjärjestelmänä toimi 64-bittinen Ubuntu 16.04.3 livetikulta. Livetikku toteutettu Pendrivelinuxilla.
Tehtävät Tero Karvisen sivuilta.

b) Laita käyttäjien kotisivut toimimaan Apachella.

5.4.2018 klo 20:15

Ensiksi annoin komennot setxkbmap fi ja sudo apt-get update saadakseni tietokoneen ajantasalle ja näppäinkartan tutuksi.

Testasin ensiksi käsin ja sitten vasta Saltilla.

Seuraavaksi asensin Apachen, sudo apt-get install apache2 -y.

Testasin asentuiko Apache toivotusti, eli otin yhteyttä localhostiin Firefoxill. Vastassa oli tuttu defaultti sivu. Kaiutin komennolla echo hei | sudo tee /var/www/html/index.html oletussivun pois. Latasin localhost sivun uudestaan ja nyt siellä oli vain sana hei.

Seuraavaksi piti saada käyttäjien kotisivut toimimaan. Tein kansion komennolla mkdir public_html ja sinne tiedoston komennolla  nano ~/public_html/index.html. Tiedostoon kirjoitin vain Hei. Otin komennolla sudo a2enmod userdir hakemistot käyttöön. Viimeiseksi käynnistin Apachen uudestaan komennolla sudo systemctl restart apache2.service jonka jälkeen testasin toimiiko. Siirryin takaisin Firefoxiin ja kirjoitin osoitteeksi localhost/~xubuntu. Tulos oli toivottu “Hei”.

Seuraavaksi Saltilla.

Latasin Salt herran ja orjan samalle tietokoneelle komennolla sudo apt-get install salt-master salt-minion -y. Lisäsin orjalle oman ID:nsä ja herran osoitteen minion-tiedoston loppuun. Käytin masterin IPv4 osoitteena 127.0.0.1, joka viittaa tietokoneeseen itseensä.

minionID.png

Tiedostoon pääsee käsiksi komennolla sudoedit /etc/salt/minion. Muokkauksen jälkeen käynnistin orjan uudestaan komennolla sudo systemctl restart salt-minion.service.

Sitten vielä hyväksyin herralla orjan avaimen komennolla sudo salt-key -a mati. Viimeiseksi testasin toimivuutta antamalla komennon sudo salt ‘*’ cmd.run ‘whoami’, johon vastattiin edellisestä tehtävästä tutulla tavalla “root”.

Tällä kertaa hankkiuduin eroon turhasta ‘file_ignore_glob’-varoituksesta yksinkertaisesti muokkaamalla sudoeditillä /etc/salt/master tiedostoa lisäämällä file_ignore_glob: [] loppuun. Ohjeet ‘file_ignore_glob’ ongelman ratkaisuun Tero Karvisen sivulta.

Herra-orja arkkitehtuuri toimii.

Ensiksi piti selvittää mitä tiedostoja a2enmod komento oikeastaan muuttaa, että voidaan Saltilla tämä toistaa. Komennolla find -printf “%T+ %p\n”|sort | grep apache listaan mitä muutoksia on tehty asetustiedostoihin ja mihin aikaan. Näin löysin helposti viimeisimmät Apachen muutokset eli haluttujen kansioiden nimet, jotka olivat ./mods-enabled/userdir.conf ja ./mods-enabled/userdir.load.

Sitten loin Saltille kansion minne sijoitan tilat. Saltti kansioon vielä Apachelle oma kansio. Komennot sudo mkdir /srv/salt ja sudo mkdir /srv/salt/apache. Sitten tein tiedoston, mikä sisältää tilat komennolla  sudoedit /ssudoedit /rv/salt/apache/enable.sls. Tiedoston sisällön löytää Tero Karvisen ohjeista.

apacce.png

Sitten tein tiedoston johon viitataan edellisessä, joka sisältää sivun joka ladataan kaikille. sudoedit /srv/salt/apache/index.html ja tiedostoon kirjoitin “Heihei maailma”.

Testasin, että toimiiko komennolla sudo salt ‘*’ state.apply apache. Vastaukseksi sain, että “No matching sls found for ‘apache’ in env ‘base’ “.  Kokeilin seuraavaksi komennolla sudo salt ‘*’ state.apply enable, mutta sama tulos.

Hetken guuglailtuani tulin siihen tulokseen, että tilan tiedoston nimen on pakko olla init.sls jos se on jossain kansiossa. Poistin kokonaan enable.sls tiedoston, sudo rm enable.sls,  ja tein samanlaisen nimellä init.sls. Kokeilin uudestaan komentoa sudo salt ‘*’ state.apply apache.

Succeeded! Kaikki on nyt siis kirjoitettu oikein. Kokeilin vielä poistaa Apachen ja käyttää komentoa uudestaan. Käytin komentoja  sudo apt-get purge apache2-data ja sudo apt-get purge apache2-bin poistaakseni Apachen. Sitten löin uudestaan sudo salt ‘*’ state.apply apache komennon, jonka jälkeen totesin tilan nyt toimivan halutusti.tilatoim.png

Ajoin komennon vielä muutaman kerran varmistaakseni, ettei se asenna turhaan uudestaan mitään.

c) Laita PHP toimimaan käyttäjien kotisivuilla.

Ensiksi käsin.

Asensin libapache2-mod-php-paketin, jonka jälkeen muutin sudoeditillä neljä viimeistä riviä kommenteiksi tiedostosta /etc/apache2/mods-available/php7.0.conf. Käynnistin Apachen uudestaan, sudo systemctl restart apache2.service. Seuraavaksi poistin edellisen index.html tiedoston /public_html kansiosta ja tein sen tilalle index.php tiedoston ja kirjoitin sinne simppelin laskun.

phpcode.png

Kokeilin ladata Firefoxilla uudestaan localhost/~xubuntu sivun, joka näytti toivotusti laskun tuloksen.

Sitten Saltilla.

Jatkoin saman init.sls tiedoston kanssa. Muokkasin alkuun, että haluan myös phpmodin olevan ladattuna. Sitten laitoin uuden kohdan missä määrittelen mitä tiedostoa haluan muuttaa. Tiedon lähteeksi laitoin phpcongif nimisen tiedoston, jonka tein tämän tallentamisen jälkeen. Lisäksi vielä laitoin watch-listaan tiedoston polun, että tämä käynnistettäisiin uudelleen.

nytinint.png

Poistin taas Apachen tiedostoja ja ajoin tilan. Kaikki onnistui sanoman mukaan. Latasin Firefoxissa localhost/~xubuntu sivun uudestaan. Sivu näytti taas laskun tuloksen! Kokeilen vielä poistaa aivan kaikki, että ei onnistunut edellisten asetusten ansiosta.

sudo apt-get purge libapache2-mod-php7.0 -y
sudo apt-get purge -y apache2-bin apache2-data

Näiden komentojen jälkeen annoin komennon sudo salt ‘*’ state.apply apache. Kaikki toimii taas, laskutoimituksineen kaikkineen. Voin siis todeta tämän onnistuneeksi.

d) Rakenna tila (state), joka tekee Apachelle uuden nimipohjaisen virtuaalipalvelimen (name based virtual hosting).

Ensiksi käsin.

sudoedit /etc/apache2/sites-available/matias.example.com.conf komennolla tein tiedoston, jolla viitataan polkuun mistä halutaan sivut haettavan. Halusin, että sivuilla käytetään public_html kansion tiedostoja. virtualhost.png

Sitten muokkasin sudoeditillä /etc/hosts kansiota lisäämällä siihen, että matias.example.com löytyy omasta tietokoneestani.

hosts.png

Testasin Firefoxilla menemällä osoitteeseen matias.example.com, vastassa oli taas tuttu vastaus laskuun 2*10.

Sitten saltilla.

Samaan tapaan kun edellinen tehtävä, kopioin äsken muokatut hosts- ja matias.example tiedostot /srv/salt/apache kansioon komennoilla sudo cp /etc/hosts /srv/salt/apache/ ja sudo cp /etc/apache2/sites-available/matias.example.com.conf /srv/salt/apache/. Sitten siirryin muokkaamaan /srv/salt/apache/init.sls tiedostoa.

Tällä kertaa ei tarvinnut asentaa enempää paketteja, mutta uusi tiedosto piti luoda, toista muokata ja antaa vielä komentoja.

Tiedojen luominen ja muokkaaminen onnistui taas vain laittamalla, että mihin polkuun haluaa millaisen tiedoston ja mistä tiedot haetaan. Eli lisäsin seuraavat init.sls tiedostoon muiden vastaavien alle.

example.png

Tähän mennessä kun ajaa tilan, niin tiedostoista tulee halutunlaisia. Testasin poistamalla matias.example.com.conf tiedoston ja sitten ajamalla tilan.

Sitten piti tehdä komento a2ensite ja uudelleenkäynnistys.

Komennolla find -printf “%T+ %p\n”|sort | grep apache etsin taas mitä a2ensite muokkaa. Silmääni osui ./sites-available/matias.example.com.conf ja ./sites-available. Oletin, että molemmat pitää init-tiedostoon lisätä, joten kirjoitin nämä seuraavanlaisesti. Laitoin myös /matias.example.comin watchin alle, jotta se käynnistettäisiin uudelleen. Lisätyt rivit ovat merkitty punasella.

initmatias.png

7.4.2018 19.13

Buuttasin tyhjän live-tietokoneen vastaavasti mitä tehtävän alussa. Eli tutut näppäimistökartat, pakettien päivitykset ja Saltin herra-orja konfiguraatio täysin identtisesti mitä aikasemminkin. Tallensin kaikki /srv/salt/apache tiedostot internetin syövereihin, joten mitään ei tarvitse aloittaa alusta ja homma jatkuu samasta kohtaa mihin jäätiin.

Nyt pääsin kokeilemaan täysin tyhjään koneeseen Salttia. Annoin komennon sudo salt ‘*’ state.apply apache. Hetken päästä sain ilmoituksen, että kaikki onnistui.

onistuu.png

Siirryin Firefoxilla matias.example.comiin katsomaan onnistuiko tämä oikeasti. Sivu  näytti “Heihei maailma”, niinkuin pitikin.

e) Tee tila, joka laittaa esimerkkikotisivun uusille käyttäjille.

Koska tämä hoituu vain tekemällä public_html kansion ja sinne index.html tiedoston komennoilla sudo mkdir public_html ja sudoedit index.php, siirryin suoraan pähkäilemään tätä Saltilla.

Löysin Saltin sivuilta FILE.RECURSE kohdan missä on esimerkki miten kopioidaan kokonainen directory. Päädyin kirjoittamaan tämän tilan seuraavasti.

skel.png

Sitten loin komennolla sudo mkdir /srv/salt/apache/public_html kansion ja public_html kansioon vielä index.html tiedosto komennolla sudoedit index.html. Tiedostoon kirjoitin vain “Hello World”.

Komennolla sudo salt ‘*’ state.apply apache kokeilin luoko tämä kansion ja tiedoston oikeaan sijaintiin. Hetki sitten /etc/skel/ oli tyhjä, vaan ei enään. Siellä oli kaikki mitä pitää. Tein vielä uuden käyttäjän, sudo adduser mati, ja siirryin Firefoxilla osoitteeseen localhost/~mati. Sieltä löytyi “Hello world”!

f) Eri asetukset. Tee Package-File-Service tilalla eri asetuksia kuin ne, mitä tehtiin tunnilla; ja eri kuin mitä teit/teet h2 muissa kohdissa.

8.4.2018 21.17

Aloitin tehtävän tyhjältä koneelta. Eli tutut näppäimistökartat, pakettien päivitykset ja Saltin herra-orja konfiguraatio täysin identtisesti mitä aikasemminkin.

Päätin tehdä tilan mikä aktivoi palomuurin ja tekee siihen SSH:lle, HTTP:lle ja HTTPS:lle reijät.

Ensiksi annoin komennot

sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

Siirryin /etc/ufw kansioon ja annoin komennon sudo find -printf ‘%T+ M %p\n%A+ A %p\n%C+ C %p\n’|sort. Kellon ajoista päättelin mitä tiedostoja komennot muuttaa. Tiedostot olivat /ufw.conf, /user.rules ja /user6.rules. Kopion muutettujen tiedostojen sisällön kopypasteemalla /srv/salt kansioon tekemiini uusiin tiedostoihin, jotka tein sudoeditillä. Nimet pysyivät tiedostoilla samoina.

Sitten loin sudoeditillä tiedoston ufw.sls, jossa päädyin “hetken” kamppailun jälkeen seuraavanlaiseen lopputulokseen.

ufwtied.png

Komennolla sudo salt ‘mati’ state.apply ufw testasin tuleeko virheilmoituksia. Tarkastin palomuurin tilan komennolla sudo ufw status. Viimeisen muokkauksen jälkeen, kun pääsin kuvassa olevaan ratkaisuun, sain ilmoituksen, että kaikki onnistui ja ufw: True.

Tarkistin palomuurin tilan. Tietokone nyt aktivoi palomuurin ja tekee siihen reijät porteille 22, 80 ja 443.

Kokeilin vielä poistamalla kaikki säännöt ja ottamalla palomuurin kokonaan pois käytöstä.
sudo ufw delete allow 22/tcp
sudo ufw delete allow 80/tcp
sudo ufw delete allow 443/tcp
sudo ufw disable

Sitten ajoin tilan, sudo salt ‘mati’ state.apply ufw.

toimnii.png

TOIMII

Laitoin kaikki rivit tekstitiedostoihin nähtäville.

Apache: http://richterich.me/saltapache.txt
Palomuuri: http://richterich.me/saltfirewall.txt

 

Lähteitä:

http://terokarvinen.com/2018/aikataulu-%e2%80%93-palvelinten-hallinta-ict4tn022-4-ti-5-ke-5-loppukevat-2018-5p
http://terokarvinen.com/2018/apache-user-homepages-automatically-salt-package-file-service-example
https://docs.saltstack.com/en/getstarted/config/files.html
https://docs.saltstack.com/en/latest/ref/cli/salt-key.html

Leave a Reply

Your email address will not be published. Required fields are marked *