Nopeutta Varnishilla

Viimeisenä kurssin tehtävänä tartun toimeen asentaa webbi-palvelimelleni Varnishin tehostamaan palvelimen suorituskykyä. Varnish on itse asiassa välimuisti, tällöin esim kuvat yms sivun staattinen sisältö haetaan välimuistista eikä kannasta, jolloin sivujen suorituskyky nousee huomattavasti.

Asennus- ja käyttöohjeet haen Varnishin sivuilta: https://www.varnish-cache.org/

Ensin päivitän paketit ja sitten asennan Varnishin:

$ sudo apt-get install varnish

Varnishin asennus onnistuu nätisti ja asennettu versio on 2.1.0-2ubuntu0.1. Varnishin nettisivuilla olisi ollut tarjolla 3.0.2-versiokin, mutta menköön nyt tällä.

Setting up varnish (2.1.0-2ubuntu0.1) …
* Starting HTTP accelerator

Seuraavaksi konffataan /etc/varnish/default.vcl -tiedostoa, jossa määritetään Varnishin backend palvelin. Muutamme portin ohjeiden mukaan 8080 -> 80:

# Default backend definition.  Set this to point to your content
# server.
#
backend default {
.host = ”127.0.0.1”;
.port = ”80”;
}

Seuraavaksi varmistan ettei varnishin prosessi varnishd ole päällä:

§ sudo pkill varnishd

Starttaan Varnishin muutamilla parametreilla varustettuna:

§ sudo varnishd -f /etc/varnish/default.vcl -s malloc,1G -T 127.0.0.1:2000 -a 0.0.0.0:8080

-f kertoo mistä default-konffis haetaan, -s kertoo tallennustyypin sisällölle, -T aktivoi Varnishin komentopohjaisen hallintatyökalun ja -a että sisääntuleville http-kutsuille käytetään porttia 8080.

Vastauksena saan ao. rivit (2 kpl), joten lähti kaiketi pyörimään:

storage_malloc: max size 1024 MB.
Using old SHMFILE

Näillä perustein ei voi sanoa paljon mitään Varnishin toiminnasta, varsinkin kun ajettava sivu on perus-kökkö-testi-sivu. Tarkistan lokit.

Varnishilla on oma loki-sovelluksensa Varnishlogs. Käynnistän sen terminaalista komenolla:

§ varnishlog

Terminaaliin ilmestyy ao. ping pong-viestejä ilmoittaen Varnishin päällä olemisesta.

0 CLI          – Rd ping
0 CLI          – Wr 200 PONG 1331653734 1.0

Ohje neuvoo vielä päivittämään testisivuani, jolloin terminaaliin pitäisi ilmestyä muutakin tekstiä. Ja sehän toimii!

11 SessionOpen  c 127.0.0.1 33172 0.0.0.0:8080
11 ReqStart     c 127.0.0.1 33172 658134849
11 RxRequest    c GET
11 RxURL        c /
11 RxProtocol   c HTTP/1.1
11 RxHeader     c Host: localhost:8080
11 RxHeader     c User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.18) Gecko/20110628 Ubuntu/10.04 (lucid) Firefox/3.6.18
11 RxHeader     c Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
11 RxHeader     c Accept-Language: en-us,en;q=0.5
11 RxHeader     c Accept-Encoding: gzip,deflate
11 RxHeader     c Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
11 RxHeader     c Keep-Alive: 115
11 RxHeader     c Connection: keep-alive
11 RxHeader     c If-Modified-Since: Sat, 18 Feb 2012 07:50:14 GMT
11 RxHeader     c If-None-Match: ”14349b-11b-4b9384fc23e81”
11 RxHeader     c Cache-Control: max-age=0
11 VCL_call     c recv
11 VCL_return   c lookup
11 VCL_call     c hash
11 VCL_return   c hash
11 VCL_call     c miss

Kiitokset mielenkiintoisesta kurssista! Toivottavasti se keskitetty hallinta tms Linux/Unix-kursseja saataisiin myös iltatoteutuksiin 🙂

Sisällönhallintaa

Edellisessä tehtävässä on kuvattu LAMPin asennus. Testattuani PHP:n ja MySQL:n toiminnan lataan http://wordpress.org/download/ sivulta WordPressin asennuspaketin. Paketti asentuu koneelleni /home/a1003645/Lataukset -hakemistoon. Ko. hakemistosta puran asentuneen tervapallon auki seuraavalla komennolla:

$ tar -xf wordpress-3.3.1.tar.gz

Purku tekee ko. hakemistoon WordPress-nimisen hakemiston, jonka siirrän komennolla:

$ mv Lataukset/wordpress /home/a1003645

oman  hakemistoni alle. Asennusohjeita luen http://codex.wordpress.org/Installing_WordPress -sivustolta.

Yritän avata index.php -tiedoston selaimeen http://localhost/wordpress/

mutta eihän se onnistu, koska tämä hakemisto ei tue php:ta. Siirrän wordpress-hakemistoni public_html-hakemiston alle ja kokeilen uudestaan. Jo toimii!

MySQL-kantaan tulee luoda tietokantawordpressia varten. Luon wpsanna-nimisen tietokannan phpMyAdmin-etusivulta.

wpsanna

Seuraavaksi luon wpsanna-kantaan samannimisen käyttäjän ”wpsanna”. Käyttäjän lisäys tapahtuu Privileges-kohdan alta.

Jatkan asennusta selaimen kautta, sivulta: http://localhost/wordpress/ painamalla Create a Configuration File-nappia. Siirryn eteen päin ja syötän tietokannan tiedot:

  1. Database name = wpsanna
  2. Database username = wpsanna
  3. Database password = xxxxxxxxx
  4. Database host = localhost
  5. Table prefix = wp_

Submitin jälkeen selain ilmoittaa, ettei pysty luomaan wp-config.php -tiedostoa, mutta voin luoda sen itse manuaalisesti ja tarjoaa minulle tiedostoon talletettavat konfiguraatiot.

Luon sample-tiedoston pohjalta tämän wp-config.php-tiedoston:

$ cp wp-config-sample.php wp-config.php

Avaan nanolla wp-config.php:n ja talletan selaimen tarjoaman konfiguraation siihen. Jatkan asennusta selaimen kautta napista ”Run the Install”.

Syötän seuraavat tiedot ja asennan WordPressin.

WordPress › Installation

Talunpollaus-sivusto syntyy! Asennetaan vielä uusi teema.

Valitaan teema sivun vasemmasta valikosta kohdasta Appearance -> Themes. Valitaan välilehti Install Themes.

Tehdään muutamia valintoja liittyen sivuston ulkoasuun, jotta saadaan filtteröityä tarjolle tulevia sivustopohjia.

Install Themes ‹ talunpollaus

Näillä filttereillä saan 5 kpl aika tylsiä vaihtoehtoja, joten vaihdan vielä Width-valinnan Fixed width:ksi. Tällä löydän mieleiseni pohjan ”Green Theme” ja valitsen sen.

Jotta saan asennettua Teeman koneelleni, tulee minun ensin asentaa FTP-client ja siirtää teeman tiedostot FTP:llä koneelleni. Lataan Filezilla clientin koneelleni täältä.

Puran FileZilla-tervapallon komennolla:

$ tar -xf FileZilla_3.5.3_i586-linux-gnu.tar.bz2, joka tekee hakemistoon FileZilla3-hakemiston. Siirrän FileZilla3-hakemiston oman hakemistoni alle komennolla § mv FileZilla3 /home/a1003645/ .

Käynnistän FileZillan komennolla:

a1003645@sanna-laptop:~/FileZilla3/bin$ ./filezilla

Yritän syöttää ftp-useriksi wordpressin admin-käyttäjää salasanoineen, mutta ei yhteys ei onnistu. Tulen tulokseen, että sopiva ftp-user puuttuu ja etsin WordPressistä ohjeistusta.

http://codex.wordpress.org/Editing_wp-config.php -sivustolta löydän ohjeen, että wp-config.php -tiedostoon tulee lisätä muutama rivi, liittyen ftp-käyttäjään. Lisään nämä ao. rivit ja kokeilen miten toimii:

/** FTP-konffaukset  */
define(’FS_METHOD’, ’ftpext’);
define(’FTP_BASE’, ’/home/a1003645/public_html/wordpress/’);
define(’FTP_CONTENT_DIR’, ’/home/a1003645/public_html/wordpress/wp-content/’);
define(’FTP_PLUGIN_DIR ’, ’/home/a1003645/public_html/wordpress/plugins/’);
define(’FTP_PUBKEY’, ’/home/a1003645/.ssh/id_rsa.pub’);
define(’FTP_PRIKEY’, ’/home/a1003645/.ssh/id_rsa’);
define(’FTP_USER’, ’ftp-ktunnus’);
define(’FTP_PASS’, ’xxxxxxxxx’);
define(’FTP_HOST’, ’localhost’);
define(’FTP_SSL’, false);

Totean ettei tällä ole merkitystä, sillä tämä vain esisyöttää arvot kenttiin, mutta lopputulos on sama, eli virhe.

Tutkin ongelmaa pitkään, enkä oikein pääse eteenpäin. Apachen access.logille tulee seuraava http 304 error:

::1 – – [03/Mar/2012:16:36:50 +0200] ”GET /wordpress/wp-includes/js/thickbox/thickbox.css?ver=20111117 HTTP/1.1” 304 210 ”http://localhost/wordpress/wp-admin/update.php?action=install-theme&theme=green-theme&_wpnonce=7c51f77a24” ”Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.18) Gecko/20110628 Ubuntu/10.04 (lucid) Firefox/3.6.18”

Error 304 (= Not modified) viittaa johonkin väärään muotoon tms. GET ei ole toiminut.

Googlaillessani löydän WordPress-teemoja muilta sivustoilta .zip-muodossa ja päätän ladata teeman sivustolta: http://www.wordpressthemedownload.org.

Tämän teeman saa ladattua zippinä, joten asennus on helpompi. Puran zip-tiedoston unzzip-komennolla ja teen asennuksen sen siältämän Readme:n ohjeen avulla.

Siirrän unzipatun teema-paketin wp-content/themes -hakemistoon komennolla:

/public_html/wordpress/wp-content/themes$ mv /home/a1003645/Lataukset/wordpress_theme_67 .

Tämän jälkeen menen paikallisen WordPressini (talunpollaus) hallintakonsolille ja valitsen Appearance -> Themes ja siellähän se äsken lataamani teema jo näkyykin. Valitsen sen alta Activate-toiminnon. Tarkistan että uusi teema on käytössä. Ta-daa!

Jatkan wp-pluginin asennuksella. Valitsen ensin jonkun pluginin ja päädyn kalenteriin sivustolta http://wordpress.org/extend/plugins/calendar/ .

Unzippaan ladatun paketin ja siirrän sen ../wordpress/wp-content/plugins/ -hakemiston alle.

Sivuston hallintapaneelin sivulle Plugins on ilmestynyt asentamani Calendar-plugin. Aktivoin sen ja etsin paikan mistä sen voi asentaa sivulle. Paikka on Widgets-valikko hallintapaneelissa.

Raahaan kalenterini sivun oikeaan laitaan ylimmäiseksi.

Tarkistan sivustolta näkykö kalenteri-asennusta siellä. Näkyy kuin näkyykin!

Apache, mySql ja phpAdmin

Ubuntun versio 10.0.4

Aika la 18.2.2012 klo 9-13:15

Tämän viikon aiheena on webbi-palvelimen pystytys Linuxille. Tarkoituksenani oli tehdä asennus live-rompulle, jotten sotkisi jo olemassa olevaa asennustani, mutta ajatus tyssäsi alkuunsa verkkoyhteyden puuttumiseen. Jostain kumman syystä langaton verkkoyhteys live-rompulta ei onnistunut, vaikka langaton verkkoyhteytemme näkyi saatavilla olevissa yhteyksissä. Tunnistautuminen avainrenkaalla ei onnistunut.

Koneellani on siis toiminnassa oleva Apache2-asennus (asennettu keskiviikkona 25.2.2011 komennolla: $ sudo apt-get install apache2), joten asennan sen rinnalle mySql-kannan ja phpAdminin. Asennuksen ohjeet katson Tero Karvisen kotisivuilta.

Alla kuva yksinkertaisesta kotisivustani /home/a1003645/public_html -hakemistossa:

Asennan mySql-kannan ja phpmyadmin-hallintatyökalun komennolla:

$ sudo apt-get install mysql-server phpmyadmin

Päivitän asennuspaketit:

§ sudo apt-get install

Asennan mySql-kannan ja phpmyadmin-hallintatyökalun komennolla:

$ sudo apt-get install mysql-server phpmyadmin

Annan mySql-kannan salasanan

ja valitsen webbi-palvelimeksi Apache2:n ja automaattisen tietokannan konfiguraation dbconfig-komennolla.

Asennus onnistui, sellä selaimella osoite http://localhost/phpmyadmin-osoite antaa minulle phpAdmin-käyttöliittymän. Kirjaudun sisään käyttäjätunnuksella root, sekä asennusvaiheessa antamallani salasanalla.

Luon public_html -hakemiston alle geditillä uuden welcome.htm sivun, joka näyttää tältä:

Nimeän welcome.htm -tiedoston welcome.php:ksi komennolla:

$ mv welcome.htm welcome.php

Lisään welcome.php:n hötskän sisään hieman php-koodia:

<?
//Ohjelma tulostaa sarjaa 1, 5, 25, 125, …, kunnes sarjan jäsenen arvo on yli 30000.
$i;

for ($i=1; $i <= 30000; $i*5)
{
echo $i.'<br />’;
$i = $i*5;
}
?>

Yrittäessäni avata  Firefoxilla tätä welcome.php -sivua, saan FF:ltä vain kysymyksen, että millä sen tahdon avata. Firefox ei osaa avata tätä .php-tiedostoani!

Googlaan hieman ongelmaani ja Ubuntu-forumilta paljastuu, että kyseessä lienee ongelma Ubuntun 10.0.4-versiossa, joka siis minullakin on käytössäni. Selviää, että /etc/apache2/mods-enabled/php5.conf -tiedostossa on joitakin rivejä, jotka estävät /home/*/public_html -hakemistoon asennettujen .php -tiedostojen toiminnan selaimessa.

/etc/apache2/mods-enabled/php5.conf -tiedoston sisältö on:

<IfModule mod_php5.c>
    <FilesMatch ”\.ph(p3?|tml)$”>
    SetHandler application/x-httpd-php
    </FilesMatch>
    <FilesMatch ”\.phps$”>
    SetHandler application/x-httpd-php-source
    </FilesMatch>
    # To re-enable php in user directories comment the following lines
    # (from <IfModule …> to </IfModule>.) Do NOT set it to On as it
    # prevents .htaccess files from disabling it.
    <IfModule mod_userdir.c>
        <Directory /home/*/public_html>
            php_admin_value engine Off
        </Directory>
    </IfModule>
</IfModule>

Kommentoin <IfModule mod_userdir.c> ja </IfModule> -väliset rivit ja restarttaan apache2:n komennolla:

$ sudo /etc/init.d/apache2 restart

Ongelma ei poistu vieläkään. Seuraavaksi luen ohjeita tältä sivulta ja teen uuden sivun defaultin pohjalta:

$ sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/mysite

Avaan uuden mysite-sivuni tekstieditoriin ja muokkaan sen sisältämät rivin:

DocumentRoot ja Directory rivit osoittamaan /var/www -hakemiston sijasta omaan public_html-hakemistooni:

    DocumentRoot /home/a1003645/public_html/
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /home/a1003645/public_html/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

Seuraavalla komennolla otan tämän uuden hakemiston käyttöön:

§ sudo a2dissite default && sudo a2ensite mysite

Site default disabled.
Run ’/etc/init.d/apache2 reload’ to activate new configuration!
Enabling site mysite.
Run ’/etc/init.d/apache2 reload’ to activate new configuration!
a1003645@sanna-laptop:/etc/apache2/sites-available$

Lopuksi vielä apachen restartti:

§ sudo /etc/init.d/apache2 restart

Homma toimii!!!

Metapaketteja

Metapaketti on näppärä tapa asentaa Linuxille/Unixille ohjelmia. Metapaketti ei sisällä itse ohjelmakoodia, vaan ikään kuin linkin siihen ja sen riippuvuuksiin. Metapaketteja käyttäen ohjelmistoja voidaan asentaa ja hallita keskitetysti. Metapaketti päivittää automaattisesti ohjelmista uusimmat versiot.  Seuraavaksi rakennan metapaketin käyttäen Dependicer-ohjelmaa. Ohjeita metapakettien luontiin dependicerin avulla ja itse dependicerin asennuspaketin saan Tero Karvisen sivuilta.

Asennan Dependicer-ohjelman paketin koneelleni Teron sivuilta, teen sille oman hakemiston /opt/Dependicer ja puran sen sinne. Jotta purku onnistuu, joudun muuttamaan hakemiston omistajaa omalle tunukselleni. Sudo-komennolla omistajaksi tuli root, mutta komennolla

$ sudo chown oma_tunnus Dependicer

muutan omistajan omaksi tunnuksekseni, jolloin saan paketin purettua sinne.

-rwxrwx–x 1 oma_tunnus oma_tunnus 2419 2011-09-14 13:32 dependicer
-rw-rw—- 1 oma_tunnus oma_tunnus   258 2011-09-14 14:46 dependicer-packages.dpd

Dependicer-packages.dpd-tiedostoa voidan muokata ja tallentaa sinne haluttu metapaketin sisältö.  Tutkin dependicer-packages.dpd-tiedostoa nano-editorilla:

GNU nano 2.2.2         File: dependicer-packages.dpd

# Multiple metapackages for dependicer
# package:      dependency1, dependency2…
dependicer-coding:   nano emacs git bzr
dependicer-graphics: inkscape, gimp
dependicer-server: apache2
dependicer-workstation:      teros-coding, teros-drawing, dependicer-server

Muokkaan dependicer-packages.dpd:n sisältöä seuravanlaiseksi:

# Multiple metapackages for dependicer
# package:      dependency1, dependency2…
dependicer-coding:   nano emacs git bzr
dependicer-graphics: inkscape, gimp, shutter
dependicer-server: apache2
dependicer-workstation:    dependicer-server

Seuraavaksi luon metapaketin komennolla

§ ./dependicer dependicer-packages.dpd

Tuloksena neljä kpl metapaketteja Dependicer-hakemistossani:
-rwxrwx–x 1 oma_tunnus oma_tunnus 2419 2011-09-14 13:32 dependicer
-rw-r–r– 1 oma_tunnus oma_tunnus 2120 2012-02-11 09:30 dependicer-coding_0.20120211.0930_all.deb
-rw-r–r– 1 oma_tunnus oma_tunnus 2120 2012-02-11 09:30 dependicer-graphics_0.20120211.0930_all.deb
drwxr-xr-x 2 oma_tunnus oma_tunnus 4096 2012-02-11 09:30 dependicer-output
-rw-rw—- 1 oma_tunnus oma_tunnus  236 2012-02-11 09:28 dependicer-packages.dpd
-rw-r–r– 1 oma_tunnus oma_tunnus 2094 2012-02-11 09:30 dependicer-server_0.20120211.0930_all.deb
-rw-r–r– 1 oma_tunnus oma_tunnus 2102 2012-02-11 09:30 dependicer-workstation_0.20120211.0930_all.deb

Kurkistan dependicer-output-hakemistosta erikseen jokaisen paketin outputin. Dependicer-graphic-paketilla se on tällainen:

# Created with dependicer. Build with ’equivs-build dependicer-graphics’
Section: misc
Priority: optional
Standards-Version: 3.6.2
Package: dependicer-graphics
Version: 0.20120211.0930
Maintainer: Undefined Maintainer <nomail@example.com.invalid>
Depends: inkscape, gimp, shutter
Description: Metapackage
Installed files listed in dependencies
dependicer-graphics.cfg (END)

Tarkistan vielä lintianilla pakettien eheyden, esimerkkinä dependicer-coding:

§ lintian dependicer-coding_0.20120211.0930_all.deb

Kaikki pakettini ovat eheitä. Seuraavaksi allekirjoitan pakettini debsign-ohjelmaa käyttäen. Asennan debsign-ohjelman:

$ sudo apt-get install devscripts

Generoin aluksi itselleni gpg-avaimen komennolla (Tässä kohtaa katson mallia Purple Floydin sivuilta):

§ gpg –gen-key

Valitsen default-arvot ja syötän omat tietoni nimen ja spostin kyselyyn. Lopputulemana oma avainpari, jolla voin allekirjoittaa luomani metapaketit 🙂

dbgpg: /home/oma_tunnus/.gnupg/trustdb.gpg: trustdb created
gpg: key 2A981094 marked as ultimately trusted
public and secret key created and signed.

Yritän allekirjoittaa Dependicerillä tehdyt pakettini debsign-ohjelmalla. Debsignille pitäisi antaa parametrina joko .changes, .dsc tai .commands -päätteinen tiedosto. Googlaan ja haen tiedostojärjestelmästä, mutta en löydä tähän ohjetta. Dpkg-buildpackage -ohjelma hoitaisi koko paketoinnin, myös allekirjoituksen, mutta tässä oli tarkoitus käyttää debsignia. Monen tunnin tuhraus tähän saa nyt riittää ja siirryn pakettivaraston teko hommiin.

Pakettivarasto tehdään reprepro-ohjelman avulla. Ohjeet pakettivaraston luontiin reprepro:lla löytyy AwaseConfigurationsin blogista (http://awaseconfigurations.wordpress.com/2011/10/26/reprepro/).

Ensin asennetaan reprepro:

§ sudo apt-get install reprepro

Luodaan hakemisto nimeltään conf

§ mkdir conf

sekä sen alle tiedosto distributions (aluksi loin jakelut-nimisen tiedoston, mutta se ei kelvannut myöhemmässä vaiheessa), jonka sisältö on tämä:

Origin: Sanna
Label: Sanna-All
Suite: stable
Codename: natty
Version: 0.1
Architectures: i386 amd64 source
Components: main non-free contrib
Description:  SannanJakelut

Ajetaan komento:

$ reprepro -Vb . includedeb natty /opt/Dependicer/dependicer-graphics_0.20120211.0930_all.deb

joka luo liudan hakemistoja:

Created directory ”./db”
/opt/Dependicer/dependicer-graphics_0.20120211.0930_all.deb: component guessed as ’main’
Created directory ”./pool”
Created directory ”./pool/main”
Created directory ”./pool/main/d”
Created directory ”./pool/main/d/dependicer-graphics”
Exporting indices…
Created directory ”./dists”
Created directory ”./dists/natty”
Created directory ”./dists/natty/main”
Created directory ”./dists/natty/main/binary-i386”
Created directory ”./dists/natty/main/binary-amd64”
Created directory ”./dists/natty/main/source”
Created directory ”./dists/natty/non-free”
Created directory ”./dists/natty/non-free/binary-i386”
Created directory ”./dists/natty/non-free/binary-amd64”
Created directory ”./dists/natty/non-free/source”
Created directory ”./dists/natty/contrib”
Created directory ”./dists/natty/contrib/binary-i386”
Created directory ”./dists/natty/contrib/binary-amd64”
Created directory ”./dists/natty/contrib/source”

Lataan muutkin .deb-pakettini tähän varastoon. Distribution-tiedosto ja sen codename natty ilmeisesti linkkaavat näihin reprepro:n synnyttämiin db-, pool- ja dists-hakemistojen alla oleviin tiedostoihin, jotka sisältävät tiedot asennuspaketeista.

Rosvoja ja kunnon kansalaisia

Viikon tehtävänä oli tutkia verkossa vuonna 2001 tapahtunut rikos. Honeynet-projekti asettaa hunajapurkkeja, eli syötti-koneita   verkkoon odottamaan hyökkäystä. Maaliskuun 15. 2001 tällaiseen hunajapurkkiin hyökättiin ja siitä tehtiin case nro 15 (http://old.honeynet.org/scans/scan15/), jolla jokainen tietoverkkorikostutkijan urasta haaveileva voi testata kykynsä. Tässä case15:ssä tehtävänä on löytää hyökkääjän asentama rootkit, eli haittaohjelma. Alla omat toimeni ja tutkimukseni rikoksesta.

Asennettuani VirtualBox OSE-virtuaalikoneen Ubuntun 11.04-käyttiksellä ja sen jälkeen tutkintaohjelma Autopsyn, yritin asentaa erikseen vielä Sleuthkitin, mutta se olikin asennettu jo Autopsyn mukana.

Seuraavaksi latasin http://old.honeynet.org/scans/scan15/ -sivustolta pakatun levykuvan, purin sen komennolla tar -xf honeynet.tar.gz. Komento luo honeynet-hakemiston. Tämän jälkeen loin uuden hakemiston nimeltään honey15 komennolla mkdir honey15, jonne mounttasin honeynet-levykuvan komennolla:

sudo mount /home/aXXXXXXX/honeynet/honeypot-hda8.dd /home/a1003645/honeynet15 -o loop.

Komennosta jäi pois noexec ja nodev-parametrit, joita en millään saanut päähäni (myöhemmin huomasin ne casen kotisivulla). Mounttaamisen jälkeen avaan autopsy-ohjelman komennolla sudo autopsy ja valitsen terminaalista linkin selaimeen.

Aloitan tutkijan hommat valitsemalla Open case ja seuraavasta New case. Luon uuden Honey15-nimisen keissin ja tutkijanimekseni kirjoitan Sanna. Tutkittavan koneen nimeän defaulttina host1:ksi. Add image-kohtaan anna ao. arvot ja siirryn nextillä eteen päin. Ignooraan Hash value-arvojen tarkistukset.

Valitsen Analyzen ja aloitan tutkintani tiedostoista. Ensimmäisen kerran epäilykseni herää /etc-hakemistossa, jonka altalöydä mtab-tiedoston, jota järjestelmä käyttää mounttausten tallentamiseen. Löydän myös epäilyttävän mtab~ -tiedoston, joka ei näytä laisinkaan mtabilta, vaan sisältää smurf-, linsnffer yms. rivejä, ks. kuva alla.

Seuraava jännittävä löydös on /root/.bash_history -tiedosto, jonka mukaan viimeiset komennot ovat olleet:


Löydöstä innostuneena hain Autopsylla Keyword search-toiminnolla ”mech”:iä. Löysin fragmentista 9086 epäilyttävää sisältöä.

Sen perusteella kävin vielä tarkistamassa /dev/.ida -hakemiston sisällön. Ko. hakemistossa oli tcp.log-niminen tiedosto, jossa näkyi mm. ns2.giant.net -niminen Yhdysvaltalainen osoite, joka on usealla mustalla listalla netissä, asdf1 lienee sen hostname tms.

Rootkittiä en ole vielä löytänyt, enkä oikein edes tiedä mitä etsin, joten päädyn takaisin /etc-hakemistoon. Tarkistan sen alta löytyvän hosts-tiedoston, jossa siis määritellään ne koneet, jotka saavat ottaa yhteyden tähän honeypot-koneeseemme. Sieltä löytyykin pari ip-osoitetta 172.16.1.108 ja -109. 108:n hostnamena on tuttu asdf1. Tämän honeypotin hostname:ksi lienee vaihdettu tuo asdf1 edellisessä kohdassa (mech-kohta yllä).

Luen Linuxforumilta (http://www.linuxforu.com/2011/09/rootkits-the-enemy-within/). Rootkitin määritelmän mukaan rootkit koostuu yleensä useista tavallisista binääri-paketeista, mm. linsnifferistä ja lokeja muokkaavista sovelluksista. Muistan nähneeni tämän linsnifferin jossain tiedostojärjestelmässä pyöriessäni.

Haen Autopsyn Keyword searchilla linsniffer:iä ja löydän sen yllä mainitusta /dev/ida/.drag-on -hakemistosta. Samassa hakemistossa on myös lokeja sormeilevia sovelluksia yms. Uskon löytäneeni rootkitin täältä /dev/ida/.drag-on -hakemistosta. Piste hakemiston edessä tarkoittaa että hakemisto on piilotettu. Sitä ei siis ole deletoitu kokonaan. Bonus-kysymyksessä kysytään, että asennettiinko rootkittiä varsinaisesti koskaan. Varmaa vastausta en tiedä, mutta tämän rootkitin sisältö saattaa sisältää ihan tavallisia Linuxin asennuksessa asennettuja paketteja, joita on vain muokattu.

Tein tehtävää kolmen päivän aikana, yhteensä noin 8-10 h.

Järjestelmän tilan seuraaminen ja prosessinhallinta

Aika: sunnuntaina 29.1.2012 noin klo 19.21

Tehtävänämme oli käynnistää prosesseja ja seurailla tapahtumia lokeilta.

Koska Windows palvelinjärjestelmä-tunnilla jouduin deletoimaan koko entisen Linux-asennukseni (tilan tarpeen vuoksi), oli aloitettava tyhjältä pöydältä. Linuxiltani puuttui siis kaikki aiemmin asentamani ohjelmat. SSH:n asennuksen jälkeen päätin asentaa sinne Gimp-kuvankäsittelyohjelman, sekä Skypen ja tehdä seurattavia lokitapahtumia Skypen avulla.

Asensin Skypen Ubuntun oman Software Centerin kautta.

Skypen ja Gimpin asennusten jälkeen tarkistin syslogin seuraavalla komennolla:

tail -F /var/log/syslog -n 30

ja vastaukseksi sain syslogin 30 viimeistä riviä sisältäen mm:

Jan 29 19:19:22 sanna-laptop AptDaemon: INFO: InstallPackages() was called: dbus.Array([dbus.String(u’skype’)], signature=dbus.Signature(’s’))
Jan 29 19:19:22 sanna-laptop AptDaemon.Trans: INFO: Queuing transaction /org/debian/apt/transaction/4885ad302e8c4c2d96bd0d402066fa1e
Jan 29 19:19:22 sanna-laptop AptDaemon.Worker: INFO: Processing transaction /org/debian/apt/transaction/4885ad302e8c4c2d96bd0d402066fa1e

Jan 29 19:20:58 sanna-laptop AptDaemon.Worker: INFO: Finished transaction /org/debian/apt/transaction/4885ad302e8c4c2d96bd0d402066fa1e
Jan 29 19:21:58 sanna-laptop kernel: [ 8194.092121] process `skype’ is using obsolete setsockopt SO_BSDCOMPAT
Jan 29 19:25:23 sanna-laptop pulseaudio[1586]: ratelimit.c: 4094 events suppressed

Jan 29 19:36:13 sanna-laptop AptDaemon: INFO: InstallPackages() was called: dbus.Array([dbus.String(u’gimp’)], signature=dbus.Signature(’s’))
Jan 29 19:36:19 sanna-laptop AptDaemon.Trans: INFO: Queuing transaction /org/debian/apt/transaction/4cb3b1cbe29c4923a56bcfe88b289d48
Jan 29 19:36:19 sanna-laptop AptDaemon.Worker: INFO: Processing transaction /org/debian/apt/transaction/4cb3b1cbe29c4923a56bcfe88b289d48
Jan 29 19:36:44 sanna-laptop AptDaemon.Worker: INFO: Finished transaction /org/debian/apt/transaction/4cb3b1cbe29c4923a56bcfe88b289d48

Skypen asennuttua olin valmis soittelemaan, mutta vain Echo sound test oli paikalla, joten se sai riittää.

Juteltuani tärkeimmät testi-Eskon kanssa, tarkistin syslogin ja sieltä löytyi  ao. komennolla (joka siirtää standard outputin sisällön määriteltyyn tiedostoon)

tail -F /var/log/syslog -n 30 > /home/xxxxxxx/Työpöytä/sysloki.txt

useita seuraavanlaisia rivejä:

Jan 29 19:51:56 sanna-laptop pulseaudio[1586]: ratelimit.c: 5158 events suppressed
Jan 29 19:52:01 sanna-laptop pulseaudio[1586]: ratelimit.c: 5725 events suppressed
Jan 29 19:52:06 sanna-laptop pulseaudio[1586]: ratelimit.c: 6732 events suppressed

Tarkistin myös /var/log/auth.logilta mitä mainintoja siellä on asennuksistani sillä jokainen lataus on vaatinut autentikoinnin.

Jan 29 19:36:19 sanna-laptop polkitd(authority=local): Operator of unix-session:/org/freedesktop/ConsoleKit/Session2 successfully authenticated as unix-user:xxxxxxx to gain TEMPORARY authorization for action org.debian.apt.install-packages for system-bus-name::1.61 [/usr/bin/python /usr/bin/software-center] (owned by unix-user:xxxxxxx)

Seuraavaksi seurailen koneeni prosesseja. Haluan tietää eniten prossuaikaa vievät prosessit. Kirjoitan terminaaliin komennon § top, jolla saan ao. listauksen.

Huomioni herättää watchdog-niminen prosessi ja Googlen avulla löydän sivuston http://linux.die.net/man/8/watchdog ja selvitää sen olevan prosessi, joka kirjoittaa /etc/watchdog-tiedostoon tasaisin väliajoin, ainakin kerran minuuttiin, estäen näin kernelin resetoitumisen. Annetaan siis watchdogin jatkaa hommiaan. Mikäli kyseessä olisi ollut joku hämäräperäinen sovellus, olisin voinut tappaa sen komennolla

§ kill -9 PID

Kaikki hyvin, joten lopuksi asentelin terokarvinen.com-sivuston opein Muninin komennolla:

sudo apt-get -y install munin

ja avasin selaimeen valvontanäytön komennolla:

firefox /var/cache/munin/www/index.html

Alkuun näyttö on tyhjä, mutta muutamien minuuttien päästä käppyrät alkavat piirtymään asteikolle. Valitettavasti käytettävissä oleva aikani loppui, joten en saanut tähän kunnon käppyröitä esitettäväksi.

Linuxin asennus

Laitteisto ja Linuxin asennus

Vuoden takaiselta Työasemat ja tietoverkot -kurssilta koulun läppärilläni (HP EliteBook 2530p) on hyvin toimiva Linux asennus. Asennus kurssilla suoritettiin live-rompulta ja se on suht tuoreena mielessäni, joten en lähtenyt nyt sotkemaan asennusta. Asennetun Linuxin versio on 10.04 ja koska kyseinen versio on opettajankin mieleen enemmän kuin uudempi 11.04, vahvisti tämä päätöstäni pidättäytyä jo asennetussa versiossa. Mikäli olisin kuitenkin tehnyt asennuksen uudestaan, olisin saanut poltettua rompun osoitteesta: http://www.ubuntu.com/download/ubuntu/download valitsemalla vaihtoehdon 2 (Burn your CD or create a bootable USB stick). Rompun valmistuttua restartataan kone romppu sen sisässä, jolloin kone lähtee asentamaan rompulla olevaa Linuxia.

Läppärissäni on siis tällä hetkellä dual-boot, oletuksena se buuttaa Linuxille.

SSH-palvelimen asennus

Linuxillani oli ennestään Työasemat ja tietoverkot-kurssin jäljiltä myös SSH-palvelimen asennus, mutta tällä kurssilla päivitin SSH:n version. Päivityksen voi tehdä kahdella tapaa, joko Synaptic Package Managerin kautta, kirjoittamalla haku-kenttään SSH tai komentorivi-pohjaisesti kirjoittamalla ensin komennon

$ sudo apt-get update

joka hakee saatavila olevat ohjelmapäivitykset. Seuraava komento hakee päivityksen avainsanalla ”ssh server”.

$ apt-cache search ssh server

Varsinainen ssh:n asennus tapahtuu komennolla:

$ sudo apt-get install ssh

Yllä oleva komento asentaa OpenSSH:n. Itsellän on ssh:sta nyt asennettuna versio 1:5.3p1-3ubuntu7. Asennuksen tulosta voidaan testata komennolla

$ ssh localhost

, joka ottaa ssh-yhteyden omalle koneelle. Mikäli asennus on onnistunut pitäisi tuloksena olla seuraavanlainen litania:

Linux sanna-laptop 2.6.32-31-generic #61-Ubuntu SMP Fri Apr 8 18:24:35 UTC 2011 i686 GNU/Linux
Ubuntu 10.04.2 LTS

Welcome to Ubuntu!
 * Documentation:  https://help.ubuntu.com/

194 packages can be updated.
133 updates are security updates.

Last login: Wed Jan 18 19:57:43 2012 from localhost

Uuden käyttäjän luominen ja sillä kirjautuminen

Uusi käyttäjä (tässä lassisa) luodaan näppärimmin komennolla

$ sudo adduser lassisa

Yo. komento pyytää samalla syöttämään salasanan ja tekee tunnuksen kerralla kuntoon. Seuraavaksi kirjaudutaan äskettäin luodulla tunnuksella ssh-yhteydellä.

$ ssh lassisa@localhost

Ssh kysyy käyttäjän salasanan ja kun kirjautuminen on onnistuu, saadaan paluuna:

sanna@sanna-laptop:~$ ssh lassisa@localhost

lassisa@localhost’s password:
Linux sanna-laptop 2.6.32-31-generic #61-Ubuntu SMP Fri Apr 8 18:24:35 UTC 2011 i686 GNU/Linux
Ubuntu 10.04.2 LTS

Welcome to Ubuntu!
 * Documentation:  https://help.ubuntu.com/

194 packages can be updated.
133 updates are security updates.

lassisa@sanna-laptop:~$