Linux-palvelimet – Harjoitus 2

Osallistun Haaga-Helia ammattikorkeakoulussa Linux-palvelimet kurssille, jonka opettajana toimii Tero Karvinen. Kaikki tehtävät ovat hänen verkkosivuiltaan http://terokarvinen.com/.

Ensimmäisen tehtävän suoritin omalla pöytäkoneellani, jossa pyörii Debian 9.7. Tehtävänanto kuuluu seuraavasti:

a) Aiheuta lokiin kaksi eri tapahtumaa: yksi esimerkki onnistuneesta ja yksi esimerkki epäonnistuneesta tai kielletystä toimenpiteestä. Analysoi rivit yksityiskohtaisesti.
b) Vapaaehtoinen kohta, ei ole opetettu vielä: Asenna SSH-demoni. Kokeile omalla ssh-palvelimellasi jotain seuraavista: ssh-copy-id, sshfs, scp tai git. (Helpoin lienee scp: ‘scp foo.txt tero@example.com:’)
c) Tee unelmien apt-get -komento: yksi komentorivi, joka asentaa suosikkiohjelmasi.
d) Asenna komentokehotteen paketinhallinnasta kolme itsellesi uutta komentorivillä toimivaa ohjelmaa. Kokeile kutakin ohjelmaa sen pääasiallisessa käyttötarkoituksessa.
e) Opettele ulkoa ja harjoittele tärkeimmät komennot (tätä “opettele ulkoa” alakohtaa ei tarvitse raportoida):
http://terokarvinen.com/2009/command-line-basics-4
http://terokarvinen.com/2008/commands-for-admin-4 (Karvinen T. 2019.)

2. a. Lokitapahtumat

Tarkoituksena oli tarkkailla ja analysoida lokitietoja. Lokitiedot oli tarkoitus aiheuttaa tahallisesti. Avasin ihan aluksi tietokoneeni ja boottasin Debianiini. Kun järjestelmä oli käynnistynyt, avasin terminaalin, johon kirjoitin ‘cd ../../..’, jotta pääsin Root-hakemistoon. Sitten menin sieltä ‘/etc/log’, jossa sijaitsee lokitiedostot. Muistin, että komento ‘tail’ antaa mahdollisuuden tiedoston seuraamiseen. Siispä laitoin terminaaliin ‘man tail’. Manuaalissa kerrottiin, että ‘-F’ on seuraukseen tarkoituksenmukainen komento. kirjoitin ‘tail -F auth.log’, mutta sainkin ilmoituksen:

santeri@debian:/var/log$ tail -F auth.log
tail: cannot open ‘auth.log’ for reading: Permission denied

Nähtävästi Debianilla ei pääse lokeihin ilman Root-oikeuksia. Siispä ‘sudo !!’-komento, jotta saan ajettua edellisen komennon uudestaan superuserina. Sittenhän alkoihikin tulla outputia! Terminaali sylkäisi seuraavaa ulos:

Jan 26 19:45:01 debian CRON[6105]: pam_unix(cron:session): session closed for user root
Jan 26 19:55:01 debian CRON[6571]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan 26 19:55:01 debian CRON[6571]: pam_unix(cron:session): session closed for user root
Jan 26 20:04:38 debian sudo: santeri : TTY=pts/1 ; PWD=/var/log ; USER=root ; COMMAND=/usr/bin/tail -F auth.log
Jan 26 20:04:38 debian sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Jan 26 20:05:01 debian CRON[6660]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan 26 20:05:01 debian CRON[6660]: pam_unix(cron:session): session closed for user root
Jan 26 20:06:38 debian sudo: pam_unix(sudo:session): session closed for user root
Jan 26 20:06:40 debian sudo: santeri : TTY=pts/1 ; PWD=/var/log ; USER=root ; COMMAND=/usr/bin/tail -F auth.log
Jan 26 20:06:40 debian sudo: pam_unix(sudo:session): session opened for user root by (uid=0)

Seuraavaksi halusin jotain, mihin tarvitsen sudoa, joten päätin asentaa Binwalkin pakettityökalulla (apt). Siispä seuraava komento oli sudo apt install binwalk. Terminaali kysyi salasanaa, joten aluksi, laitoin salasanan väärin tarkoituksella ja toisella kerralla oikein. Sen jälkeen tarkistin, mitä auth.log on syljeskellyt sillä aikaa.

Jan 26 20:13:37 debian sudo: pam_unix(sudo:auth): authentication failure; logname= uid=1000 euid=0 tty=/dev/pts/2 ruser=santeri rhost= user=santeri
Jan 26 20:13:43 debian sudo: santeri : TTY=pts/2 ; PWD=/home/santeri ; USER=root ; COMMAND=/usr/bin/apt install binwalk
Jan 26 20:13:43 debian sudo: pam_unix(sudo:session): session opened for user root by (uid=0)

Virheellisessä kirjauksessa kerrotaan useita tietoja kirjautujasta, kuten käyttäjänimi ja ID. Oikeanlaisessa kirjauksessa taas kerrotaan noihin myös lisäksi ‘working directory’ ja myös komento, mitä käyttäjä käytti Roottina.

2. b. SSH-yhteys

Seuraavaksi olisi tarkoitus asentaa SSH-deamon. Avasin selaimen ja kirjoitin hakukoneeseen ‘install ssh daemon’, josta heti ensimmäisenä tuloksena tuli https://help.ubuntu.com/lts/serverguide/openssh-server.html.en. Olin jo asentanut SSH-clientin, joten en kokenut tarpeelliseksi enää katsoa ohjetta, koska siellä oli lähinnä valinnaista asiaa enää. Siispä laitoin komennon ‘touch foo.txt’, jotta olisi jotain mitä lähettää. Seuraavaksi laitoin ‘scp foo.txt a1704466@proto366.haaga-helia.fi’. Palvelin oli Ubuntu-palvelin, jota käytetään toisella kurssilla. Kävin tarkistamassa sen jälkeen SSH:lla palvelimelta, että onko siellä jotain. Ei ollut. En tiennyt, miten kuuluisi tehdä, joten päätin suosiolla luovuttaa, koska oli silti valinnainen tehtävä kyseessä.

2. c. Asennusskripti

Seuraavaksi oli tarkoitus tehdä pieni apt-komento, joka asentaa kivoja ohjelmia itselle. Päätin tehdä siitä samalla Bash-skriptin, koska miksikäs ei? Avasin VIM-editorin komennolla ‘vim asennus.sh’, joka samalla luo tiedoston. Kirjoitin siihen aluksi sen helpon leipätekstin, joka kuului seuraavasti: sudo apt install python3 gcc git vim’. Sitten etsin, että miten saan siitä oikean Bash-skriptin, joten päätin hakea sitä hakukoneesta. Löysin tämän sivun: https://bash.cyberciti.biz/guide/Hello,_World!_Tutorial. Siinä sanottiin, että pitää laittaa ensimmäiseksi rivi, jossa lukee ‘#!/bin/bash’. Sitten olikin kaikki valmista. Testasin ajaa skriptin kirjoittamalla ./asennus.sh, mutta ihmettelin jo, ettei se täydentänyt automaattisesti. Tuli virhe, bash: ./asennus.sh: Permission denied. Ajattelin, että pitääpi siis laittaakin Roottina. sudo ./asennus.sh. Tuli uudestaan virhe: sudo: ./asennus.sh: command not found. Päädyinpä siis takaisin sivulle. Ahaa, sivulla luki, että tiedostolle pitää antaa executable-oikeudet komennolla ‘chmod -x asennus.sh’. Sen jälkeen jopa sain jotain uloskin! Terminaali sylkäisi tällaista:

Reading package lists… Done
Building dependency tree
Reading state information… Done
gcc is already the newest version (4:6.3.0-4).
gcc set to manually installed.
git is already the newest version (1:2.11.0-3+deb9u4).
python3 is already the newest version (3.5.3-1).
python3 set to manually installed.
vim is already the newest version (2:8.0.0197-4+deb9u1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Kaikki asennettavat ohjelmat olivatkin jo asennettu ja päivitetty, joten mitään sen kummempaa ei tapahtunut. Elämä jatkuu.

2. d. Komentoriviohjelmat

Tässä tehtävässä oli tarkoitus asentaa apt:sta kolme uutta komentorivillä toimivaa ohjelmaa. Minulla ei ollut kauheasti hajua, mistä lähtisin liikkelle, koska niitä on niin pilvin pimein. Siispä päädyin hakemaan sitä hakukoneesta, josta pääsin sivulle: https://www.linuxnov.com/35-terminal-text-based-application-for-linux/ Ajattelin, että tuollainen voisi olla hyvä tällaiselle aloittelevalle henkilölle. Ensimmäisenä päätin asentaa Sudokun, jonka sai komennolla ‘sudo apt install sudoku’. Avasin ohjelman kirjoittamalla vain sudoku.

screenshot from 2019-01-26 22-24-02

Sudoku vaikutti toimivat hyvin ja juuri kuten kuuluikin.

Seuraavaksi päätin asentaa verkkoliikennettä analysoiva terminaalissa toimiva ohjelma vnState. Se tapahtui komennolla ‘sudo apt install vnstat’. Laitoin komentoriville vnstat, jos vaikka ohjelma aukeutuisi. Tuli ilmoitus: enp3s0: Not enough data available yet. Yritin vähän aiheuttaa trafiikkia, jos vaikka komento toimisikin. Ei edelleenkään toiminut, joten yritän sit myöhemmin uudelleen.

Viimeisenä asensin ohjelman nimeltä hTop. Sen tarkotus on olla prosessitarkastelija ja tietokoneen resurssien tarkastaja. Asennus tapahtui komennolla ‘sudo apt install htop’. Avasin ohjelman komennolla htop ja sitten se näyttikin tältä: screenshot from 2019-01-26 22-34-21

Kaikki vaikutti toimivan asianmukaisesti ja eri statukset muuttuivat reaaliajassa kuten kuuluikin. Tämä on todella hyödyllinen ohjelma!

Tämän jälkeen  testasin vielä vnstatia ja sain jopa outputtia! Ohjelma tulosti seuraavaa:

screenshot from 2019-01-26 22-39-05

Tämä työkalu ei ollutkaan niin hyödyllinen kuin aluksi luulin sen olevan, mutta ihan hauska.

Kaikki ohjelmat toimivat kuten kuuluikin, eikä niiden kanssa ollut sen ihmeellisimpiä ongelmia.

Leave a comment