Linux palvelimet: Syventävä aihe weppipalvelimista

Tehtävä a)

Aika hankkia virtuaalipalvelin ja luoda sille normaalitason käyttäjä! Tehtävää varten olen hankkinut Digital Oceanilta Ubuntu pilvipalvelimen (muisti 1Gb, kovalevy 25Gb) ja oman domain nimen. Hankkimani pilvipalvelin oli halvin Digital Oceanin tarjoama vaihtoehto, mutta silti ehdottomasti tarpeeksi iso käyttööni.
HUOM! Muista käyttää ainoastaan hyviä salasanoja palvelimellasi!

Ensimmäiseksi kirjauduin palvelimelle SSH:n avulla root tason käyttäjänä komennolla ssh root@IP-osoite. Kuitenkin kahden ensimmäisen epäonnistuneen kirjautumisen jälkeen huomasin, että koneeni internetyhteys oli katkennut. Olin vahingossa kiskaissut irti USB johdon, josta kannettava tietokoneeni saa yhteyden. Uuden yhteydenluonnin jälkeen palvelin tervehti minua “Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-122-generic x86_64)” viestillä merkiksi siitä, että olin saanut SSH yhteyden onnistuneesti palvelimelleni.

Seuraavaksi päätin asentaa ja configuroida koneelle palomuurin, jotta saisin rajattua pois käytöstä kaikki sellaiset portit joita en itse käytä. Kuitenkin ennen palomuurin (ufw, eli Uncomplicated FireWall) käynnistämistä tulee palomuurista avata SSH-yhteyden käyttämä portti 22, tai palomuuri sulkee myös minut palvelimen ulkopuolelle. Samalla päätin aukaista myös Apachen käyttämän 8080 portin, koska tulen asentamaan palvelimelle myös Apachen myöhemmin.

Komennot:

sudo ufw allow 22/tcp
sudo ufw allow 8080/tcp
sudo ufw enable

Seuraavaksi loin palvelimelle uuden käyttäjän ja annoin tälle käyttäjälle sudo ja admin tason oikeudet koneelle. Loin myös testikäyttäjän, jolla ei ole admin eikä sudo oikeuksia, jos joskus tarvitsen enemmän käyttäjiä esimerkiksi kouluprojekteissa. Tämän jälkeen lukitsin pois Root käyttäjän.

sudo adduser topi
sudo adduser topi sudo
sudo adduser topi adm
sudo adduser topi admin
sudo adduser testi
#Tässä vaiheessa kannattaa testata että käyttäjät toimivat oikein!
sudo usermod --lock root

Tämän jälkeen poistin myös /etc/ssh/sshd_config tiedostosta root login mahdollisuuden PermitRootLogin yes/no valinnalla. Päätin myös testata sainko oikeasti rajattua luomani testikäyttäjän sudo oikeudet. Sudo mkdir testikansio sai kuitenkin aikaan vain viestin, että käyttäjällä testi ei ole sudo-oikeuksia ja yrityksestä käyttää niitä on tehty raportti. Kuulostaa uhkaavalta! Tarkistin ‘topi’ käyttäjänä palvelimen /var/log/auth.log lokin ja sieltä tosiaan näkyi, että käyttäjä ‘testi’ on aloittanut uuden session ja yrittänyt suorittaa sudo komentoja.

Feb 12 19:55:03 pilviasema sshd[25819]: Accepted password for testi from IP-NUMERO port 55751 ssh2
Feb 12 19:55:03 pilviasema sshd[25819]: pam_unix(sshd:session): session opened for user testi by (uid=0)
Feb 12 19:55:03 pilviasema systemd: pam_unix(systemd-user:session): session opened for user testi by (uid=0)
Feb 12 19:55:03 pilviasema systemd-logind[1325]: New session 477 of user testi.
Feb 12 19:55:55 pilviasema sudo:    testi : user NOT in sudoers ; TTY=pts/1 ; PWD=/home/testi/kansioo ; USER=root ; COMMAND=/bin/mkdir testikansio

Lopulta päivitin palvelimen sudo apt-get update ja sudo apt-get upgrade komennoilla.


Tehtävä s)

Kun olin saanut luotua itselleni uuden käyttäjän palvelimelleni, oli seuraavana vuorossa Apachen asennus ja käyttöönotto. Apache asentui normaalisti paketinhallinnan kautta komennolla sudo apt-get install apache2. Tämän jälkeen testasin että saan firefoxilla Apachen aloitussivun näkyviin localhostissa ja omalla IP-osoitteellani, mikä onnistui ilman ongelmia. Tämän jälkeen luonnollisesti vaihdoin Apachen aloitussivun joksikin vähemmän huomiotaherättäväksi (sudoedit /var/www/html/index.html).

Kun Apache oli saatu testattua ja toimi, oli aika liittää siihen hankkimani domain nimi topiniskala.com. Tämä tapahtui namecheap sivustolla luomalla domainilleni A Record ja CNAME Record, jotka viittaavat palvelimelleni. Näiden täyttämistä varten löytyy namecheapiltä monia hyviä tutoriaaleja, jotka kannattaa lukea läpi (esim: https://www.namecheap.com/support/knowledgebase/article.aspx/434/2237/how-do-i-set-up-host-records-for-a-domain ). Tässä myös kuva sivustosta:

namecheap

Namecheappiin tehdyt muutokset eivät välttämättä asetu voimaan heti, mutta lopulta sain auki omat kotisivuni osoitteessa www.topiniskala.com/~topi/


Tehtävä y)

Aika tarkistaa lokeista onko palvelimelleni jo mahdollisesti yritetty murtautua? Nämä lokit saa näkymään komennolla tail /var/log/auth.log.

tässä pieni pätkä lokista Auth.log:

Feb 12 21:01:49 pilviasema sshd[26514]: Disconnected from 137.74.3.147 port 40912 [preauth]
Feb 12 21:01:51 pilviasema sshd[26516]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=58.218.198.151 user=root
Feb 12 21:01:54 pilviasema sshd[26516]: Failed password for root from 58.218.198.151 port 57817 ssh2
Feb 12 21:01:58 pilviasema sshd[26516]: message repeated 2 times: [ Failed password for root from 58.218.198.151 port 57817 ssh2]
Feb 12 21:01:58 pilviasema sshd[26516]: Received disconnect from 58.218.198.151 port 57817:11: [preauth]
Feb 12 21:01:58 pilviasema sshd[26516]: Disconnected from 58.218.198.151 port 57817 [preauth]
Feb 12 21:01:58 pilviasema sshd[26516]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=58.218.198.151 user=root

Kuten näkyy, koneelle on yritetty murtautua lukuisia kertoja. Selvittääkseni mistä nämä yritykset ovat peräisin asensin paketinhallinnasta ‘whois’ sovelluksen (sudo apt-get install whois).

-Ensimmäinen lokissa näkyvä ip 137.74.3.147 on whoisin mukaan peräisin Puolasta Wroclavista.
-Toinen lokissa oleva ip 58.218.198.151 johtaa taas Kiinaan Pekingiin, ja less auth.log komennon mukaan on yrittänyt koko illan murtautua palvelimelle varmasti satoja kertoja.


Tehtävä b/c)

Palvelimella olisi hyvä olla jotain sisältöä testausta varten, joten päätin luoda itselleni jonkinlaisen index.html tiedoston. Ensiksi loin palvelimelle /home/topi/public_html kansion. Sen jälkeen ‘scp’ toimintoa kokeillakseni avasin toisen linux terminaalin omalle koneelleni ja loin siellä nanolla yksinkertaisen html pohjan. Perus Hello Worldin sijaan päätin lisätä sivulle jonkinlaisen oikean tervehdyksen ja linkit githubiini ja mixcloudiini. Tämän jälkeen lisäsin vielä sivulle githubiin tallentamani PHP laskimen ja etusivulle sitä varten linkin. Koska html-tageja sisältävää koodia on hankala lisätä tänne wordpressiin, lisään tähän vain linkin sivulleni, josta sivun lähdekoodin voi tarkistaa jos tarvetta. Laskimen lähdekoodit taas löytyvät githubistani.

www.topiniskala.com/~topi/


LINKIT:
Tehtävänannot
www.digitalocean.com/
www.namecheap.com/
http://terokarvinen.com/2017/first-steps-on-a-new-virtual-private-server-an-example-on-digitalocean
www.topiniskala.com/~topi/
https://github.com/TopiNiskala/Linux-Palvelimet/blob/master/calc.php

Advertisements

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 )

Google+ photo

You are commenting using your Google+ 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 )

w

Connecting to %s