Palvelimen käyttöönotto

Viikon harjoituksen aiheena oli kokeilla virtuaalista palvelinta. Tehtävät tein Fujitsu Lifebook koneella. Koneeseen on asennettu Windows 7, mutta tehtävät tein Xubuntu-livetikulla.

GitHub

Koska viikon lähiopetustunnit jäivät osaltani käyttämättä, harjoituksen tekeminen alkoi käymällä läpi ohjeita GitHubin käyttöön ja palveluun rekisteröitymisessä. Aluksi kävin rekisteröimässä koulun sähköpostiosoitteen palveluun sivulla: https://github.com/. Hain opiskelijan ilmaisversion GitHubin Student developer packin, johon sisältyi 50$ DigitalOcean-palveluun.

Ihan aluksi katsoin videon asiaan liittyen:

Videon katsomisen jälkeen asensin git:in koneelle. Git on versionhallintaohjelma.

sudo apt-get install git

Tämän jälkeen tein koneelle kansion public_html, johon harjoitus oli tarkoitus tehdä.

mkdir public_html

Seuraavaksi menin kansioon ja tein GitHubin sivulla tililleni uuden sivuston (respository), jonka nimesin ”P_serveri”

Tämän jälkeen seurasin GitHubin ohjeita, jossa oli valmiit komennot jotka saattoi kopioida oman koneen komentokehoitteeseen. Ensimmäisenä oli:

echo "# P_Serveri" >> README.md

Joka teki koneen kansioon README.md tiedoston. Seuraavaksi annoin ohjeen mukaan käskyt, jolla annetaan gitille ohjeet tietojen siirtämiseen palvelimelle:

git init
git add README.md
git commit -m "first commit"

Jolloin tuli virheilmoitus:

*** Please tell me who you are.

Run

git config –global user.email ”you@example.com”
git config –global user.name ”Your Name”

to set your account’s default identity.
Omit –global to set the identity only in this repository.

fatal: unable to auto-detect email address (got ’xubuntu@xubuntu.(none)’)

Jolloin annoin komentokehoitteeseen ohjeen mukaan GitHubiin ilmoittamani sähköpostin ja käyttäjätunnuksen.

Tämän jälkeen

git commit -m ”first commit”

toimi ilman virheitä.

Seuraavaksi annoin komennon:

git remote add origin https://github.com/GitHubtunnus/P_Serveri.git

Joka kertoo koneelleni, mistä löytää minun GitHubin tilini.

Lopuksi komento:

git push -u origin master

Jolloin tulee kirjautuminen palvelimelle omilla tunnuksilla ja git siirtää public_html kansion tiedostot palvelimelle.

Tämän jälkeen tein kansioon uuden tiedoston:

nano index.html

Koska tiedosto on omalla koneella, se pitää siirtää palvelimelle komennoilla:

git add index.html

git commit -m ”Eka HTML”

git remote add origin https://github.com/GitHubtunnus/P_Serveri.git

git push -u origin master

Ja index.html ilmestyi palvelimelle.

Tässä vaiheessa en ollut enää aivan varma oliko tässä mitään mitä haettiin, mutta tulipahan tutustuttua myös tähänkin palveluun ja uusiin Linux-komentoihin.

DigitalOcean

Rekisteröidyin DigitalOcean-palveluihin GitHubista saamallani oppilaskoodilla. Palvelimen käyttöjärjestelmäksi valitsin Ubuntu 16.4.3, jota palvelu tarjosi oletuksena ja kooksi pienimmän mahdollisen. Loput asetukset jätin oletuksiin ja loin palvelimen. DigitalOceanin sivusto oli hyvin looginen ja aloittajaystävällinen. Tämän lisäksi ohjeita löytyi mm. kurssin opettajan omilta sivuilta.

Seuraavaksi otin SSH-yhteyden palvelimelle.

ssh root@ip-osoite (jonka olin saanut sähköpostiini, kun loin palvelimen DigitlOcean-palveluun)

Seuraavaksi tuli varoitus, että olenko aivan varma mihin olin menossa, johon luonnollisesti vastasin: ”yes”, kuten aina… Tämän jälkeen tuli kirjautuminen sillä salasanalla, jonka olin saanut s-postiini, koska olin jättänyt palvelimen luontivaiheessa kaikki asetukset oletukseen. Tämän jälkeen tuli pakotettu salasanan vaihto.

Suraavaksi aktivoin palomuurin niin, että jätin vain portin 22 auki SSH-yhteyttä varten.

sudo ufw allow 22/tcp (jätetään ensin portti 22 auki)

sudo ufw enable (estetään muu liikenne sisään)

Tämän jälkeen luodaan palvelimelle käyttäjä ja estetään root-kirjautuminen.

$ sudo adduser seppanen
$ sudo adduser seppanen sudo
$ sudo adduser seppanen adm
$ sudo adduser seppanen admin

Seuraavaksi kokeillaan kirjautua palvelimelle uudella käyttäjätunnuksella ja salasanalla.

ssh seppanen@palvelimen ip-osoite

Tunnukset toimivat.

Seuraavaksi estetään root-kirjautuminen.

sudo usermod –lock root

ja muokataan tiedostoa ohjeiden mukaan:

sudoedit /etc/ssh/sshd_config

# Authentication:
LoginGraceTime 120
PermitRootLogin no
StrictModes yes

sudo service ssh restart

Kirjauduin palvelimeen luomallani seppanen-käyttäjänä ja kokeilin sudo-komentoja ja asensin samalla LAMP-kilkkeet palvelimeen.

sudo apt-get update

sudo apt-get upgrade

sudo apt-get -y install apache2 mysql-server mysql-client libapache2-mod-php php-mysql

Kokeilin vielä kirjautua root-käyttäjänä, mutta pääsy oli kielletty.

Testaa palvelinta

Aluksi kokeilin onko Apache asentunut palvelimelle. Avasin koneelle selaimen ja yritin avata sivun oman palvelimeni ip-osoitteella. Mitään ei tapahtunut, eikä Apachen oletussivu avautunut. En ollut muistanut avata porttia 80, jota http-protokolla käyttää, joten selain saa turhaan huudella vastausta ip-osoitteesta. Eli avataan portti 80:

sudo ufw allow 80/tcp

ja Apachen oletussivu avautui. Seuraavaksi tein kansion public_html ja sinne tiedoston index.html, johon tein perinteisen ”Hello Kitty!” tervehdyksen.

mkdir public_html

nano index.html

<!DOCTYPE html>
<html>
<head>
<title>OmaSivu</title>
<meta charset=”UTF-8″>
</head>
<body>

<h1>Hello Kitty!</h1>

</body>
</html>

Tämän jälkeen muutin 2. harjoituksen ohjeita kerraten oletussivuksi oman sivun ja kokeilin ip-ositetta. Sivulla näkyi edelleen Apachen oletussivu… Luin harjoitustehtävän vastaustani uudelleen ja lisäsin ip:n jälkeen /~seppanen, ja oma sivu avautui.

Seuraavaksi yritin päästä eroon tuosta /~seppanen ip:n lopussa, eli ohjata liikenteen oletuksena omalle sivulle. Ohjeet löytyi Tero Karvisen kotisivuilta. Toimin ohjeiden mukaan.

sudoedit /etc/apache2/sites-available/seppanen.conf

Ja kerroin palvelimelle minne saapuva liikenne ohjataan portista 80.

## /etc/apache2/sites-enabled/seppanen.conf
<VirtualHost *:80>
DocumentRoot /home/seppanen/public_html/

<Directory /home/seppanen/public_html/>
Require all granted
</Directory>
</VirtualHost>

Tästä innostuneena kokeilin heti ip-osoitetta, mutta Apachen oletussivu tuli taas kummittelemaan, joten luin ohjetta eteenpäin. Pari komentoa puuttui vielä.

sudo a2ensite seppanen.conf
sudo a2dissite 000-default.conf

ja käynnistetään vielä palvelin uudelleen

sudo service apache2 restart

Ja testataan sivua uudelleen. ”Hello Kitty!” tulee näkyviin!!!

Tunkeutumisyrityset

Löysin artikkelin jossa avattiin lokien tulkitsemista hyökkäysten varalle.

Annoin komennon:

cat /var/log/apache2/other_vhosts_access.log

Loki oli täynnä tapahtumia, joista olen ottanut pätkän 3 sekunnin ajalta:

127.0.1.1:80 203.117.153.38 – – [24/Sep/2017:18:26:30 +0000] ”HEAD http://46.xxx.xxx.xxx:80/administrator/phpmyadmin/ HTTP/1.1” 404 195 ”-” ”Mozilla/5.0 Jorgee”
127.0.1.1:80 203.117.153.38 – – [24/Sep/2017:18:26:30 +0000] ”HEAD http://46.xxx.xxx.xxx:80/administrator/phpMyAdmin/ HTTP/1.1” 404 195 ”-” ”Mozilla/5.0 Jorgee”
127.0.1.1:80 203.117.153.38 – – [24/Sep/2017:18:26:30 +0000] ”HEAD http://46.xxx.xxx.xxx:80/administrator/db/ HTTP/1.1” 404 195 ”-” ”Mozilla/5.0 Jorgee”
127.0.1.1:80 203.117.153.38 – – [24/Sep/2017:18:26:30 +0000] ”HEAD http://46.xxx.xxx.xxx:80/administrator/web/ HTTP/1.1” 404 195 ”-” ”Mozilla/5.0 Jorgee”
127.0.1.1:80 203.117.153.38 – – [24/Sep/2017:18:26:31 +0000] ”HEAD http://46.xxx.xxx.xxx:80/administrator/pma/ HTTP/1.1” 404 195 ”-” ”Mozilla/5.0 Jorgee”
127.0.1.1:80 203.117.153.38 – – [24/Sep/2017:18:26:31 +0000] ”HEAD http://46.xxx.xxx.xxx:80/administrator/PMA/ HTTP/1.1” 404 195 ”-” ”Mozilla/5.0 Jorgee”
127.0.1.1:80 203.117.153.38 – – [24/Sep/2017:18:26:31 +0000] ”HEAD http://46.xxx.xxx.xxx:80/administrator/admin/ HTTP/1.1” 404 195 ”-” ”Mozilla/5.0 Jorgee”
127.0.1.1:80 203.117.153.38 – – [24/Sep/2017:18:26:31 +0000] ”HEAD http://46.xxx.xxx.xxx:80/phpMyAdmin2/ HTTP/1.1” 404 195 ”-” ”Mozilla/5.0 Jorgee”
127.0.1.1:80 203.117.153.38 – – [24/Sep/2017:18:26:32 +0000] ”HEAD http://46.xxx.xxx.xxx:80/phpMyAdmin3/ HTTP/1.1” 404 195 ”-” ”Mozilla/5.0 Jorgee”
127.0.1.1:80 203.117.153.38 – – [24/Sep/2017:18:26:32 +0000] ”HEAD http://46.xxx.xxx.xxx:80/phpMyAdmin4/ HTTP/1.1” 404 195 ”-” ”Mozilla/5.0 Jorgee”
127.0.1.1:80 203.117.153.38 – – [24/Sep/2017:18:26:32 +0000] ”HEAD http://46.xxx.xxx.xxx:80/phpMyAdmin-3/ HTTP/1.1” 404 195 ”-” ”Mozilla/5.0 Jorgee”
127.0.1.1:80 203.117.153.38 – – [24/Sep/2017:18:26:32 +0000] ”HEAD http://46.xxx.xxx.xxx:80/php-my-admin/ HTTP/1.1” 404 195 ”-” ”Mozilla/5.0 Jorgee”

Aiheesta löytyy paljonkin tietoa ja keskusteluja, koska koneen haavoittuvuuksia etsivä ”Jorgee”-scanneri on ollut pitkään käytössä mm. Stackoverflow.

Tämän lisäksi löysin mielenkiintoisen artikkelin, jossa kerrottiin, miltä onnistunut hyökkäys näyttää lokeissa. Monessa esimerkissä yksi tärkeä kohta tulkitsemisessa oli lokissa näkyvä HTTP-status.

Komennolla

cat /var/log/auth.log

Sain monta sivua seuraavanlaisia viestejä:

Sep 25 17:14:18 ubuntu-512mb-fra1-01 sshd[24388]: Failed password for root from 113.195.145.52 port 35237 ssh2/#gref
Sep 25 17:14:21 ubuntu-512mb-fra1-01 sshd[24388]: message repeated 2 times: [ Failed password for root from 113.195.145.52 port 35237 ssh2]
Sep 25 17:14:22 ubuntu-512mb-fra1-01 sshd[24388]: Received disconnect from 113.195.145.52 port 35237:11: [preauth]
Sep 25 17:14:22 ubuntu-512mb-fra1-01 sshd[24388]: Disconnected from 113.195.145.52 port 35237 [preauth]
Sep 25 17:14:22 ubuntu-512mb-fra1-01 sshd[24388]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=113.195.145.52 user=root

Tästä löysin googlettelemalla keskustelun samasta aiheesta. Eli joku yrittää arvata palvelimeni salasanaa (brute force) kiinalaisesta IP-osoitteesta root-käyttäjänä. Nyt ymmärrän miksi root-kirjautuminen pitää estää kokonaan. Samassa keskustelussa kehoitettiin asentamaan SSH-avaimet kirjautumiseen ja fail2ban, joka pudottaa kaikki paketit osoitteesta, josta tehdään tarpeeksi monta väärää salasanansyöttöä. En lähtenyt asentamaan niitä tällä kertaa,vaikka ohjeet olivat hyvin yksityiskohtaiset ja selkeän tuntuiset.

Tein vielä itse virheilmoituksen lokiin yrittämällä kirjautua käyttäjänä jota ei ole olemassa:

Sep 26 04:59:47 ubuntu-512mb-fra1-01 sshd[29648]: Failed password for invalid user seppanenp from 91.xxx.xxx.xxx port 60393 ssh2

Myöhemmin löysin samanlaisia virheitä lokista, jotka näyttivät siltä, että joku oli yrittänyt kirjautua omalle palvelimelleen, mutta antanut väärän ip-osoitteen vahingossa.

Julkinen domainnimi osoitteelleni

Kävin hakemassa ilmaisen opiskelijan käyttöoikeuden GitHubin Education paketin kautta Namecheap-palveluun. Rekisteröitymisen ja hetken seikkailun jälkeen löysin namecheapin ohjeen osoitteen rekisteröimiseen. Rekisteröin itselleni osoiteen tervehdysmaailma.me ja seurasin ohjeita parhaani mukaan. Laitoin ohjeen mukaan asetuksiksi:


www – is selected when it is needed to point http://www.yourdomain.tld to the IP address:
A Record | www |  11.22.33.44

Hetken odottelun jälkeen kokeilin domainnimeä Firefox-selaimeen ja pettymyksekseni selain avasi seuraavanlaisen näkymän:

SeppanenP.github.io

Mistäköhän se tuon kaivoi?

Kun kokeilin samaa puhelimeni Firefox Focus -selaimella, niin osoite ohjautui oikein. Pitänee kokeilla huomenna uudelleen koneen selaimella. Ohjeessa oli maininta, että päivitys vie aikansa.

20170925_220049.jpg

Aamulla testasin Firefoxia toisella koneella ja kaikki toimi halutusti.

Lähteet

http://terokarvinen.com

https://joonaleppalahti.wordpress.com/2016/09/20/linux-palvelimet-kotitehtava-4/

https://meandmylittlepi.wordpress.com/2016/05/01/h5-virtuaalipalvelimen-luonti/

https://www.namecheap.com

https://www.digitalocean.com/

http://resources.infosecinstitute.com/log-analysis-web-attacks-beginners-guide/#gref

https://www.acunetix.com/blog/articles/using-logs-to-investigate-a-web-application-attack/

 

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

 

Mainokset

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out /  Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out /  Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out /  Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out /  Muuta )

w

Muodostetaan yhteyttä palveluun %s