Linux palvelimet – labraharjoitus (h7)

Tämän artikkelin tehtävät ovat osa Tero Karvisen Linux palvelimet ict4tn021 kurssia. (Linux palvelimet – Tero Karvinen)

Tämä teksti on jatkaa siitä, mihin viime artikkelissa jäin (Linux palvelimet – Hei maailma (h6).) Työympäristönä jälleen livetikku, eli kaikki tapahtumat suoritetaan Xubuntu 18.04.1-amd64 käyttöjärjestelmällä. Käytössä oleva tietokone on Hp pavilion power 15-cb0xx ja muistikkuna Kingston 64GB USB 3.0 DataTraveler 50. Tämä on Tero Karvisen Linux palvelimet kurssin viimeimen kotitehtvävä.

a) Vanhan labraharjoituksen ratkaiseminen (13.30)

Päädyin tekemään vuoden vanhaan labraharjoitukseen (Arvioitava laboratorioharjoitus), koska se oli yksi harvoista mitä löysin.

Aluksi annoin komennon setxkbmap fi (näppäimistöön suomenkielen asetus), ja  vaihdoin tietokoneen nimeksi ohjeen mukaisesti jere10 (sudo hostname jere10.) Tämän jälkeen valmistauduin käyttämään tietokonetta etänä ja suojasin tietokoneen palomuurilla:

sudo apt-get update // Pakettilistan päivitys
sudo apt-get -y install ssh // SSH:n asennus
sudo ufw allow 22/tcp // SSH liikenteen läpipäästäminen
sudo ufw enable // Palomuurin käynnistäminen

LAMPin käyttöönotto (13.45)

Päätin asioiden yksinkertaistamikseksi antaa yhden komennon millä asentaisin LAMPpiin kuuluvat ohjelmat.

sudo apt-get -y install apache2 libapache2-mod-php7.2 
mariadb-client mariadb-server php7.2-mysql

Nyt aloin testaamaan asennnusten toimintaa. Aluksi koitin Apachen toimintaa ja navigoin selaimella localhost osoitteeseen. Sieltä tuli vastaan Apachen luoma oletussivu. Eli Apache oli nyt toiminnassa.

Tämän jälkeen kokeilin tietokannan toimivuutta. Kirauduin tietokantaan komennolla sudo mariadb -u root ja loin ja poistin onnistuneesti yhden tietokannan.

Screenshot_2019-03-08_12-02-01

Nyt jäljellän oli enään PHP:n tomivuuden testaus. Aluksi muokkasin sudoeditillä tiedostoa /etc/apache2/mods-available/php7.2.conf. Kommentoin sieltä alimman ifmoduulin (Tarkemmant ohjeet c) -osiossa.) Tämän jälkeen annoin käyttäjille oikeuden tehdä kotisivut komennolla sudo a2enmod userdir, minkä jälkeen potkaisin Apachen uudelleen käyntiin komennolla systemctl restart apache2.

Nyt loin kotihakemistoon public_html kansion komenolla mkdir public_html ja sinne index.php tiedoston komennolla nano index.php. Index tiedostoon loin yksinkertaisen html sivun ja php scriptin mikä näyttää käyttäjän IP-osoitteen.

Kaikki näytti toimivan niinkuin pitikin. Nyt siirryin harjoituksen seuraavaan osioon.

Screenshot_2019-03-08_12-27-39

Kuormitustietojen kerääminen 1/2 (14.35)

Asensin kuormitustietoja keräävän ohjelman Sysstatin komennolla sudo apt-get -y install sysstat. Konfiguroin Sysstatin keräämän tietoja tiedostossa /etc/default/sysstat, mihin korjasin ”falsen” tilalle ”true” ja potkaisin sysstatin käyntiin komennolla /etc/init.d/sysstat start. Jätin Sysstatin keräämään tietoja ja jatkoin harjoituksen tekemistä. Tekstin lopussa analysoin kerättyä tietoa.

 

Tietokannat ja PHP-sivut asiakkaille (14.45)

Aluksi loin root käyttäjällä asiakastietokanta nimisen tietokannan, ja loin käyttäjän, millä tietokantaa voisi käyttää.

MariaDB [(none)]> create database asiakastietokanta;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all on asiakastietokanta.* to asiakastietokanta@localhost identified by 'salasana_tähän';
Query OK, 0 rows affected (0.00 sec)

Salasanan loin pwgenillä:

sudo apt-get -y install pwgen
pwgen 15 1 -y // 15-merkkinen salasana, missä ainakin yksi erikoismerkki

Nyt siirryin käyttämään asiakastietokantaa uudella käyttäjällä. Tietokantaan loin uuden asiaakkaat taulun, ja lisäsin sinne kolme asiakasta.

xubuntu@xubuntu:~$ mariadb -u asiakastietokanta -p
Enter password: 

MariaDB [(none)]> use asiakastietokanta;
Database changed
MariaDB [asiakastietokanta]> create table asiakkaat (id int auto_increment primary key, name varchar(1024));

MariaDB [asiakastietokanta]> insert into asiakkaat(name) values ("Kulta ja Kaivos ky");
Query OK, 1 row affected (0.00 sec)

MariaDB [asiakastietokanta]> insert into asiakkaat(name) values ("Piilosana ry");
Query OK, 1 row affected (0.00 sec)

MariaDB [asiakastietokanta]> insert into asiakkaat(name) values ("MetalliMake");
Query OK, 1 row affected (0.00 sec)

MariaDB [asiakastietokanta]> select * from asiakkaat;
+----+--------------------+
| id | name               |
+----+--------------------+
|  1 | Kulta ja Kaivos ky |
|  2 | Piilosana ry       |
|  3 | MetalliMake        |
+----+--------------------+
3 rows in set (0.00 sec)

Kun olin luonut tietokannan siirryin luomaan PHP-sivua. Otin mallia Tero Karvisen esimerkistä (Read MySQL database with PHP), ja loin yksinkertaisen index.php sivun  /home/xubuntu/public_html/sorkkacrm.example.com hakemistoon.

<!doctype html>

<html lang="en">
<head>
  <meta charset="utf-8">
  <title>title_here</title>
</head>

<body>
<h1>Sorkka ja Rauta Oy </h1>

<?php
// MySQL Login
$user='asiakastietokanta';
$password='salasana_tähän';
// Data Source Name i.e. connection details
$database=$user;
$dsn="mysql:host=localhost;charset=UTF8;dbname=$database";
// Open Connection, create new object of PDO class
$pdo=new PDO($dsn, $user, $password);
// Perform SQL Query
$pdoStatement=$pdo->prepare('SELECT * FROM asiakkaat;');
$pdoStatement->execute();
$hits=$pdoStatement->fetchAll();
// Print the $hits Array
foreach($hits as $row) {
 echo "<p>".$row['id']." ".$row['name']."</p>\n";}
?>

</body>
</html>

Nyt oli vuorossa tämän index.php sivun saaminen näkymään osoitteesta sorkkacrm.example.com. Tässäkin seurasin Tero Karvisen ohjeita (Name Based Virtual Hosts on Apache.)

Ensiksi loin sorkkacrm.example.com.conf tiedoston hakemistoon /etc/apache2/sites-available. Sinne kirjoitin seuraavat tiedot:

<VirtualHost *:80>
 ServerName sorkkacrm.example.com
 ServerAlias www.sorkkacrm.example.com
 DocumentRoot /home/xubuntu/public_html/sorkkacrm.example.com
 <Directory /home/xubuntu/public_html/sorkkacrm.example.com>
   Require all granted
 </Directory>
</VirtualHost>

Tämän jälkeen siirryin muokkaamaan tiedotstoa /etc/hosts ja lisäsin sinne uuden hostin:

127.0.0.1 sorkkacrm.example.com

Tämän jälkeen otin sorkkacrm.example.com sivuston käyttöön ja potkaisin Apachen uudelleen käyntiin:

sudo a2ensite sorkkacrm.example.com // sivusto käyttöön
sudo systemctl restart apache2 // Apachen potkaisu

Nyt osoitteesta sorkkacrm.example.com tuli esiin luomani index.php sivu.

Screenshot_2019-03-08_14-39-45

 

Rosvoja porteilla (17.05)

Tätä harjoituksen osiota en pystynyt tekemään, koska linux koneeni ei näy verkkoon. Olisin kuitenkin etsinyt murtautumis yrityksiä /var/log/auth.log tiedostosta.

 

Staattiset webbisivut (17.10)

Aloitin luomalla uuden kansion public_htlm hakemistoon komennolla mkdir rauta.example.com. Sinne loin uuden index.html sivun:

<!doctype html>

<html lang="en">
  <head>
  <meta charset="utf-8">
  <title>Sorkka ja Rauta Oy</title> // Tabissa oleva otsikko
</head>

  <body>
  <h1>Sorkka ja Rauta oy </h1> // Sivulla näkyvä otsikko
  </body>

</html>

Tein rauta.example.com sivulle samat toimenpiteet kuin sorkkacrm.example.comille, jotta sivusto näkyisi osoitteessa http://rauta.example.com/.

1. Kopion sorkkacrm.example.com.conf tiedoston /etc/apache2/sites-availabe hakemistossa:

sudo cp sorkkacrm.example.com.conf rauta.example.com.conf

2. Muokkasin sen rauta.example.com yhteensopivaksi:

<VirtualHost *:80>
 ServerName rauta.example.com
 ServerAlias www.rauta.example.com
 DocumentRoot /home/xubuntu/public_html/rauta.example.com
 <Directory /home/xubuntu/public_html/rauta.example.com>
   Require all granted
 </Directory>
</VirtualHost>
(END)

3.  Lisäsin rauta.example.comin hosts listaan tiedostossa /etc/hosts.

127.0.0.1 rauta.example.com

4. Otin rauta.exaple.com sivuston käyttöön, ja potkaisin Apache demonia

sudo a2ensite sorkkacrm.example.com
sudo systemctl restart apache2

Nyt rauta.example.com osoitteesta tulee esiin haluttu Sorkka ja Rauta Oy:n webbisivu.

Screenshot_2019-03-08_16-29-39

Uusi käyttäjä ja PHP kotisivu (18.30)

Aloitin tämän osion luomalla einari nimisen käyttäjän komennolla sudo adduser einari. Salasanan kehitin jälleen pwgenillä (pwgen 15 1 -y.)

Tämän jälkeen kirjauduin einari käyttäjälle ssh:lla (ssh einari@localhost.) Loin einarin kotihakemistoon public_html kansion ja loin sinne index.php sivun nanolla. Index.php tiedostoon lisäsin html koodin lisäksi lyhyen PHP scriptin, mikä tulostaa: ”einari.”

<?php print("Einari"); ?>

Nyt kun katsoin osoitetta localhost/~einari, näin sivulla tekstin ”einari.”

Screenshot_2019-03-08_16-50-23

Kuormitustietojen kerääminen 2/2 (18.55)

Sain kuormitustietoja selville käyttäen Sysstatin sar komentoa. Sar näyttää järjestelmän kuormitustietoja siitä asti kun se käynnistettiin, eli tässä tapauksessa. noin neljän tunnin ajalta. Kuormitustietoja näytetään neljän tunnin ajalta 10 minuutin välein.

screenshot_2019-03-08_16-53-37.png

Sar tulosteesta saan ainakin sen selville, että resurssien käyttö on ollut vähäistä. Vaikkakin kaikki prosessorinytimet ovat olleet toiminnassa (CPU), ei käyttäjien prosessorin käyttö (%user) missään vaiheessa ylittänyt 10% rajaa.

Kernel tasolla tapahtuma prosessorin (%system) käyttö on ollut myös hyvin vähäistää. Aina alle 2%.

Parhaiten prosessorin vähäistä käyttön osoittaa %idle prosentti. Järjestelmän prosessori oli käyttämättömä aina noin 95% ajasta.

Sar komennon lisäksi päätin antaa myös pidstat komennon, mikä näyttää eri prossien aiheuttamaa kulutusta. Löysin pidsatin tulostamalta listalta prosessoria eniten käyttävän ohjelman: Firefoxin, mikä oli käyttänyt prosessoria 5.66 prosentia.

screenshot_2019-03-08_17-14-03-e1552065296620.png

 

Mainokset

Linux palvelimet – Hei maailma (h6)

Tämän artikkelin tehtävät ovat osa Tero Karvisen Linux palvelimet ict4tn021 kurssia. (Linux palvelimet – Tero Karvinen)

Tämä teksti on jatkaa siitä, mihin viime artikkelissa jäin (Linux palvelimet – SSH & Sysstat (h5).) Työympäristönä tällä kertaa jälleen livetikku, eli kaikki tapahtumat suoritetaan Xubuntu 18.04.1-amd64 käyttöjärjestelmällä. Käytössä oleva tietokone on Hp pavilion power 15-cb0xx ja muistikkuna Kingston 64GB USB 3.0 DataTraveler 50.

a) Hei maailma 13.40

Tässä tehtävässä oli tarkoitus kirjoittaa ja suorittaa ”Hei maailma” kolmella eri ohjelmointikielellä. Valitsin kieliksi Pythonin, Php:n ja Rubyn. Valitsin nämä kielet koska, ne vaikutti suoraviivaisilta tämän tehtävän suorittamiseen. Ennen tehtävän suorittamista annoin tutut aloitus komennot: setxkbmap fi (näppäimistöön suomenkielen asetelma) ja sudo apt-get update (päivittää pakettilistan)

Python

”Hei maailman” luominen Pythonilla osoittautui helpoksi, koska sitä ei tarvinnut asentaa eikä konfiguroida. Aluksi loin koodeille oman kansion komennolla mkdir helloworld. Tämän jälkeen tein sinne python tiedoston komenolla nano helloworld.py ja kirjotin sinne ainoastaan yhden rivin koodia:

print("Hello world")

Ajoin Python koodin komennolla python3 helloworld.py, ja terminaalin tulostui ”Hello world.”

Screenshot_2019-03-01_11-53-18

PHP

PHP:n asennus onnisui komennolla sudo apt-get -y install libapache2-mod-php. Tämän jälkeen loin PHP tiedoston komennolla nano helloworld.php ja kirjoitin sinne 3 riviä koodia:

<?php
print("Hello world\n") // "\n" Tulostaa tekstin omalle riville
?>

Ajoin tiedoston komennolla php helloworld.php ja komentoriville tulostui: ”Hello world.”

Screenshot_2019-03-01_12-33-01

Ruby

Rubyn asennus taphtuin komennolla sudo apt-get -y install ruby-full. Asennus ohjeen löysin Rubyn sivuilta: Installing Ruby. Nyt loin Ruby tiedoston komennolla nano helloworld.rb ja kirjotin sinne ainoastaan yhden rivin koodia:

puts "Hello world"

Käytin Rubyn puts -ominaisuutta, koska sillä teksti tulostuu automaattisesti omalle riville. Ajoin tiedoston komennolla ruby helloworld.rb, ja komentoriville tulostui: ”Hello world.”

Screenshot_2019-03-01_13-08-00

Näiden kolmen tehtäväosion tekeminen osoittautui helpoksi, ja päätin tällä kertaa tehdä vapaaehtoisen tehtävän.

b) Kolme yksinkertaista ohjelmaa (Vapaaehtoinen) 14.55

Python – pyramid.py

Vaikka tehtävänannossa sanottiin, että tee ohjelma, millä on käyttätarkoitus, päätin tehdä turhan ohjelman. Tein koementoriviohjelman, mikä tulostaa käyttäjän antamasta sanasta pyramidin. Ohjelma kysyy myös pyramidin haluttua kokoa, minkä jälkeen terminaaliin tulostuu sanasta koostuva pyramidi.

Peek 2019-03-01 16-22

from time import sleep

inputText = input("Anna sana: ") // Sana input

while len(inputText) > 10: // Sanan pituus validointi
        inputText = input("Anna lyhyempi sana (Maks. 10 merkkiä): ")

sizeInput = int(input("Miten ison pyramidin haluat? (3 = pieni, 10 = iso): ")) // Koko input

while True: // Pyramidin koko validointi
        if (3 <= sizeInput <= 10):
                break
        else:
                sizeInput = int(input("Anna numero väliltä 3-10: "))

counter = 0
word = inputText
wordlenght =len(word)
size = float(sizeInput)

while counter < size: // Printtaa ensimmäisen puoliskon pyramidista
        print(word)
        counter+= 1
        word = word + inputText
        sleep(0.1) // Sleep pysäyttää loopin 0,1 sekunniksi
                   // Näyttää kivalta terminaalissa

while counter != 0: // Printtaa jälkimmäisen puoliskon pyramidista
        counter-= 1
        neword = word[:-wordlenght]
        print(neword)
        word = word[:-wordlenght]
        sleep(0.1)

Ruby – timer.rb

Rubylla puolestaan tein yksinkertaisen ajastimen. Ohjelma kysyy käyttäjältä ajan määrää, minkä jälkeen ohjelma tulostaa ajastimen jäljellä olevan ajan sekunteina terminaaliin.

Peek 2019-03-01 18-05

puts ("Ajastimen aika sekunteina") // Ajan määrä input
time = Integer(gets.chomp)

while time > 0 // Laskee ja tulostaa ajastimen
        sleep 1
        time -= 1
        puts "Aikaa jäljellä: #{time}"
end

PHP – random.php

PHP:lla päätin tehdä myös yksinkertaisen sovelluksen: arpojan. Ohjelma ottaa käyttäjältä syötteenä sanoja kunnes syötteeksi annetaan ”arvo”. Tämän jälkeen ohjelma arpoo yhden satunnaisen käyttäjän antamista sanoista, ja näyttää sen.

Peek 2019-03-03 21-59

<?php
 echo "Arpoja ohjelma. Anna arvottavat sanat ja lopuksi 'arvo', niin ohjelma arpoo yhden antamistasi sanoista. \n";

 $input = ""; 
 $sanaArray = array(); // arrayn luonti 

 while (($input == "arvo") === FALSE) { // lisää sanat arrayhin
        $input = readline("Syötä sana: ");

        if (($input == "arvo") === TRUE) { // jos sana: "arvo" lopeta lisääminen
                break;
        }
        array_push($sanaArray, $input); // 
 }

 echo "Arvottu sana on: ", $sanaArray[array_rand($sanaArray)]; // arpoo yhden sanan arrays
 echo "\n"; // rivin vaihto että tulee siisti tuloste
?>

Lopuksi

Oli mielestäni kiva tehdä yksinkertaisia ohjelmia vaiheeteksi. Opin paljon uutta näistä kielistä ja sain mielihyvää onnistumisesta. Tässä artikkelissa tekemieni ohjelmien koodia saa kopioda ja muokata vapaasti.

Linux palvelimet – SSH & Sysstat (h5)

Tämän artikkelin tehtävät ovat osa Tero Karvisen Linux palvelimet ict4tn021 kurssia. (Linux palvelimet – Tero Karvinen)

Tämä teksti on jatkaa siitä, mihin viime artikkelissa jäin (Linux palvelimet – Virtuaalipalvelin (h4).) Työympäristönä toimii tällä kertaa virtuaalipalvelin, minkä laitoin pystyyn viime kerralla. Virtuaalipalvelimeen otan yhteyden windows tietokoneella käyttäen PuTTyä. Tämän kappaleen tutkimustyötä olen tehnyt noin neljän päivän aikana, vähäisen ajan ja oman saamattomuuden takia.

a) SSH-demonin asennus

Ennen tehtävän varsinaista suorittamista, annoin päivitys komennot sudo apt-get update ja sudo apt-get upgrade. Tämän jälkeen asensin SSH-demonin komennolla sudo apt-get ssh. Koekeilin SSH:n toimivuutta kirjautumalla toiselle käyttäjälle komennolla  ssh kappa@localhost. (Kappa oli luomani testi käyttäjä.) Testi onnistui mutkitta ja kirjauduin virtuaalikoneella virtuaalikoneelle.

b) Palomuurin pystytys

Tarkastelin palomuurin tilaa komenolla sudo uft status. Vastaukseksi sain: Status: inactive. Palomuuri oli siis pois päältä. Ennen palomuurin käynnistämistä asetin SSH:lle reiän, jottei yhteys virtuaalipalvelimeen katkeisi (sudo ufw allow 22/tcp.) Tämän jälkeen laitoin palomuurin päälle komennolla sudo ufw enable. Nyt palumuuri oli pystyssä. Koska käytin virtuaalipalvelintani, millä oli julkinen sivu, tein http ja https liikenteen mahdolliseksi komennoilla sudo ufw allow 80/tcp ja – 553/tcp.

Näyttökuva (29)

c) Tiedostojen siirtäminen SSH:lla

Aluksi loin testikansion ja sinne testitiedoston mitkä siirtäisin SSH:lla toiselle käyttäjälle. Tämän jälkeen annoin tiedostojen scp kopiointi komennon ja siirsin kansion kappa -nimiselle käyttäjälle. Alla tarkat vaiheet.

jerentu@Jeren-Palvelin:~$ mkdir sshcopydir
jerentu@Jeren-Palvelin:~$ cd sshcopydir/
jerentu@Jeren-Palvelin:~/sshcopydir$ nano sshcopyfile
jerentu@Jeren-Palvelin:~/sshcopydir$ cd ..
jerentu@Jeren-Palvelin:~$ scp -r sshcopydir/ kappa@localhost:sshtestdir/

Tietojen siirtäminen onnistui ja kaikki tuli ehjänä perille, kun tutkailin tiedostoja kappa käyttäjänä.

d) Kirjautumisen automatisointi

Aluksi ajoin ssh-keygen komennon ja loin ssh-avainparin oletutiedoilla oletusskansioon. (Rämpytin enteriä muutaman kerran.) Tämän jälkeen kopioin avaimen kappa -käyttäjälle komennolla ssh-copy-id kappa@localhost. Nyt kun kirjauduin SSH:lla kappa -käyttäjälle samalla palvelimella (ssh kappa@localhost), salasanaa ei enään kysytty. Kopionti oli siis onnistunut.

j) Syststat-paketti

Asensin sysstat-paketin komennolla sudo apt-get -y install sysstat. Asennuksen jälken sysstat piti konfiguroida. Siirryin etc/default/ -hakemistoon ja muokkasin siellä olevaa sysstat -tiedostoa nano tekstieditorilla sudoedit tilassa. Täältä piti muuttaa ainoastaan ENABLED=”false” -kohtaan ENABLED=”true”. Tämän jälkeen tallensin tiedoston ja potkaisin sysstat demonin käyntiin komennolla /etc/init.d/sysstat start. Nyt sysstat oli valmiina käyttöön. Nämä asennus ja konfigurointi ohjeet löysin seuraavalta sivustolta: How to Monitor Your Linux Performance With Sysstat.Näyttökuva (32)

Annoin sysstatin pyöriä puolitoista vuorokautta, ennen kuin tein seuraavat analysoinnit. Ensiksi kokeilin sar komentoa, mikä näyttää järjestelmän käytön tietoja 10 minuutin väliajoin, yhdeltä päivältä.

Näyttökuva (33)

  • CPU Näyttää mitä prosessorin ytimiä on käytetty. Tässä tapauksessa kaikki ytimet on ollut käytössä
  • %user Näyttää ilmeisesti järjestelmän käyttäjien prosessorin käytön määrän prosenteina. Kuvaa yleistä prosessorin rasitusta
  • %nice Näyttää nice prioriteetin omaavien toimintojen prosessorin käytön prosenteina
  • %system Näyttää prosessorin käytön kernel tasolla
  • %iowait Näyttää ilmeisesti ajan prosenteina, milloin prosessori ei ollut käytössä, kun järjestelmään kohdistui rasitusta (Villi arvaus.)
  • %steal Kertoo ajan prosenteina, milloin prosessori on joutunut odottamaan jotain muuta prosessia
  • %idle Näyttää ajan prosenteina, milloin prosessori oli käyttämätön. Luvuista päätellen palvelimella on ollut hiljaista

Tähän analysointiin löysin apua Linux sar command -sivulta.

Seuraavaksi otin analysoinnin kohteeksi iostat -komennon antavan tuloksen.

Näyttökuva (34)

Aluksi ensimmäiselle riville listautuu järjestelmän tietoja, kuten Linuxin versionumero ja pavelimen nimi. Seuraavalle riville muodostuu ilmeisesti yhteenveto sar komennosta. Näiden jälkeisessä osiossa on listattu järjestelmän tiedonsiirtoon liittyviä tietoja.

Device osioon on listattu järjestelmää käyttävät laitteet (vda), ja myös ne järjestelmän osiot, mitkä on listattu /dev hakemistossa (loop0.)

Seuraavat sarakkeet näyttävät laitteiden tuottamaa kulutusta.

  • tps (transfers per second) kertoo laitteen I/O pyyntöjen määrän sekunnissa
  • kB_read/s näyttää laitteen käyttämän muistin lukemisen määrän per sekunti
  • kB_wrnt/s näyttää laitteen käyttämän muistin kirjoituksen määrän per sekunti
  • kB_read kertoo laitteen lukeman muistin kokonaismäärän
  • kB_wrtn kertoo laitteen kirjoittaman muistin kokonaismäärän

Suurimman osan kulutusta virtuaalipalvelimella on aiheuttanut vda, eli ilmeisesti minun käytön jälki.

Viimeiseksi annoin vielä pidstat komennon ja terminaaliin tulostui seuraava (Lista oikeasti pitempi):

Näyttökuva (35)

Pidstat ilmeisesti listaa kaikki prosessit mitä linux kernel pyörittää sillä hetkellä.

  • UID user id numero
  • PID prosessi numero
  • %usr näyttää prosessin prosessorin käytön käyttäjä tasolla prosenteina
  • %system näyttää prosessin prosessorin käytön kernel tasolla prosenteina
  • %guest näyttää ilmeisesti virtuaali koneen prosessorin käytön prosenteina
  • %CPU prosessin prosessorin käyttö prosenteina
  • CPU prosessori numero?
  • Command prosessin komento nimi

Iostatin ja pidstatin käyttöön liittyviä ohjeita ja selityksiä löysin niiden manuaali (man) sivuilta. Manuaalin löytää esimerkiksi iostatista komennolla man iostat.

Linux palvelimet – Virtuaalipalvelin (h4)

Tämän artikkelin tehtävät ovat osa Tero Karvisen Linux palvelimet ict4tn021 kurssia. (Linux palvelimet – Tero Karvinen)

Tämä teksti on jatkaa siitä, mihin viime artikkelissa jäin (Linux palvelimet – Apache, maailman suosituin webbipalvelin (h3).) Tämän lisäksi sain viime oppitunnilla virtuaalipalvelimen pystyyn. Työympäristö pysyy edelleen samana, eli kaikki tapahtumat suoritetaan Xubuntu 18.04.1-amd64 (livetikku) käyttöjärjestelmällä. Käytössä oleva tietokone on Hp pavilion power 15-cb0xx ja muistikkuna Kingston 64GB USB 3.0 DataTraveler 50.

Normaali käyttäjälle oikeuksia virtuaalipalvelimelle (14.30)

Alkuun otin yhteyden virtuaalipalvelimelle, minkä olin luonut tämän viikon oppitunilla (5.2.2019), komennola ssh jerentu@157.230.106.87. Kirjauduin sisään ja annoin tutut aloitus komennot:

sudo apt-get update
sudo apt-get upgrade

Tämän jälkeen loin virtuaalipalvelimelle user-nimisen käyttäjän, ilman mitään oikeuksia, komennolla sudo adduser user. Kun uuden käyttäjän teko oli valmis, menin ja koitin luoda user käyttäjällä uuden public_html kansion ja sinne index.html tiedoston. Oletin että tämä ei toimisi, koska en vielä antanut normaali käyttäjille oikeuksia. Huomasinkin nopeasti, että tiedostojen tekemisessä ei ollut ongelmia, ja että user käyttäjän index.html näkyi verkossa. Annoin sudo käyttäjälläni komennon sudo a2enmod userdir ja sain selville, että olin antanut oikeudet jo aiemmin.

Screenshot_2019-02-08_13-03-17

Apachen oletussivun vaihto, uusi VirtualHost (15.15)

Tämän tehtäväosion tekeminen sujui mutkitta, kun seurasin Tero Karvisen ohjeita (Tero Karvinen – New Default Website with Apache2.)

Aluksi navigoin itseni /etc/apache2/sites-available hakemistoon, ja loin sinne jerentu.conf tiedoston käyttäen sudoedit komentoa. Tähän tiedostoon asetin seuraavat tiedot:

## /etc/apache2/sites-enabled/jerentu.conf
<VirtualHost *:80>
 DocumentRoot /home/jerentu/public_html/
 <Directory /home/jerentu/public_html/>
   Require all granted
 </Directory>
</VirtualHost>

Tiedostossa loin uuden VirtualHostin. Tämän jälkeen minun piti ottaa default VirtualHost pois käytöstä ja ottaa uusi käyttöön seuraavilla komennoilla:

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

Nyt virtuaalipalvelimeni IP-osoitteen default sivuna näkyi jerentu käyttäjän, index.php sivu.

Screenshot_2019-02-08_14-13-25

Murtaustumis yrityksiä virtuaalipalvelimelle (16.15)

Navigoin itseni /var/log hakemistoon ja avasin auth.log  tiedoston komennolla tail -f. Loki tiedosto alkoi nopeasti täyttymään eri murtautumis yrityksistä, päätin selvittää mistä osa niistä on peräisin.

Aluksi asensin geoiplookup ohjelman komennolla sudo apt-get install geoip-bin. Tämän jälkeen valitsin yhden hyökkääjän IP-osoitteen ja tutkin sitä geoiplookup ohjelmalla.

jerentu@Jeren-Palvelin:/var/log$ geoiplookup 218.92.1.181 
GeoIP Country Edition: CN, China

Kyseinen hyökkäysyritys tuli ohjelman mukaan Kiinasta. Hetken aikaa auth.log tiedoston seuraamisen jälkeen kaikki hyökkäykset vaikuttivat tulevan Kiinasta. Jokaisessa hyökkäysyrityksessä oli koitettu salasanaa root-käyttäjälle.

Feb  8 15:02:31 Jeren-Palvelin sshd[7673]: Failed password for root from 218.92.1.181 port 24773 ssh2
Feb  8 15:02:45 Jeren-Palvelin sshd[7673]: message repeated 5 times: [ Failed password for root from 218.92.1.181 port 24773 ssh2]
Feb  8 15:02:45 Jeren-Palvelin sshd[7673]: error: maximum authentication attempts exceeded for root from 218.92.1.181 port 24773 ssh2 [preauth]
Feb  8 15:02:45 Jeren-Palvelin sshd[7673]: Disconnecting: Too many authentication failures [preauth]
Feb  8 15:02:45 Jeren-Palvelin sshd[7673]: PAM 5 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=218.92.1.181  user=root
Feb  8 15:02:45 Jeren-Palvelin sshd[7673]: PAM service(sshd) ignoring max retries; 6 > 3
Feb  8 15:02:49 Jeren-Palvelin sshd[7675]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=218.92.1.181  user=root
Feb  8 15:02:52 Jeren-Palvelin sshd[7675]: Failed password for root from 218.92.1.181 port 46506 ssh2
Feb  8 15:02:56 Jeren-Palvelin sshd[7675]: message repeated 2 times: [ Failed password for root from 218.92.1.181 port 46506 ssh2]
Feb  8 15:02:58 Jeren-Palvelin sshd[7678]: Connection closed by 185.243.152.222 port 52790 [preauth]
...

Kokeilin myös whois ohjelmaa, minkä oli jo aiemin asentanut (sudo apt-get install whois), kun etsin sopivaa domain nimeä. Kokeilin yhtä IP-osoitetta auth.log tiedostosta whois komenolla, minkä seurauksena terminaalin ilmestyi paljon tieotoa. URL-osoitteita, puhelin numeroita, sähköpostiosoitteita, katuosoitteita ym. tietoa mitkä kaikki viittasivat Kiinaan. En välttämättä lähtisi soittelemaan pyytämään jättämään palvelintani rauhaan.

Scp-komennon käyttö (17.25)

Vaikka tehtävänannossa sanotaan: ”Tee weppisivuja paikallisella koneellasi ja kopioi ne palvelimelle scp-komennolla.” (Aikataulu – Linux palvelimet.) Olin jo aiemmin tällä viikolla saanut tehtyä weppisivujani eteenpäin testimielessä, minkä takia tein ainoastaan testdir testikansion kotihakemistooni, ja sinne testfile.txt tiedoston. Tämän jälkeen annoin komennon scp -r testdir/ jerentu@157.230.106.87:public_html/, ja kansio kopioitui ssh-tunnelia pitkin virtuaalipalvelimelle. Nyt tietokoneellani luoma testfile.txt näkyy virtuaalikoneen osoitteessa http://157.230.106.87/testdir/testfile.

Yksinkertainen PHP-sivu (17.45)

Tämänkin tehtäväosion olen tehnyt jo aiemmin, mutta kerron kuitenkin miten ja mitä sain aikaiseksi.

Tein yksinkertaisen index.php sivun mikä listaa tiedot Mariadb tietokannasta. Aluksi asensin tarvittavat ohjelmat tietokannan luomiseen sekä sen käyttämiseen Apachen ja PHPn kanssa. Asensin listassa olevat ohjelmat komennolla sudo apt-get -y

  • mysql-client
  • mysql-server
  • libapache2-mod-php
  • php-mysql

Tämän jälkeen otin PHPn käyttöön lisäämällä yhden ifmodule osion kommenteihin /etc/apache2/mods-available/Php7.2conf tiedostossa (Tähän tarkemmat ohjeet osiossa c).) Tämän jälkeen aloin luomaan tietokantaa. Kirjauduin tietokantaa komennolla mysql -u jerentu -p ja loin uuden databasen:

> creata database asd character set utf8;
> use asd;
> create table smileys(id int auto_increment primary key,
  smileyname varchar(1024), smiley varchar(1024));
> insert into smileys(smileyname, smiley) values ('Happy', ':)');
> ...
> exit

Kun olin luonut tietokannan ja lisännyt sinne hieman testidataa, aloin tekemään index.php sivulle PHP-scriptiä. Koska olin vielä uusi PHPn maailmaan, otin vahvasti mallia Tero Karvisen esimerkistä (Read MySQL database with PHP.)

Screenshot_2019-02-08_16-30-13

Lyhyen kikkailuin jälkeen yhteys tietokannan ja apachen palvelimen välillä onnistui. Tämän seurauksena virtuaalipalvelimeni IP-osoitteen takaa paljastuu nyt hieno hymiö lista.

Screenshot_2019-02-08_16-35-59

 

Linux palvelimet – Apache, maailman suosituin webbipalvelin (h3)

Tämän artikkelin tehtävät ovat osa Tero Karvisen Linux palvelimet ict4tn021 kurssia. (Linux palvelimet – Tero Karvinen)

Tämä teksti on jatkaa siitä, mihin viime artikkelissa jäin (Linux Palvelimet – Lokitietoihin tutustuminen (h2).) Työympäristö pysyy edelleen samana, eli kaikki tapahtumat suoritetaan Xubuntu 18.04.1-amd64 (livetikku) käyttöjärjestelmällä. Käytössä oleva tietokone on Hp pavilion power 15-cb0xx ja muistikkuna Kingston 64GB USB 3.0 DataTraveler 50.

a) Apachen asennus 12.15

Aloitin tehtävän oikean Apache version etsimisellä paketinhallinnasta komennolla apt-cache search apache. Törmäsin Apache2 nimiseen verioon, mikä vaikutti oikealta. Varmistin version olevan se oikea Tero Karvisen sivuilta (Tero Karvinen – Install Apache Web Server on Ubuntu), ja asensin sen komennolla sudo apt-get install apache2. (Asennuskomentoa ennen annoin päivityskomennon sudo apt-get update.)

Asennuksen jälkeen otin apache2 moduulin käyttöön ja loin public_html kansion kotihakemistooni. Tähän kansioon loin index.html tiedoston millä nopeasti testaisin webbisivun toimivuuden. Lopulta potkaisin apache demonin uudelleen käyntiin ja menin selaimella osoitteeseen localhost/~xubuntu/. Olin onnistunut.

xubuntu@xubuntu:~$ sudo a2enmod userdir
Enabling module userdir.
To activate the new configuration, you need to run:
  systemctl restart apache2
xubuntu@xubuntu:~$ cd 
xubuntu@xubuntu:~$ mkdir public_html
xubuntu@xubuntu:~$ cd public_html/
xubuntu@xubuntu:~/public_html$ nano index.html
xubuntu@xubuntu:~$ systemctl restart apache2

asd(1).jpg

b) Apachen loki analysointia 13.00

Etenin Apachen lokitietoihin seuraavilla komennoilla.

xubuntu@xubuntu:~/public_html$ cd /
xubuntu@xubuntu:/$ cd var
xubuntu@xubuntu:/var$ cd log       
xubuntu@xubuntu:/var/log$ cd apache2/
xubuntu@xubuntu:/var/log/apache2$ less access.log

Avasin Apachen acces.log tiedoston less komennolla ja löysin sieltä kolme get pyyntö eri HTTP vastauskoodeilla.

127.0.0.1 - - [01/Feb/2019:10:49:20 +0000] "GET /~xubuntu HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0"
127.0.0.1 - - [01/Feb/2019:10:50:49 +0000] "GET /~xubuntu HTTP/1.1" 301 572 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0"
127.0.0.1 - - [01/Feb/2019:10:50:49 +0000] "GET /~xubuntu/ HTTP/1.1" 200 296 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0"

Ensimmäinen pyynnöistä tapahtui 10.49.20 UTC aikaan, ja vastauskoodiksi HTTP protokolla oli antanut 404 eli ”Not found.” Tämä get pyyntö oli ”yllättäen” tullut tietokoneeni loop-back 127.0.0.1 osoitteesta, ja se oli osoitettu /~xubuntu osoitteeseen. Loki tapahtuman loppussa kerrotaan myös get pyynnön lähettäjän User agent -tiedot. Tiedoista saa selvimme mm., että lähettäjä käyttää Ubuntun 64 bittistä versiota ja Firefoxin selainta. Sivustoa ei todennäköisesti löytynyt, koska en vielä ollut potkaissut Apache demonia uudelleen käyntiin.

Toinen kolmesta get pyynnöstä tapahtui 10.50.49 UTC. Lokitiedot ovat muuten samat, mutta sen HTTP vastauskoodiksi muodostui 301 eli ”Moved permanently.”

Kolmas get pyyntö tapahtui toisen kanssa samaan aikaan 10.50.49 UTC. HTTP vastauskoodiksi oli muodostunut 200, eli ”Ok”. Kaikki tiedot olivat muuten samat paitsi, että get pyyntö oli tällä kertaa kohdistettu osoitteeseen /~xubuntu/.  Tämä tarkoittaa siis sitä, että aiempi 301 pyyntö oli uudelleen ohjannut käyttäjän oikeaan osoitteeseen. Terkennukseksi 200 koodilla tarkoitetaan onnistunut HTTP pyyntöä.

c) Virhe webbipalvelimella 14.00

Ennen virheen toteuttamista minun tarvitsi asentaa PHP:n. Löysin oikean version komenolla apt-cache search php apache ja asensin sen komennolla sudo apt-get -y install libapache2-mod-php. Tämän jälkeen vaihdoin index.html sivun nimen index.php nimelle komenolla mv index.html index.php. PHP ei kuitenkaan vielä toiminut, vaan jouduin muokkaamaan php7.2.conf tiedostoa, mikä sijaitsi /etc/apache2/mods-available kansiossa. Php7.2.conf tiedossa piti kommentoida viimeiset rivit koodia annetun ohjeen (kts. kuva) mukaisesti.

asdasd

Tämän jälkeen Apache demoni tuli taas potkaista uudelleen käyntiin, jotta PHP alkaisi toimimaan. Testasin PHP:n toimivuutta scriptillä (Google – PHP IP Address), mikä näyttäisi käyttäjän IP-osoitteen. Scripti toimi hienosti, minkä jälkeen aloitin virheellisen tahtuman etsimisen.

Hello there :)
<?php print( $_SERVER['REMOTE_ADDR']) ?>

asdasd2

Hetken yrittelyn jälkeen onnistuin saamaan virheellisen tapahtuman Apachen error.log tiedostoon. Muokkasin PHP IP-osoite scriptin virheelliseksi kirjoittamalla REMOTE_ADDR sijaan REMOTE_ADDRESS. Täten scriptiä ei voitu suorittaa, ja siitä ilmestyi merkintä. Avasin error.log tiedoston /var/log/apache2 hakemistosta komenolla tail -f error.log 

[Fri Feb 01 12:18:06.213513 2019] [php7:notice] [pid 10828] [client 127.0.0.1:33884] PHP Notice:  Undefined index: REMOTE_ADDRESS in /home/xubuntu/public_html/index.php on line 3

Lokiviestin alussa mainitaan virheellisen tapahtuman ajankohta, ja sen jälkeen php7:n ilmoittaman virhetyyppi. ”Notice” virhe viittaa mm. mahdolliseen kirjoitusvirheeseen. (PHP – Error reporting.) Pid numerolla ilmeisesti tarkoitetaan demonin id:tä. Tästä en ole täysin varma, jotenka tietäjät voivat taas kommentoida kommenttiosioon. Seuraavaksi viestissä on virheen aiheuttajan, eli käyttäjän, IP-osoite ja porttinumero. Vasta tämän jälkeen on merkattu itse virheviesti: ”Undefined index”, sekä virheen sijainti index.php tiedostossa.

d) Virhe Apachen asetustiedostossa 15.15

Sain virheen aikaiseksi, kun muokkasin apache2.conf tiedostoa etc/apache2 kansiossa komenolla sudoedit apache2.conf. Kirjotin TimeOut kohdan tilalle Timeoff, minkä jälkeen annoin komennon apache2ctl configtest, ja sain virheen näkyviin.

Invalid command 'Timeoff', perhaps misspelled or defined by a module not included in the server configuration
Action 'configtest' failed.

Ongelmaksi siis ilmeni ”Invalid command”, eli epäkelpo komento. Virheilmoituksessa kerrotaan myös mahdollinen syy, mikä osui täysin oikeaan: kirjoitusvirhe. Lopussa vielä lukee että, configtest epäonnistui.

f) Painoindeksi laskuri 15.45

Päätin viimeseksi tehdä painoindeksilaskurin luomalleni kotisivulle osoitteeseen http://localhost/~xubuntu/. Laskutoimituksen päätin tehdä käyttäen PHP:ta, mutta nopeasti huomasin että uuden asia oppimminen voi olla haastavaa. Onneksi löysin apua stackoverflow sivustolta. (Stackoverflow)

Screenshot_2019-02-01_20-23-10

Screenshot_2019-02-01_20-28-47Aikaa laskurin tekemiseen kului tovi (n. 2h), mutta lopputulokseen olen tyytyväinen. Opin samalla jonkin verran PHP:ta ja formien käyttöä. Koodin kirjoittamiseen käytin pitkälti nano editoria, mutta välillä turhauduin ja vaihdoin xubuntun mousepad tekstinkäsittely ohjelmaan. (Mousepadilla pystyin käyttämään hiirtäni.)

Linux Palvelimet – Lokitietoihin tutustuminen (h2)

Tämän artikkelin tehtävät ovat osa Tero Karvisen Linux palvelimet ict4tn021 kurssia. (Linux palvelimet – Tero Karvinen)

Tämä teksti on jatkoa ensimmäisen artikkelin pohjalta (Linux palvelimet – Linux-livetikku (h1)). Oppimisympäristö pysyy samana, eli kaikki tapahtumat suoritetaan Xubuntu 18.04.1-amd64 (livetikku) käyttöjärjestelmällä. Käytössä oleva tietokone on Hp pavilion power 15-cb0xx ja muistikkuna Kingston 64GB USB 3.0 DataTraveler 50.

a) Kaksi tapahtumaa lokiin 16.30

Ennen tehtävän varsinaista suorittamista päätin tutustua loki tietoihin ja tässä tapauksessa syslogin tietoihin. Etenin loki tiedostoihin seuraavilla komennoilla xubuntun terminaalissa.

xubuntu@xubuntu:~$ cd /
xubuntu@xubuntu:/$ cd var
xubuntu@xubuntu:/var$ cd log
xubuntu@xubuntu:/var/log$ less syslog

Sekavaltahan se alkuun näytti, mutta sieltä löytyi myös tuttujakin asiota, kuten tietokoneen mallinumero, RAM muisitin määrä, prosessorin ominaisuuksia ym.

Jan 25 14:35:25 xubuntu kernel: [ 0.000000] DMI: HP HP Pavilion Power Laptop 15-cb0xx/836B, BIOS F.06 05/23/2017
.
.
Jan 25 14:35:25 xubuntu kernel: [ 0.000000] Memory: 12072404K/12465380K available (12300K kernel code, 2470K rwdata, 4240K rodata, 2408K init, 2416K bss, 392976K reserved, 0K cma-reserved)
.
.
Jan 25 14:35:25 xubuntu kernel: [ 0.036000] smpboot: CPU0: Intel(R) Core(TM) i5-7300HQ CPU @ 2.50GHz (family: 0x6, model: 0x9e, stepping: 0x9)
Jan 25 14:35:25 xubuntu kernel: [ 0.036000] Performance Events: PEBS fmt3+, Skylake events, 32-deep LBR, full-width counters, Intel PMU driver

Onnistunut tapahtuma – Wi-fi  yhteyden luominen

Avasin syslog tietodoston log kansiosta komenolla:

xubuntu@xubuntu:/var/log$ less -N syslog

Onnistuin luomaan yhteyden puhelimeni (LG G6 H870 Android 8.00) wi-fi tukiasemaan. Siitä ilmestyi noin 100 rivin mittainen loki tapahtuma syslog-tiedostoon. Aloin käymään tapahtumaa läpi järjestykseksessä ylhtäältä alaspäin.

Aluksi tietokone alkoi luomaan yhteyttä Puhelimeni kanssa ja huomasi, että yhteys vaatii salasanan: ”Puhelin’ has security, but secrets are required.” (Oletan että tämä viittaa salasanaan.) Tarkennukseksi puhelimeni Wi-fi nimi (SSID), on Puhelin.

Samalla tietokone yhdisti hostname palveluun rivillä 105229. Xubuntu koitti näyttää myös Message of the day viestin. Viesti ei ilmeisesti tullut näkyviin koska sitä ei ole asetettu.

105215 Jan 25 14:41:43 xubuntu NetworkManager[1119]: <info> [1548427303.8163] keyfile: add connection in-memory (9acb643a-9575-4157-9e19-974bceb5df2b,"Puhelin")
105216 Jan 25 14:41:43 xubuntu systemd[1]: Starting Message of the Day...
105217 Jan 25 14:41:43 xubuntu NetworkManager[1119]: <info> [1548427303.8176] device (wlo1): Activation: starting connection 'Puhelin' (9acb643a-9575-4157-9e19-974bceb5df2b)
105218 Jan 25 14:41:43 xubuntu NetworkManager[1119]: <info> [1548427303.8225] settings-connection[0x56462436c440,9acb643a-9575-4157-9e19-974bceb5df2b]: write: successfully commited (keyfile: update /etc/Networ
105218 kManager/system-connections/Puhelin (9acb643a-9575-4157-9e19-974bceb5df2b,"Puhelin") and persist connection)
105219 Jan 25 14:41:43 xubuntu NetworkManager[1119]: <info> [1548427303.8227] audit: op="connection-add-activate" uuid="9acb643a-9575-4157-9e19-974bceb5df2b" name="Puhelin" pid=1579 uid=999 result="success"
105220 Jan 25 14:41:43 xubuntu NetworkManager[1119]: <info> [1548427303.8257] device (wlo1): state change: disconnected -> prepare (reason 'none', sys-iface-state: 'managed')
105221 Jan 25 14:41:43 xubuntu NetworkManager[1119]: <info> [1548427303.8258] manager: NetworkManager state is now CONNECTING
105222 Jan 25 14:41:43 xubuntu NetworkManager[1119]: <info> [1548427303.8262] device (wlo1): state change: prepare -> config (reason 'none', sys-iface-state: 'managed')
105223 Jan 25 14:41:43 xubuntu NetworkManager[1119]: <info> [1548427303.8263] device (wlo1): Activation: (wifi) access point 'Puhelin' has security, but secrets are required.
105224 Jan 25 14:41:43 xubuntu NetworkManager[1119]: <info> [1548427303.8264] device (wlo1): state change: config -> need-auth (reason 'none', sys-iface-state: 'managed')
105225 Jan 25 14:41:43 xubuntu systemd[1]: Started Message of the Day.
105226 Jan 25 14:41:44 xubuntu dbus-daemon[1098]: [system] Activating via systemd: service name='org.freedesktop.hostname1' unit='dbus-org.freedesktop.hostname1.service' requested by ':1.35' (uid=999 pid=1579 c
105226 omm="nm-applet " label="unconfined")
105227 Jan 25 14:41:44 xubuntu systemd[1]: Starting Hostname Service...
105228 Jan 25 14:41:44 xubuntu dbus-daemon[1098]: [system] Successfully activated service 'org.freedesktop.hostname1'
105229 Jan 25 14:41:44 xubuntu systemd[1]: Started Hostname Service.

Seuraava vaihe minkä erotin lokista oli Xubuntun NetworkManagerin ja wpa_suplicantin 4-way handshake keskustelu. Tässä ilmeisesti käytiin läpi salasan tarkistus, varmistus ja yhteyden luominen Puhelimen verkkoon. Autentikointiin Xubuntu asio Puhelimen Mac-osoitteen kanssa, mikä näkyy usealla rivillä. (”associate with dc:0b:34:c9:15:b7.”)

Riviltä 105245 kävi myös ilmi, että yhteys käyttää 2.4 Ghz taajuista signaalia. Lopulta 4-way handshake oli käyty läpi, ja yhteys luotiin rivillä 105259.

105241 Jan 25 14:41:49 xubuntu wpa_supplicant[1118]: wlo1: SME: Trying to authenticate with dc:0b:34:c9:15:b7 (SSID='Puhelin' freq=2437 MHz)
105242 Jan 25 14:41:49 xubuntu kernel: [ 397.492852] wlo1: authenticate with dc:0b:34:c9:15:b7
105243 Jan 25 14:41:49 xubuntu kernel: [ 397.498681] wlo1: send auth to dc:0b:34:c9:15:b7 (try 1/3)
105244 Jan 25 14:41:49 xubuntu NetworkManager[1119]: <info> [1548427309.0653] device (wlo1): supplicant interface state: scanning -> authenticating
105245 Jan 25 14:41:49 xubuntu wpa_supplicant[1118]: wlo1: Trying to associate with dc:0b:34:c9:15:b7 (SSID='Puhelin' freq=2437 MHz)
105246 Jan 25 14:41:49 xubuntu kernel: [ 397.502548] wlo1: authenticated
105247 Jan 25 14:41:49 xubuntu kernel: [ 397.504088] wlo1: associate with dc:0b:34:c9:15:b7 (try 1/3)
105248 Jan 25 14:41:49 xubuntu kernel: [ 397.507856] wlo1: RX AssocResp from dc:0b:34:c9:15:b7 (capab=0x411 status=0 aid=1)
105249 Jan 25 14:41:49 xubuntu NetworkManager[1119]: <info> [1548427309.0745] device (wlo1): supplicant interface state: authenticating -> associating
105250 Jan 25 14:41:49 xubuntu wpa_supplicant[1118]: wlo1: Associated with dc:0b:34:c9:15:b7
105251 Jan 25 14:41:49 xubuntu wpa_supplicant[1118]: wlo1: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
105252 Jan 25 14:41:49 xubuntu kernel: [ 397.510361] wlo1: associated
105253 Jan 25 14:41:49 xubuntu NetworkManager[1119]: <info> [1548427309.0822] device (wlo1): supplicant interface state: associating -> associated
105254 Jan 25 14:41:49 xubuntu NetworkManager[1119]: <info> [1548427309.1653] device (wlo1): supplicant interface state: associated -> 4-way handshake
105255 Jan 25 14:41:49 xubuntu wpa_supplicant[1118]: wlo1: WPA: Key negotiation completed with dc:0b:34:c9:15:b7 [PTK=CCMP GTK=CCMP]
105256 Jan 25 14:41:49 xubuntu wpa_supplicant[1118]: wlo1: CTRL-EVENT-CONNECTED - Connection to dc:0b:34:c9:15:b7 completed [id=0 id_str=]
105257 Jan 25 14:41:49 xubuntu kernel: [ 397.618203] IPv6: ADDRCONF(NETDEV_CHANGE): wlo1: link becomes ready
105258 Jan 25 14:41:49 xubuntu NetworkManager[1119]: <info> [1548427309.1890] device (wlo1): supplicant interface state: 4-way handshake -> completed
105259 Jan 25 14:41:49 xubuntu NetworkManager[1119]: <info> [1548427309.1891] device (wlo1): Activation: (wifi) Stage 2 of 5 (Device Configure) successful. Connected to wireless network 'Puhelin'.

Tämän jälkeen NetworkManager haki IP-osoitteen DHCP4 palvelimelta ja listasi siihen oheisia tietoja kuten, IPv4-osoitteen, gateawayn IPv4-osoitteen ja IPv4-osoitteen laina-ajan. Rivillä 105275 näkyi myös, että tietokone liittyi mDNS multicast ryhmään.

105267 Jan 25 14:41:49 xubuntu dhclient[1961]: DHCPACK of 192.168.43.194 from 192.168.43.1
105268 Jan 25 14:41:49 xubuntu NetworkManager[1119]: <info> [1548427309.3015] dhcp4 (wlo1): address 192.168.43.194
105269 Jan 25 14:41:49 xubuntu NetworkManager[1119]: <info> [1548427309.3015] dhcp4 (wlo1): plen 24 (255.255.255.0)
105270 Jan 25 14:41:49 xubuntu NetworkManager[1119]: <info> [1548427309.3016] dhcp4 (wlo1): gateway 192.168.43.1
105271 Jan 25 14:41:49 xubuntu NetworkManager[1119]: <info> [1548427309.3016] dhcp4 (wlo1): lease time 7200
105272 Jan 25 14:41:49 xubuntu NetworkManager[1119]: <info> [1548427309.3016] dhcp4 (wlo1): hostname 'xubuntu'
105273 Jan 25 14:41:49 xubuntu NetworkManager[1119]: <info> [1548427309.3017] dhcp4 (wlo1): nameserver '192.168.43.1'
105274 Jan 25 14:41:49 xubuntu NetworkManager[1119]: <info> [1548427309.3017] dhcp4 (wlo1): state changed unknown -> bound
105275 Jan 25 14:41:49 xubuntu avahi-daemon[1092]: Joining mDNS multicast group on interface wlo1.IPv4 with address 192.168.43.194.

Kohta mikä ihmetytti, oli riveillä 105300 – 105306. Aluksi avahi demoni yhdisti tietokoneen mDNS multicast ryhmään, mutta sitten rivillä 105303 NetworkManager ilmoitti jostakin säädöksestä. Tämän jälkeen avahi poistui aiemmasta mDNS multicast ryhmästä ja uudelleen liittyi eri IPv6-osoitteella.

Olikohan tämä jokin perusmenetelmä vai poikkeus? Tietoisat voi tähän vastata tämän artikkelin kommenttiosiossa.

105300 Jan 25 14:41:50 xubuntu avahi-daemon[1092]: Joining mDNS multicast group on interface wlo1.IPv6 with address fe80::c391:2188:47f:ebba.
105301 Jan 25 14:41:50 xubuntu avahi-daemon[1092]: New relevant interface wlo1.IPv6 for mDNS.
105302 Jan 25 14:41:50 xubuntu avahi-daemon[1092]: Registering new address record for fe80::c391:2188:47f:ebba on wlo1.*.
105303 Jan 25 14:41:50 xubuntu NetworkManager[1119]: <info> [1548427310.5804] policy: set 'Puhelin' (wlo1) as default for IPv6 routing and DNS
105304 Jan 25 14:41:51 xubuntu avahi-daemon[1092]: Leaving mDNS multicast group on interface wlo1.IPv6 with address fe80::c391:2188:47f:ebba.
105305 Jan 25 14:41:51 xubuntu avahi-daemon[1092]: Joining mDNS multicast group on interface wlo1.IPv6 with address 2001:14bb:82:e390:9e67:d77a:e057:429c.
105306 Jan 25 14:41:51 xubuntu avahi-daemon[1092]: Registering new address record for 2001:14bb:82:e390:9e67:d77a:e057:429c on wlo1.*.v

 

Epäonnistunut tapahtuma – USB Donglen pois repäisy tietokoneesta

Hetken koettelun jälkeen löysin yhden epäonnistuneen tapahtuman. Kiskaisin bluetooth hiiren USB lähettimen irti tietokoneesta kesken käytön. Tämän serauksena seuraava neljän rivin tapahtuma ilmestyi syslogiin.

Jan 25 17:11:04 xubuntu kernel: [ 9352.747490] usb 1-1: USB disconnect, device number 2
Jan 25 17:11:04 xubuntu upowerd[1621]: unhandled action 'unbind' on /sys/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/0003:1D57:0008.0001
Jan 25 17:11:04 xubuntu upowerd[1621]: unhandled action 'unbind' on /sys/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0
Jan 25 17:11:04 xubuntu upowerd[1621]: unhandled action 'unbind' on /sys/devices/pci0000:00/0000:00:14.0/usb1/1-1

Ensimmäiseksi xubuntun kerneli ilmoitti, että laitteen 2 USB yhteys on katkaistu. Tämän jälkeen xubuntu ilmoitti käsittelemättömästä toiminnasta, ja että jossakin oli tapahtunut ’unbind’ eli tässä tapauksessa USB laite oli poistettu käytöstä.

 

c) Unelmien apt-get komento 18.45

Listasin komentoon vain kolme minulle tärkeää ohjelmaa, mutta uskon, että tulevaisuudessa lista tulee kasvamaan moninkertaisesti.

sudo apt-get -y install vlc blender gimp

Heitin komentoon mukaan myös myönteisen -y optionin, jotta välttyisin y-painikkeen rämpytkseltä. -y / –yes on siis automaattinen hyväksyjä, mikä hyväksyy ohjelman asennuksen käyttäjän puolesta.

 

d) Kolme komentorivillä toimivaa ohjelmaa 19.00

Translate-shell

Tämän ohjelman löysin komennolla apt-cache search command line. Ohjelman kuvaus vaikuitti lupaavalta ja päätin ladata sen komennolla sudo apt-get -y install translate-shell. Translate-shell kääntää käyttäjän antaman tekstin englanninkielelle käyttäen montaa eri kääntäjä ohjelmaa kuten Google Translate ja Bing Translator. Hienoa ohjelmassa on se että se tunnistaa annetun kielen automaattisesti. Lyhyen testailun jälkeen ohjelma osoittautui oikein käteväksi.

xubuntu@xubuntu:~$ trans "Sudo tee mulle voileipä"
Sudo tee mulle voileipä

Sudo make me a sandwich

Translations of Sudo tee mulle voileipä
[ Suomi -> English ]

Sudo tee mulle voileipä
Sudo make me a sandwich

 

Neofetch

Tällä ohjelmalla saan esiin järjestelmä tietoja suoraan terminaaliin. Asensin ohjelman komennolla sudo apt-get -y install neofetch. Ohjelma käynnistyy komenolla neofetch, minkä jälkeen terminaaliin tulostuu järjestelmä tietoja, sekä hieno kuvio. Tämän ohjelman sain tietooni askubuntu foorumilta foorumilta.

screenshot_2019-01-25_18-14-08

Cmatrix

Viimeiseksi päätin asentaa jotain hienoa, ja lataisin Cmatrix sovelluksen. Latasin tämän ohjelman komennolla sudo apt-get -y install cmatrix ja käynnistin sen komennolla cmatrix. Tämä sovellus printtaa terminaaliin tekstiä ja merkkejä ylhäältä alaspäin Matrix elokuvista tutulla tavalla. Tämän sovelluksen sain tietooni eräältä koulukaverilta.

ezgif-2-0946fbb8ee37

 

Linux palvelimet – Linux-livetikku (h1)

Alkumaininnat

Tämän artikkelin tehtävät ovat osa Tero Karvisen Linux palvelimet ict4tn021 kurssia. (Linux palvelimet – Tero Karvinen)

Tätä tehtävää ennen, lukuunottamatta ensimmäistä oppituntia, en ole käyttänyt linux käyttöjärjestelmää suoranaisesti. Tietokoneella olen käyttänyt pelkästään Windowsin eri versioita. Tämän tehtävän suoritukseen käytän Hp pavilion power 15-cb0xx -tietokonetta, sekä Kingston 64GB USB 3.0 DataTraveler 50 -muistitikkua, mikä saapui sopivasti tänään (18.1.2019) postilaatikkoon.

a) Tehtävän aloitus – Livetikun teko 14.15

Aloitin tehtävän sopivan xubuntu julkaisun etsimisellä, ja päädyin valitsemaan verison 18.04.1-amd64 (Index of /ubuntu-dvd/xubuntu/releases/18.04/release/). Tämän lisäksi tarvitsin työkalun, millä tekisin USB-muistitikustani boottaavan.

Päädyin Rufus nimiseen työkaluun, näyttökuva (30)mitä koulukaverini suosittelivat tunnilla (rufus.ie). Rufus osoittaitui olemaan suoraviivainen työkalu, ja asennus onnistui mutkitta. Valitsin vain aiemin lataamani xubuntun iso-tiedoston ja painoin aloita. Livetikku valmistui noin kahdessa minuutissa.

Asennuksen jälkeen käynnistin tietokeeni uudestaan, ja F9-näppäintä rämpäten siirryin koneen boot-valikkoon. Sieltä valitsin Kingstonin USB-muistikun, minkä jälkeen Xubuntu käynnistyi ongelmitta. Lyhyen testailun jälkeen kaikki toimi moitteitta: näppäimistö kirjoitti, ja yllätten kiinasta tilattu kolmen euron bluetooth hiirinkin toimi normaalisti.

b) Tietokoneen sisältö terminaaliin 15.20

Oletin tämän osion olevan tehtävistä helpoin, mutta näin ei käynyt. Kirjoitin tehtävän annossa annetun komennon ’sudo lshw -short -sanitize’ terminaaliin, mutta mitään listauksia ei tullut esiin. Terminaali tulosti ainostaan ’PCI (sysfs)’, ja jumittui pysyvästi. Edes tappokomento ctrl +c ei pysäyttänyt jumitusta, ainoastaan terminaalin sulkeminen. Siispä siirryin etsimään ratkaisua Googlesta (www.google.fi). Ongelma näytti olevan jokseenkin yleinen, mutta en löytänyt toimivaa ratkaisua. Kokeilin montaa eri lshw komentoa kuten lshw -short ja lshw, mutta kaikki niistä antoi saman ’PCI (sysfs) -tekstin. Yhdellä sivulla (Ubuntuforums) mainittiin, että lshw -komento olisi hidas ja sen listauksessa voi kestää jonkin aikaa. Siispä annoin komennon ’sudo lshw -short -sanitize’ jälleen kerran ja pidin ruokatauon. 30 minuutin ruokailun jälkeen mitään ei ollut listautunut ja komento jumitti yhä. Siispä Googlailin lisää ja törmäsin sivustoon (ezix.org), missä onglemaan ratkomiseen oli linkattu patch. Todennäköinen syy komennon jumittumiseen oli sen aiheuttama ikuinen looppi, mikä patchissä oli ilmeisesti korjattu. Hetken aikaa yritin tutustua patchaamiseen, mutta päätin luovuttaa, koska olin käyttänyt tähän jo yli kaksi tuntia.

asd

c) Kolme ohjelmaa ja niiden käyttö 17.40

Ensimmäiseksi päätin ladata VLC media playerin, koska tiesin sen olevan lähes kaikilla mahdollisilla aloustoilla. Googlen antamilla ohjeilla (Google – Ubuntu terminal vlc) asensin Vlc:n ja latasin testivideon (”Video For Everybody” Test Page). Ohjelma toimi hyvin ja teki sen mitä pitikin.

sudo apt-get update
sudo apt-get install vlc
vlc

screenshot_2019-01-18_16-20-39

Seuraavaksi latasin Gimp nimisen kuvienkäsittelysovelluksen komenolla ’sudo apt-get install gimp’. Asennus tapahtui nopeasti ja ohjelma toimi moitteitta.

Kolmas ohjelma minkä latasin oli Blender (sudo apt-get install blender). Tämänkin asentaminen kävi joutoistasti ja ilman ongelmia. Lyhyehkön 3d taiteilun jälkeen totesin ohjelman toimivat hienosti.

screenshot_2019-01-18_16-40-39

d) Sovellusten lisenssit 18.40

Kaikki kolme aiemmin mainittua sovelusta käyttää GNU GPL lisenssiä (gnu.org). Tämä lisenssi on vapaiden ohjelmistojen julkaisuun sopiva lisenssi. Ohjelman käyttäjät voivat tämän lisenssin alla käyttää, kopioida, muuttaa ja jakaa edelleen ohjelmia ja niiden lähdekoodia.  (Wikipedia – GNU GPL)

e) Lista ohjelmista 18.55

Windows yhteensopiva – käyttötarkoitus – Linux yhteensopiva

Steam   - Pelikauppa /-yhteisö          - Steam
Office  - Digitaaliset toimistotyökalut - Libreoffice
Spotify - Musiikin kuuntelu             - Spotify
Atom    - Koodi editori                 - Atom
Chrome  - Verkkoselain                  - Chromium
PuTTY   - SSH client                    - Terminal

Yllättävän monen ohjelman saa myös linux pohjaisille käyttöjärjestelmille, mutta osa näistä ohjelmista kuten Steam, on ns. riisuttu version Windowsin versiosta.  Uskon kuitenkin että ohjelmien toimivuus paranee tulevaisuudessa, etenkin videopelien osalta.