Linux palvelimet h4

Alkuperäinen päivämäärä: 12.2.2018

H4

Tehdään tehtäväkohdat a, s, y, b ja c, jotka löytyvät osoitteesta https://terokarvinen.com/2017/aikataulu—linux-palvelimet-ict4tn021-7-ti-ja-6-to-alkukevat-2018-5-op#h4

a) Tämän kohdan ehdin tehdä jo oppitunnilla, mutta käydään lyhyesti läpi, miten asia hoidetaan.

Oletetaan, että apache2 weppipalvelin on jo asennettu ja todettu toimivaksi siten, että oletussivu näkyy.

Ensiksi luodaan käyttäjän kotihakemistoon kansio public_html, jonka sisään tallennetaan index.html -tiedosto. Tiedostoon on hyvä kirjoittaa jotain, että tiedetään myöhemmin, että tiedosto oikeasti luetaan ja toimii.

Tämän jälkeen komentoriville annetaan komento sudo a2enmod userdir. Komento kytkee päälle apache2 moduulin userdir, eli käyttäjähakemistot. Webpalvelin täytyy käynnistää tämän jälkeen uudestaan komennolla sudo systemctl restart apache2.service. Tämän jälkeen sivuja voidaan kokeilla paikallisesti osoitteessa localhost/~käyttäjä. “Ulkopuolelta” testattaessa käytetään ip-osoitetta. Omassa tilanteessani käyttäisin siis osoitetta 159.89.5.3/~miikkb. Myös miikkavaltonen.com/~miikkb toimisi, sillä domain on yhdistetty osoitteeseen.

Jos aiemmin index.html tiedostoon kirjoitettu teksti ilmestyy selaimeen, sivu toimii ja käyttäjät pystyvät luomaan sivuja omilla oikeuksillaan.

s) Myös tämän kohdan ehdin tehdä tunnilla, mutta käydään prosessi läpi.

Lähdetään suorittamaan tehtävää tilanteesta, mihin edellinen tehtävä päättyi, eli käyttäjien sivut ja apachen oletussivu toimivat.

Ensiksi navigoidaan hakemistoon /etc/apache2/sites-available. Kansiosta löytyy oletuksena tiedostot 000-default.conf ja default-ssl.conf. Emme koske näistä kumpaankaan, vaan luomme uuden tiedoston komennolla sudo nano Miikkb.example.com.conf. Tiedoston voisi nimetä miten vaan, mutta sen täytyy päättyä .conf -päätteeseen.

Ymmärtääkseni tiedosto tavallaan kertoo, mistä oletussivu haetaan, ja missä tapauksissa se näytetään.

ServerName ja ServerAlias voivat käsittääkseni olla myös tietokoneen ip-osoitteita, mikäli domainia ei ole.

DocumentRoot kertoo, mistä näytettävä sivu haetaan. Tässä tapauksessa se haetaan käyttäjän kotikansiosta, /home/miikkb/publicSite. Kansioon tulee tehdä index.html tiedosto, mikä tehdään myöhemmin.

<Directory /home/miikkb/publicSite/> ja require all granted liittyvät ehkä oikeuksiin, mutta tästä en ole laisinkaan varma. Joka tapauksessa, kun tiedosto on tehty, voimme tallentaa tiedoston ja poistua nanosta.

Siirrytään kansioon /etc/apache2/sites-enabled. Kansio sisältää tiedostot jotka ovat palvelimella käytössä. On hyvä huomata, että kansio ei oikeasti varsinaisesti sisällä tiedostoja. Komennolla ls -l näemme, että tiedostot ovat oikeasti linkkejä, eli viitteitä muualla sijaitseviin tiedostoihin.

[email protected]:/etc/apache2/sites-enabled$ ls -l

total 0

lrwxrwxrwx 1 root root 42 Feb 6 15:15 Miikkb.example.com.conf -> ../sites-available/Miikkb.example.com.conf

Tiedosto siis haetaan kansiosta sites-available, mihin se aiemmin tehtiin. Jotta tiedosto saadaan käyttöön, on annettava komentoriville komento sudo a2dissite 000-example.conf. Komennolla poistetaan tiedoston linkki sites-enabled kansiosta. Tämän jälkeen kytketään aiemmin luotu sivu käyttöön komennolla sudo a2ensite Miikkb.example.com.conf. Lopuksi palvelin täytyy käynnistää vielä uusiksi komennolla sudo systemctl restart apache2.service.

Kun palvelin on käynnistetty uudestaan, siirrymme takaisin käyttäjän kotihakemistoon. Luodaan komennolla mkdir publicSite. Kansioon luodaan tiedosto index.html komennolla nano index.html. Tiedostoon on hyvä kirjoittaa jokin testiviesti, jotta nähdään että sivu toimii.

y) Seuraavaksi etsitään jälkiä murtautumisyrityksistä. Jälkiä löytyy helposti hakemistosta /var/log tiedostosta ufw.log. Avataan tiedoston viimeisimmät merkinnät komennolla tail -f ufw.log.

Feb 12 13:39:56 jeesus kernel: [528560.363534] [UFW BLOCK] IN=eth0 OUT= MAC=32:ae:f6:0d:16:0c:40:a6:77:34:67:f0:08:00 SRC=85.93.20.34 DST=159.89.5.3 LEN=40 TOS=0x00 PREC=0x00 TTL=250 ID=58493 PROTO=TCP SPT=52216 DPT=63387 WINDOW=1024 RES=0x00 SYN URGP=0

Feb 12 13:40:01 jeesus kernel: [528565.440320] [UFW BLOCK] IN=eth0 OUT= MAC=32:ae:f6:0d:16:0c:40:a6:77:34:67:f0:08:00 SRC=152.250.43.19 DST=159.89.5.3 LEN=40 TOS=0x00 PREC=0x00 TTL=235 ID=45793 PROTO=TCP SPT=33348 DPT=23 WINDOW=14600 RES=0x00 SYN URGP=0

Feb 12 13:40:29 jeesus kernel: [528592.811926] [UFW BLOCK] IN=eth0 OUT= MAC=32:ae:f6:0d:16:0c:40:a6:77:4f:3f:f0:08:00 SRC=112.241.205.54 DST=159.89.5.3 LEN=40 TOS=0x00 PREC=0x00 TTL=47 ID=1214 PROTO=TCP SPT=5245 DPT=23 WINDOW=3941 RES=0x00 SYN URGP=0

Yhteyttä ottavat ip-osoitteet ovat 85.93.20.34, 152.250.43.19 sekä 112.241.205.54.

85.93.20.34 on geoiplookupin mukaan Saksasta, 152.250.43.19 on Brasiliasta ja 112.241.205.54 on Kiinasta. Lokiin tulee merkintöjä melko usein lähes satunnaisista maista ja osoitteista. Tällä hämäräveikot yrittävät löytää huonosti suojattuja tietokoneita.

Lisäksi voimme tarkistaa /var/log hakemistossa sijaitsevan auth.login, mistä näemme osoitteiden lisäksi käyttäjänimiä, joina tunkeutujat yrittävät kirjautua. Nimiä on loputtomasti, mutta nostetaan esiin vaikka root, filip, alexander sekä zap. Nimet ovat siis käyttäjänimiä, joilla tunkeutujat yrittävät kirjautua tietämättä mitään tietokoneen oikeista käyttäjistä tai salasanoista.

b) Kohdassa b kokeillaan scp:n käyttöä. Scp:tä käytetään palvelinten väliseen tiedostokopiointiin.

Tehtävänä on luoda sivu paikallisella tietokoneella ja kopioida se virtuaalipalvelimeen.

Käytän testisivuna aikaisemmissa palautuksissa tehtyä lyhyttä ohjelmapätkää, mikä asettaa numeroita jonoon. Tallensin tiedoston kansioon /home/mvaltonen/public_html nimellä index.html. Seuraavaksi yritetään kopioida tiedosto virtuaalipalvelimelle kansioon /home/miikkb/public_html.

Scp:n käyttö ei ole minulle tuttua, joten vilkaisen Scp:n manuaalia komennolla man scp. Manuaali ei kuitenkaan paljon lohduttanut, joten selaan netistä käyttöohjeita. Löysin hyvät ohjeet sivulta http://www.hypexr.org/linux_scp_help.php. Sivusto kertoo komentojen käytön yksityiskohtaisesti, mikä on hyvä, sillä tiedostoja on helppo tuhota kopioimalla niitä miten sattuu.

Sivuston mukaan käytettävä komento olisi siis scp index.html [email protected]:/home/miikkb/public_html. Laitetaan sormet ristiin, ja kokeillaan kuinka käy.

Komentorivi kysyi virtuaalipalvelimen käyttäjän salasanaa, minkä jälkeen siirto tapahtui hämmästyttävän nopeasti.

[email protected]:~/public_html$ scp index.html [email protected]:/home/miikkb/public_html

[email protected]’s password:

index.html 100% 758 0.7KB/s 00:00

Ennen kokeilemista mielessäni kävi ajatus siitä, että pitäisikö komento sudottaa, mutta jätin kuitenkin kokeilematta, sillä kopiointi tapahtuu käyttäjän kotihakemistossa, missä lisäoikeuksia ei pitäisi tarvita.

Nyt kun kopiointi on valmis, tarkistan onko tiedosto kopioitunut oikein. Virtuaalipalvelimen kansiosta public_html löytyy identtinen tiedosto. Kopioimalla sen publicSite tiedostoon komennolla cp index.html /home/miikkb/publicSite saan sen näkymään suoraan osoitteessa miikkavaltonen.com. Scp:n käyttö on siis onnistunut.

c) Viimeisenä tehtävänä lisätään palvelimelle lyhyt PHP-sivu. Kuten aiemmissa palautuksissa, täytyy virtuaalipalvelimelle asentaa apachen php-moduuli komennolla sudo apt-get install libapache2-mod-php. Lisäksi apachen asetuksista täytyy sallia PHP:n käyttö käyttäjien sivuilla. Tämä onnistuu hakemistosta /etc/apache2/mods-available tiedostosta php7.0.conf.

Tiedostosta on tärkeä kommentoida alimmat 5 riviä laittamalla # rivin eteen. Muuta ei tarvitse muokata. Tämän jälkeen apache täytyy käynnistää uudelleen komennolla sudo systemctl restart apache2.service. Seuraavaksi voimme palata kotihakemistoon, publicSiteen ja muuttaa index.html tiedoston päätteen php:ksi, komennolla mv index.html index.php.

Lisään aikaisemmin scp:llä kopioituun tiedostoon tekstipätkän:

Here is your IP-address:

<?php $_SERVER[‘REMOTE_ADDR’] ?>

Testatessani sivua IP-osoite ei kuitenkaan näy. Konsultoin vähän kaveriani, joka tuntee PHP:n paremmin kuin minä, ja hän muistutti minua siitä, että osoite täytyy tietenkin echota näkyviin. Nykyiselläänhän komento vain kerää osoitteen eikä tee sillä mitään. Muokataan siis PHP-koodia seuraavasti:

Here is your IP-address:

<?php echo $_SERVER[‘SERVER_ADDR’] ?>

Ja sivuhan toimii. Sivu siis tulostaa käyttäjän IP-osoitteen.

This entry was posted in Uncategorised. Bookmark the permalink.

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.