h6.
Kokeile virtuaalipalvelinta (VPS). Voit vuokrata palvelimen esimerkiksi Linodelta, Amazonilta, DigitalOceanilta, OVH:lta tai monista muista paikoista. Amazonilla saattaa olla ilmainen kokeilupaketti, DigitalOcean on halvin. Vaihtoehto: jos et jostain syystä halua vuokrata virtuaalipalvelinta, voit kokeilla tehdä oman vagrantilla.
Laita monta DNS-nimeä samaan IP-osoitteeseen. Apache Name Based Virtual Hosting.
========================
Vaikeampi vaihtoehtoinen tehtävä, jos olet jo aiemmin hankkinut virtuaalipalvelimen ja asettanut Name Based Virtual Hostingin Apachelle: Tee Python Flaskista tuotantoasennus ja kokeile sitä.
Lähde http://terokarvinen.com/2016/aikataulu-linux-palvelimena-ict4tn003-22-ja-23-alkusyksy-2016
Tämä raportti perustui tilanteeseen, jossa oli jo olemassa DigitalOceanin käyttäjätili ja tilillä oli määritettynä ennestään maksutiedot.
DigitalOcean https://www.digitalocean.com/ kirjautumisen jälkeen oltiin tilanteessa
Aloitin virtuaalipalvelimen luomisen valitsemalla Create Droplet
Ensimmäisenä piti valita mikä käyttöjärjestelmä haluttiin käyttöön. Valitsin tästä vaihtoehdon Ubuntu 16.04.1 x64.
Seuraavana oli vuorossa virtuaalipalvelimen koko. Valitsin vaihtoehdoista pienimmän, koska koneen oli tarkoitus toimia vain harjoitustehtävien tekemisessä.
Palvelimelle olisi myös voinut valita lisätallennustilaa, mutta tätä ei tarvittu. Valitsin palvelimen sijainniksi Frankfurtin, koska se on kohtuullisen matkan päässä Suomesta, eikä tällä palvelimella ollut muita käyttäjiä kuin minä.
Ennen palvelimen luomista olisi vielä ollut mahdollista ottaa käyttöön lisäpalveluita, mutta näitä ei tässä tapauksessa tarvittu. SSH avainta en myöskään tässä yhteydessä lähtenyt ottamaan käyttöön. Palvelimen nimeksi valitsin koulu.matto.guru.
Lopuksi painoin Create
-painiketta.
Muutaman minuutin jälkeen palvelin oli luotuna ja käytettävissä annetuilla tiedoilla
Koska palvelin sai julkisen ip-osoitteen 46.101.147.244
piti seuraavaksi ottaa käyttöön suojausmekanismit.
Ensimmäiseksi palvelimelle piti kirjautua sähköpostiin tulleilla tunnuksilla.
$ ssh root@46.101.147.244 The authenticity of host '46.101.147.244 (46.101.147.244)' can't be established. ECDSA key fingerprint is SHA256:naCKyr6/0npNt6VVQ1Q/lsgpNAQxakJw75Drf81erlE. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '46.101.147.244' (ECDSA) to the list of known hosts. root@46.101.147.244's password: You are required to change your password immediately (root enforced) Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-38-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage 0 packages can be updated. 0 updates are security updates. The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Changing password for root. (current) UNIX password: Enter new UNIX password: Retype new UNIX password:
Kirjautuminen edellytti myös salasanan vaihtamista.
Seuraavaksi otin palvelimella palomuurin käyttöön. Tätä ennen piti kuitenkin sallia SSH-liikenne palvelimen palomuurin ohi, jotta ylläpito oli mahdollista.
root@koulu:~# ufw allow 22/tcp Rules updated Rules updated (v6) root@koulu:~# ufw enable Command may disrupt existing ssh connections. Proceed with operation (y|n)? y Firewall is active and enabled on system startup
Seuraavaksi loin uuden käyttäjän matto, ja lisäsin käyttäjälle ylläpito-oikeudet.
root@koulu:~# adduser matto perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LC_CTYPE = "UTF-8", LANG = "en_US.UTF-8" are supported and installed on your system. perl: warning: Falling back to a fallback locale ("en_US.UTF-8"). Adding user `matto' ... Adding new group `matto' (1000) ... Adding new user `matto' (1000) with group `matto' ... Creating home directory `/home/matto' ... Copying files from `/etc/skel' ... Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully Changing the user information for matto Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] y root@koulu:~# adduser matto sudo perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LC_CTYPE = "UTF-8", LANG = "en_US.UTF-8" are supported and installed on your system. perl: warning: Falling back to a fallback locale ("en_US.UTF-8"). Adding user `matto' to group `sudo' ... Adding user matto to group sudo Done. root@koulu:~# adduser matto adm perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LC_CTYPE = "UTF-8", LANG = "en_US.UTF-8" are supported and installed on your system. perl: warning: Falling back to a fallback locale ("en_US.UTF-8"). Adding user `matto' to group `adm' ... Adding user matto to group adm Done.
Seuraavaksi testasin matto-käyttäjän kirjautumisen koneelle, avaamalla uuden terminaalin
$ ssh matto@46.101.147.244 matto@46.101.147.244's password: Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-38-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage 0 packages can be updated. 0 updates are security updates. The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. To run a command as administrator (user "root"), use "sudo". See "man sudo_root" for details. matto@koulu:~$ sudo apt-get update [sudo] password for matto:
Kirjautuminen onnistui hienosto joten lopuksi estin root-kirjautumisen koneelle
root@koulu:~# usermod --lock root
Tämän testaus onnistui kirjautumalla ulos ja yrittämällä uudelleen kirjautumista
root@koulu:~# exit logout Connection to 46.101.147.244 closed. $ ssh root@46.101.147.244 root@46.101.147.244's password: Permission denied, please try again. root@46.101.147.244's password: Permission denied, please try again. root@46.101.147.244's password: Permission denied (publickey,password).
Lopuksi asensin suojausmekanismiksi palvelimelle fail2ban ohjelmiston. Olen aiemmin havainnut, että tuolla ohjelmalla voidaan pienentää palvelimen kuormaa huomattavasti.
matto@koulu:~$ sudo apt-get install fail2ban Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: libpython-stdlib libpython2.7-minimal libpython2.7-stdlib python python-minimal python2.7 python2.7-minimal python3-pyinotify whois Suggested packages: mailx monit python-doc python-tk python2.7-doc binutils binfmt-support python-pyinotify-doc The following NEW packages will be installed: fail2ban libpython-stdlib libpython2.7-minimal libpython2.7-stdlib python python-minimal python2.7 python2.7-minimal python3-pyinotify whois 0 upgraded, 10 newly installed, 0 to remove and 31 not upgraded. Need to get 4193 kB of archives. After this operation, 18.1 MB of additional disk space will be used. Do you want to continue? [Y/n] Y
Tuon osalta perusasetukset ovat riittävät, joten otin sen vain käyttöön komennolla
matto@koulu:~$ sudo service fail2ban start
Olin törmännyt vastaavaan virheeseen aikaisemminkin ja tuo virheilmoitus tulee usein, jossei tilannetta korjata. Tämän vuoksi muutin tiedostoa /etc/default/locale
komennolla
matto@koulu:~$ sudo nano /etc/default/locale
Tiedoston sisällöksi laitoin
LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
Jotta tuo palvelimen nimi koulu.matto.guru
saatiin toimimaan ilman, että tarvitsi muistaa tuota ip-osoitetta, kävin muuttamassa Gandin asetuksia.
Käytännössä Zone-tiedostoon piti lisätä rivit
koulu 10800 IN A 46.101.147.244 *.koulu 10800 IN A 46.101.147.244
Testasin toiminnan seuraavana päivänä (koska nimipalvelinten päivittyminen kestää useamman tunnin) avaamalla ssh yhteyden nimen, enkä ip:n mukaan.
Seuraavaksi asensin apachen komennolla
matto@koulu:~$ sudo apt-get install apache2
Seuraavaksi määritin käyttöön käyttäjien omat hakemistot
matto@koulu:~$ sudo a2enmod userdir Enabling module userdir. To activate the new configuration, you need to run: service apache2 restart matto@koulu:~$ sudo service apache2 restart
Ennen testausta piti vielä avata palomuuriin portti komennolla
matto@koulu:~$ sudo ufw allow 80/tcp Rule added Rule added (v6)
Testasin pääsyä oman työasemani internet selaimella (Chrome Version 53.0.2785.116 (64-bit)) ja ip-osoitteella sain auki testisivun.
Ensin loin käyttäjälle kansion internet sivuja varten:
matto@koulu:~$ mkdir public_html
Kansion alle tein kolme alikansiota eri sivuille
matto@koulu:~/public_html$ mkdir sivusto1 matto@koulu:~/public_html$ mkdir sivusto2 matto@koulu:~/public_html$ mkdir sivusto3
Lopuksi tein testausta varten jokaiseen alikansioon tiedoston index.html, sisällöltään
Sivusto X toimii!
Jossa tuo X on sivuston numero.
Lopuksi rakenne oli siis tällainen
matto@koulu:~/public_html$ tree . ├── sivusto1 │ └── index.html ├── sivusto2 │ └── index.html └── sivusto3 └── index.html 3 directories, 3 files
Seuraavaksi täytyi kertoa palvelimelle, mitä sivustoja tuolta käytetään.
matto@koulu:~/public_html$ cd /etc/apache2/sites-available/ matto@koulu:/etc/apache2/sites-available$ sudo cp 000-default.conf sivusto1.conf [sudo] password for matto: matto@koulu:/etc/apache2/sites-available$ sudo nano sivusto1.conf matto@koulu:/etc/apache2/sites-available$ sudo nano sivusto2.conf matto@koulu:/etc/apache2/sites-available$ sudo nano sivusto3.conf
sivusto1.conf sisältö
<VirtualHost *:80> ServerName koulu.matto.guru ServerAlias koulu.matto.guru ServerAdmin matto@matto.guru DocumentRoot /home/matto/public_html/sivusto1 ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
sivusto2.conf
<VirtualHost *:80> ServerName sivu2.koulu.matto.guru ServerAlias sivu2.koulu.matto.guru ServerAdmin matto@matto.guru DocumentRoot /home/matto/public_html/sivusto2 ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
sivusto3.conf
<VirtualHost *:80> ServerName sivu3.koulu.matto.guru ServerAlias sivu3.koulu.matto.guru ServerAdmin matto@matto.guru DocumentRoot /home/matto/public_html/sivusto3 ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Lopuksi otettiin sivut käyttöön
matto@koulu:/etc/apache2/sites-available$ sudo a2dissite 000-default.conf Site 000-default disabled. To activate the new configuration, you need to run: service apache2 reload matto@koulu:/etc/apache2/sites-available$ sudo a2ensite sivusto1.conf Enabling site sivusto1. To activate the new configuration, you need to run: service apache2 reload matto@koulu:/etc/apache2/sites-available$ sudo a2ensite sivusto2.conf Enabling site sivusto2. To activate the new configuration, you need to run: service apache2 reload matto@koulu:/etc/apache2/sites-available$ sudo a2ensite sivusto3.conf Enabling site sivusto3. To activate the new configuration, you need to run: service apache2 reload matto@koulu:/etc/apache2/sites-available$ sudo service apache2 reload Lopuksi toimivuuden sai testattua avaamalla osoitteet http://koulu.matto.guru http://sivu1.koulu.matto.guru http://sivu2.koulu.matto.guru
Extra bonuksena asensin tuolle palvelimelle käyttöön ssl sertifikaatit.
Ensin valmisteltiin suojattu sivusto määrittämällä /etc/apache2/sites-available
-kansiossa olevasta default-ssl.conf
-tiedostosta versio:
<IfModule mod_ssl.c> <VirtualHost _default_:443< ServerAdmin matto@matto.guru DocumentRoot /home/matto/public_html/sivusto1 ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLEngine on <FilesMatch "\.(cgi|shtml|phtml|php)$"< SSLOptions +StdEnvVars </FilesMatch> <Directory /usr/lib/cgi-bin< SSLOptions +StdEnvVars </Directory< </VirtualHost< </IfModule<
Tämän jälkeen avattiin palomuurista portti 443
matto@koulu:/etc/apache2/sites-available$ sudo ufw allow 443/tcp Rule added Rule added (v6)
Asennettiin let’s Encrypt Lähde:https://certbot.eff.org/#ubuntuxenial-apache
matto@koulu:~$ sudo apt-get install python-letsencrypt matto@koulu:~$ sudo letsencrypt --apache The requested apache plugin does not appear to be installed matto@koulu:~$ sudo apt-get install python-letsencrypt-apache matto@koulu:~$ sudo letsencrypt --apache
Järjestelmä kysyi mille sivuille otetaan https käyttöön. Valitsin nyt vain tuon pääsivun.
Tämän jälkeen kysyttiin sähköpostiosoitetta, joka toimii ssl-sertifikaatin osalta kontaktina.
Ehdot piti tietenkin myös hyväksyä.
Vielä piti päättää halutaanko ottaa käyttöön vain ssl-suojaus vai jättää myös normaalit sivut toimintaan.
Lopuksi järjestelmä kertoi asennuksen onnistuneen.
Testasin vielä toiminnan avaamalla sivuston internet-selaimella ja varmistamalla sertifikaatin tilan
13 total views, no views today
]]>h5.
Varsinaiset tehtävät:
– Asenna LAMP. LAMP tarkoittaa Linux, Apache, MySQL, PHP. Tee pienin erikseen testattava kokonaisuus kerrallaan ja testaa aina asennetut osat. Jos ei toimi, lue lokeja.
– Tee MySQL:n uusi tietokanta ja samanniminen käyttäjä. Valitse hyvä salasana, joka on eri kuin muut salasanat.
– Tee PHP-skriptiin kirjoitusvirhe ja etsi virheilmoitus lokista. Analysoi löytynyt lokirivi.
– Tee johonkin Apachen asetustiedostoon kirjoitusvirhe ja etsi virheilmoitus lokista. Analysoi löytynyt lokirivi.
Vapaaehtoista, mutta erittäin suositeltavaa:
– Ota itsellesi GitHub Education -paketti. Käytämme siitä saatavaa ilmaista palvelintilaa tällä kurssilla myöhemmin, mutta hakemuksen käsittely kestää 1-2 viikkoa.
Vapaaehtoisia lisätehtäviä:
– Kokeile PhpMyAdminia
– Pelaa sqlzoo.net:iä (tätä sqlzoo:n pelaamista ei tarvitse raportoida)
– Tee PHP-ohjelma, joka lukee tietueita tietokannasta. Käytä PHP-PDO -kirjastoa.
– Asenna WordPress. Lataa wordpress.org:sta tervapallo (.tar.gz), jotta oikeudet menevät oikein.
Vinkkejä:
– PHP:n toiminta on oletuksena estetty käyttäjien kotisivuilla, asetuksen muuttamiseksi ks ‘grep -ir php /etc/apache2/’
– Tarvittaessa esimerkkiratkaisuja tehtävään löytyy Googlella. Muista viitata kaikkiin lähteisiin.
– Linux Palvelimet 5op aikataulussa on useita linkkejä LAMP:ista, jotka kannattaa lukea, ennenkuin alat suorittaa tätä tehtävää http://terokarvinen.com/2016/aikataulu-linux-palvelimet-alkusyksy-2016#timetable
– Linkkejä:
http://terokarvinen.com/2008/install-apache-web-server-on-ubuntu-4
http://terokarvinen.com/2016/mysql-install-and-one-table-database-sql-crud-tutorial-for-ubuntu
http://terokarvinen.com/2012/change-mysql-password-dpkg-reconfigure-mysql-server-5-1-ubuntu-debian-error-1045
http://php.net/manual/en/tutorial.forms.php
https://miro.metsanheimo.fi/2015/09/24/pdo/
http://terokarvinen.com/2016/instant-firewall-sudo-ufw-enable
Tässä harjoituksessa tehdyt harjoitukset tehdään Macbook Air (13-inch, Mid 2011)-kannettavalla tietokoneella, jossa on prosessorina 1,8 GHz Intel Core i7 ja muistina 4 GB 1333 MHz DDR3. Käyttöjärjestelmänä on macOS Sierra 10.12 (16A322). Asennus tehdään VirtualBox-ohjelmiston päälle. Käytettävä VirtualBox versio on 5.1.6 r110634.
Asennustiedostona käytän osoitteesta http://ftp.uni-kl.de/pub/linux/ubuntu-dvd/xubuntu/releases/16.04/release/ ladattua iso tiedostoa: xubuntu-16.04.1-desktop-amd64.iso 2016-07-19 23:10 1.2G Desktop image for 64-bit PC (AMD64) computers (standard download)
Avasin VirtualBox sovelluksen ja valitsin pääikkunasta NEW
.
Name and operating system-ikkunassa:
Annoin koneelle nimeksi SUPPORTSQUID
Tyypiksi valitsin Linux
ja Versioksi Ubuntu (64-bit)
.
Seuraavaksi valitsin Continue
Memory size-ikkunassa:
Minulle riitti tuo ehdotettu muistin määrä 1024MB, joten valitsin Continue
.
Hard disk-ikkunassa valitsin tuon ehdotetun Create a virtual hard disk now
.
Seuraavaksi valitsin Create
Avautuneesta Hard disk file type-ikkunasta valitsin tuon ehdotetun VDI (VirtualBox Disk Image)
-vaihtoehdon.
Seuraavaksi valitsin Continue
.
Storage on physical hard disk-ikkunan ehdotettu Dynamically Allocated
oli hyvä vaihtoehto, joten valitsin sen.
Seuraavaksi valitsin Continue
.
File location and size-ikkunassa en vaihtanut tuota ehdotettua nimeä (SUPPORTSQUID
). Lisäsin kuitenkin levyn kokoa 30GB:hen.
Seuraavaksi valitsin Create
.
Tämä päätti VirtualBox-asennus osuuden ja voitiin siirtyä asentamaan käyttöjärjestelmää valitsemalla juuri tehty osuus ja painamalla näppäintä Start
.
Avautuvassa ikkunassa valitsin ladatun levykuvan kansion kuvan painamisen jälkeen auenneesta ikkunasta.
Seuraavaksi valitsin Start
.
Xubuntun asennuksen käynnistyttyä valitsin vaihtoehdoista Install Xubuntu
.
Preparing to install Xubuntu-ikkunasta valitsin vaihtoehdot:
Download updates while installing xubuntu
ja Install third-party software for graphics and Wi-Fi hardware, Flash, MP3 and other media
.
Seuraavaksi valitsin Continue
.
Installation type-ikkunassa valitsin Erase disk and install xubuntu
.
Seuraavaksi valitsin Install Now
.
Write the changes to disks-ikkunassa valitsin vain Continue
.
Install-ikkunassa oli valmiiksi jo aikavyöhykkeenä Helsinki, joten valitsin vain Continue
.
Keyboard Layout-ikkunasta valitsin Keyboard Layout valinnaksi Finnish
ja Finnish - Finnish (Macintosh)
Seuraavaksi valitsin Continue
.
Who are you?-ikkunaan kirjoitin seuraavat tiedot:
Your name: Matti
Your computer’s name: supportsquid
Pick a username: matto
Choose a password ja Confirm your password-kenttiin kirjoitin vahvan salasanan.
Lisäksi varmistin, että valinta require my password to log in
oli valittuna.
Seuraavaksi valitsin Continue
.
Asennus kesti tämän jälkeen muutaman minuutin.
Installation complete-ikkunasta valitsin Restart Now
.
Asennus sanoi tämän jälkeen Please remove the installation medium, then press ENTER:
. Koska tuo levy kuitenkin poistui automaattisesti, minun ei tarvinnut kuin painaa Enter-näppäintä.
Asennus onnistui, koska tämän jälkeen tuli kirjautumisikkuna ja järjestelmä aukesi kirjoittamalla kenttään salasanan ja painamalla Enter-näppäintä.
Järjestelmän toiminnan varmistamiseksi, asensin vielä VirtualBox työkalut. Tämä onnistui valitsemalla ylävalikosta Devices – Insert Guest Additions CD-image…
Tämän jälkeen työpöydälle ilmestyi harmaana oleva kuvake VBOXADDITIONS_5.1.6_110634
. Kuvakkeen tuplaklikkaus ja avautuvassa ikkunassa tyhjässä kohdassa valitsemalla hiiren oikea painike ja Open Terminal here
-valinta päästi suoraan oikeaan kansioon.
Kansiossa piti vielä antaa komento
$sudo ./autorun.sh
Tämä ajo edellytti vielä salasanan antamisen.
Kun asennus pääsi vaiheeseen, jossa se kehotti Press return to close this window...
painoin Enter-näppäintä.
Seuraavaksi päivitin vielä kaikki ohjelmat komennoilla:
$sudo apt-get update $sudo apt-get upgrade
Komennot vaativat vielä salasanan antamisen ja Y-valinnan, kun asennus kysyi haluatko päivittää ohjelmat.
Tuon jälkeen käynnistin koneen uudelleen, jotta VirtualBox-ominaisuudet tulivat kokonaisuudessaan käyttöön.
A=Apachen asennus Linuxiin onnistui helposti avaamalla Terminal-ikkunan ja antamalla komennon:
:~$ sudo apt-get install apache2
Toiminta saatiin testattua avaamalla web-selain ja menemällä osoitteeseen localhost
. Osoitteesta avautui sivu “It Works!”; joten apachen asennus onnistui.
Käyttäjien omat html-hakemistot saatiin käyttöön komennolla:
:~$ sudo a2enmod userdir [sudo] password for matto: Enabling module userdir. To activate the new configuration, you need to run: service apache2 restart :~$ service apache2 restart :~$
Testataan toiminta luomalla käyttäjälle kansio public_html ja sinne tiedosto index.html:
:~$ mkdir public_html :~$ cd public_html/ :~/public_html$ nano index.html :~/public_html$ ls -la total 12 drwxrwxr-x 2 matto matto 4096 syys 18 11:16 . drwxr-xr-x 21 matto matto 4096 syys 18 11:12 .. -rw-rw-r-- 1 matto matto 107 syys 18 11:16 index.html :~/public_html$ chmod a+r index.html
Tiedoston sisältö:
<!DOCTYPE html> <html> <head> <title>kotisivu</title> </head> <body>
<p>Hello World!</p>
</body>
</html>
Testaus onnistui menemällä internet-selaimella osoitteeseen http://localhost/~matto/
M=Mysql asennus onnistui komennolla
$sudo apt-get install mysql-server
Asennus kysyi hetken kuluttua mysql-palvelimen root-käyttäjälle salasanan. tähän valitsin vaikeasti arvattavan vahvan salasanan. Asennus kysyi salasanan vielä toistamiseen.
Asennuksen jälkeen toiminnan sai testattua komennolla
$ mysql -u root -p
Koska tällä pääsi mysql>
-valintaan, onnistui palvelimen asennus.
Tuolta päästiin ulos komennolla quit
.
P=PHP asennus onnistui antamalla terminaalissa komento
$ sudo apt-get -y install php $ sudo apt-get install libapache2-mod-php7.0
Toiminnan sai testattua luomalla tiedoston index.php
kansioon /var/www/html/
. Tiedoston sisällöksi laitoin:
<?php print "Hello World!"; ?>
Tämän jälkeen osoitteesta http://localhost/index.php löytyi sivu, jonka sisältönä oli vain Hello World!
. Mikäli sivulla olisi näkynyt muuta, olisi asennus epäonnistunut.
Tein tietokannan ja sille käyttäjän avaamalla terminaalin ja antamalla komennot:
$ mysql -u root -p mysql> CREATE DATABASE sanni; Query OK, 1 row affected (0,01 sec) mysql> GRANT ALL ON sanni.* TO sanni@localhost IDENTIFIED BY 'SaDk7BS*TZN7jCq+9EaA'; Query OK, 0 rows affected, 1 warning (0,01 sec)
Viimeisin komento antoi varoituksen, joten tarkistin mitä tuo varoitus pitää sisällään:
mysql> SHOW WARNINGS; +---------+------+------------------------------------------------------------------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+------------------------------------------------------------------------------------------------------------------------------------+ | Warning | 1287 | Using GRANT for creating new user is deprecated and will be removed in future release. Create new user with CREATE USER statement. | +---------+------+------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0,00 sec)
Tämä on hyvä tietää jatkossa, mutta ei vaikuttanut toimintaan tällä kertaa.
Lopuksi testasin, että käyttäjä pääsee kirjautumaan.
mysql> quit Bye $ mysql -u sanni -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 11 Server version: 5.7.15-0ubuntu0.16.04.1 (Ubuntu) Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> USE sanni; Database changed mysql>
Tästä näkyi, että käyttäjä pääsi kirjautumaan sisään ja sai valittua luodun tietokannan.
Muutin tuota alkuperäistä PHP-tiedostoa muotoon
<?php pint "Hello World!"; ?>
ja yritin avata sivun selaimella. Sivu aukesi tyhjänä.
Katsoin tämän jälkeen /var/log/apache2/error.log
-tiedoston viimeisen rivin, joka näytti tältä
[Tue Sep 20 19:21:56.527769 2016] [:error] [pid 14528] [client 127.0.0.1:57188] PHP Parse error: syntax error, unexpected '"Hello World!"' (T_CONSTANT_ENCAPSED_STRING) in /var/www/html/index.php on line 2
Virherivin sisältö:
Testasin apachen konfiguraatiovirhettä muuttamalla tiedostoon
/etc/apache2/apache2.conf
riviä
Mutex fileAAA:${APACHE_LOCK_DIR} default
Tämän jälkeen yritin käynnistää apachen uudelleen komennolla
$sudo service apache2 restart
Tämä ei kuitenkaan onnistunut ja sain ilmoituksen
Job for apache2.service failed because the control process exited with error code. See "systemctl status apache2.service" and "journalctl -xe" for details.
Tämän osalta löytyy useita virheitä virhelogista /var/log/syslog
Näistä eniten virheestä kertova oli
Sep 20 19:44:25 supportsquid apache2[14860]: Invalid Mutex argument fileAAA:/var/lock/apache2 (Mutex mechanisms are: 'none', 'default', 'flock:/path/to/file', 'fcntl:/path/to/file', 'file:/path/to/file', 'pthread', 'sysvsem', 'posixsem', 'sem')
Paketin sai tilattua annetusta osoitteesta, käyttämällä koulun sähköpostiosoitetta. Paketti hyväksyttiin ja tuli käyttöön noin 5 minuutissa.
Asennus onnistui terminaalista antamalla komento
$sudo apt-get install phpmyadmin
Asennus kysyi mikä http-palvelin on käytössä. Koska asensimme aikaisemmin apachen, valitsemme sen ja ok.
Seuraavaksi asennus halusi tietää onko käytössä jo tietokantapalvelu. Koska asensimme mysql palvelimen aikaisemmin, valitsin No
.
Asennuksen valmistuttua, sain tarkistettua toiminnan avaamalla internet-selaimen osoitteessa http://localhost/phpmyadmin/
. Sivulla pääsee kirjautumaan sisään mysql palvelimen tunnuksella.
Kokeilin kirjautumista mysql-palvelimen root-tunnuksella. Järjestelmä näytti kaikki olemassa olevat tietokannat ja antoi mahdollisuuden tehdä erilaisia toimenpiteitä palvelimelle.
Päätin kokeilla uuden tietokannan luomista valitsemalla vasemmalla olevasta valikosta New
.
Avautuneessa ikkunassa valitsin tietokannan nimeksi tiia
ja merkistöksi latin1_swedish_ci
.
Valitsin vielä Create
Tietokanta tuli listaan ja mahdollisuus taulujen lisäämisen aukesi automaattisesti. Sivulla oli myös ilmoitus No tables found in database
koska tuolla ei vielä ollut ainuttakaan taulua.
24 total views, no views today
]]>11 total views, no views today
]]>h4:
– Tee metapaketti, joka asentaa suosikkiohjelmasi. Katso, että se menee läpi lintianista.
– Tee pakettivarasto repreprolla
Vapaaehtoiset bonus-tehtävät:
– Allekirjoita reprerolla tekemäsi varasto
– Paketoi jokin skriptisi, niin että paketti asentaa järjestelmän käyttäjille uuden käskyn
– Tee paketti, joka muuttaa asetuksia johonkin .d-hakemistoon asennetulla tiedostolla
– Kertaa Apachen asennus, käyttäjien kotisivujen teko ja lokin lukeminen
Katso myös:
http://terokarvinen.com/2011/create-deb-metapackage-in-5-minutes
http://terokarvinen.com/2011/update-all-your-computers-with-a-deb-repository
Lähde: http://terokarvinen.com/2016/aikataulu-linux-palvelimena-ict4tn003-22-ja-23-alkusyksy-2016
Aluksi asennettiin equivs ympäristö:
$sudo apt-get update $sudo apt-get -y install equivs
Seuraavaksi tein asennuspaketin konfiguraatio tiedoston:
$equivs-control matto-perusohjelmat.cfg
Ja muokkasin tiedoston muotoon:
Section: misc Priority: optional Homepage: matto.guru Standards-Version: 3.9.2 Package: matto-perusohjelmat Version: 0.0.1 Maintainer: Matti JäppinenDepends: nano, kate, tree Description: Matin kokoelma perusohjelmista Peruskäyttöön tarkoitetut ohjelmat: . Tekstieditorit: - nano - kate Yleisohjelmat: - tree
Seuraavaksi loin asennuspaketin:
$ equivs-build matto-perusohjelmat.cfg dh_testdir dh_testroot dh_prep dh_testdir dh_testroot dh_install dh_installdocs dh_installchangelogs dh_compress dh_fixperms dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dpkg-deb: building package 'matto-perusohjelmat' in '../matto-perusohjelmat_0.0.1_all.deb'. The package has been created. Attention, the package has been created in the current directory, not in ".." as indicated by the message above!
Lopuksi testasin paketin toiminnan, tämä vaati vielä gdebi-core paketin asennuksen:
$ sudo gdebi -n matto-perusohjelmat_0.0.1_all.deb [sudo] password for matto: sudo: gdebi: command not found $ gdebi The program 'gdebi' is currently not installed. You can install it by typing: sudo apt install gdebi-core $ sudo apt-get install gdebi-core $ sudo gdebi -n matto-perusohjelmat_0.0.1_all.deb
Komento asensi yhteensä 145 eri pakettia.
Seuraavaksi varmistin, että paketti menee läpi lintianista:
$ lintian matto-perusohjelmat_0.0.1_all.deb W: matto-perusohjelmat: possible-unindented-list-in-extended-description W: matto-perusohjelmat: bad-homepage matto.guru
Virheet korjasin tekemällä paketista version 0.0.2:
Section: misc Priority: optional Homepage: http://matto.guru Standards-Version: 3.9.2 Package: matto-perusohjelmat Version: 0.0.2 Maintainer: Matti JäppinenDepends: nano, kate, tree Description: Matin kokoelma perusohjelmista Peruskäyttöön tarkoitetut ohjelmat: . Tekstieditorit: nano kate Yleisohjelmat: tree
Ja tämän osalta paketin luomisen jälkeen lintiankin meni läpi:
$ equivs-build matto-perusohjelmat.cfg dh_testdir dh_testroot dh_prep dh_testdir dh_testroot dh_install dh_installdocs dh_installchangelogs dh_compress dh_fixperms dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dpkg-deb: building package 'matto-perusohjelmat' in '../matto-perusohjelmat_0.0.2_all.deb'. The package has been created. Attention, the package has been created in the current directory, not in ".." as indicated by the message above! $ lintian matto-perusohjelmat_0.0.2_all.deb $
Eli lintian tarkistus onnistui.
Seuraavana oli vuorossa reprepro pakettivaraston luonti. Koska apache oli jo asennettu palvelimelle, Reprepro piti asentaa ensimmäiseksi:
:~$ reprepro The program 'reprepro' is currently not installed. You can install it by typing: sudo apt install reprepro :~$ sudo apt-get install reprepro [sudo] password for matto:
Seuraavaksi luotiin repositorio:
:~/public_html$ mkdir -p repository/conf :~/public_html$ nano repository/conf/distributions
Tiedoston sisältö:
Codename: xenial Components: main Suite: xenial Architectures: i386 amd64 source
Lopuksi lisättiin tuo paketti repreproon:
:~/public_html$ reprepro -VVVV -b repository/ includedeb xenial /home/matto/Desktop/matto-perusohjelmat_0.0.2_all.deb Created directory "repository//db" /home/matto/Desktop/matto-perusohjelmat_0.0.2_all.deb: component guessed as 'main' Created directory "repository//pool" Created directory "repository//pool/main" Created directory "repository//pool/main/m" Created directory "repository//pool/main/m/matto-perusohjelmat" Adding reference to 'pool/main/m/matto-perusohjelmat/matto-perusohjelmat_0.0.2_all.deb' by 'xenial|main|i386' Adding reference to 'pool/main/m/matto-perusohjelmat/matto-perusohjelmat_0.0.2_all.deb' by 'xenial|main|amd64' Exporting indices... Created directory "repository//dists" Created directory "repository//dists/xenial" Created directory "repository//dists/xenial/main" Created directory "repository//dists/xenial/main/binary-i386" looking for changes in 'xenial|main|i386'... creating 'repository//dists/xenial/main/binary-i386/Packages' (uncompressed,gzipped) Created directory "repository//dists/xenial/main/binary-amd64" looking for changes in 'xenial|main|amd64'... creating 'repository//dists/xenial/main/binary-amd64/Packages' (uncompressed,gzipped) Created directory "repository//dists/xenial/main/source" looking for changes in 'xenial|main|source'... creating 'repository//dists/xenial/main/source/Sources' (gzipped)
Allekirjoitus vaatikin jo vähän tutkimista. Hyvä ohje löytyi sivulta http://blog.jonliv.es/blog/2011/04/26/creating-your-own-signed-apt-repository-and-debian-packages/. Teinkin ohjeen mukaiset toimenpiteet:
$ sudo apt-get install gnubg [sudo] password for matto: ... $ sudo apt-get install dpkg-sig ... $ gpg --gen-key gpg (GnuPG) 1.4.20; Copyright (C) 2015 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Please select what kind of key you want: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (sign only) (4) RSA (sign only) Your selection? 4 RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) Requested keysize is 2048 bits Please specify how long the key should be valid. 0 = key does not expire= key expires in n days w = key expires in n weeks m = key expires in n months y = key expires in n years Key is valid for? (0) Key does not expire at all Is this correct? (y/N) y You need a user ID to identify your key; the software constructs the user ID from the Real Name, Comment and Email Address in this form: "Heinrich Heine (Der Dichter) " Real name: Matti Jäppinen Email address: packages@matto.guru Comment: You are using the `utf-8' character set. You selected this USER-ID: "Matti Jäppinen " Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O You need a Passphrase to protect your secret key. We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy. Not enough random bytes available. Please do some other work to give the OS a chance to collect more entropy! (Need 206 more bytes) .+++++ .....+++++ gpg: key D3044602 marked as ultimately trusted public and secret key created and signed. gpg: checking the trustdb gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model gpg: depth: 0 valid: 2 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 2u gpg: next trustdb check due at 2018-09-18 pub 2048R/D3044602 2016-09-18 Key fingerprint = 59E9 B699 5E96 F1F0 BE95 E379 3176 A5DB D304 4602 uid Matti Jäppinen Note that this key cannot be used for encryption. You may want to use the command "--edit-key" to generate a subkey for this purpose. :~$ gpg --list-keys /home/matto/.gnupg/pubring.gpg ------------------------------ pub 2048R/D3044602 2016-09-18 uid Matti Jäppinen $ gpg --armor --export packages@matto.guru --output packages@matto.guru.gpg.key > packages.key
Seuraavaksi tehtiin uusi allekirjoitettu versio jaettavasta paketista. .cfg tiedoston ainoa muutos, oli uusi 0.0.3 versio:
$ cd /home/matto/Desktop/ :~/Desktop$ nano matto-perusohjelmat.cfg :~/Desktop$ equivs-build matto-perusohjelmat.cfg dh_testdir dh_testroot dh_prep dh_testdir dh_testroot dh_install dh_installdocs dh_installchangelogs dh_compress dh_fixperms dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dpkg-deb: building package 'matto-perusohjelmat' in '../matto-perusohjelmat_0.0.3_all.deb'. The package has been created. Attention, the package has been created in the current directory, not in ".." as indicated by the message above!
Ja lopuksi paketti lisättiin repositoryyn ja allekirjoitettiin
$ cd /home/matto/public_html/repository/ :~/public_html/repository$ reprepro --ask-passphrase -Vb . includedeb xenial /home/matto/Desktop/matto-perusohjelmat_0.0.3_all.deb /home/matto/Desktop/matto-perusohjelmat_0.0.3_all.deb: component guessed as 'main' Exporting indices... Successfully created './dists/xenial/Release.gpg.new' Successfully created './dists/xenial/InRelease.new' Deleting files no longer referenced... deleting and forgetting pool/main/m/matto-perusohjelmat/matto-perusohjelmat_0.0.2_all.deb
Ja vielä lisättiin tuo avain jakoon palvelimelle
$ cd /home/matto/ :$ ls Desktop Documents Downloads host Music packages.key Pictures Public public_html Templates Videos workspace :$ cp packages.key public_html/
Testasin toimiiko paketti toisella työasemalla (samassa lähiverkossa). Koska palvelimen ip-osoite oli kiinteä, onnistui paketin asentaminen toiselle koneelle helposti.
Lisätään palvelin luotetuksi
:$ wget -O - http://192.168.1.21/~matto/packages.key | sudo apt-key add -
Lisätään palvelin noudettavien palvelinten listalle
:$ sudoedit /etc/apt/sources.list.d/repository.list
Sources list sisältö:
deb http://192.168.1.21/~matto/repository xenial main
Päivitetään saatavilla olevien sovellusten listaus
:$ sudo apt-get update
Virheitä ei tullut, joten paketin saa nyt asennettua normaalilla sudo apt-get install
-komennolla.
Oman skriptin paketointi asennusvalmiiksi oli jo opitun perusteella melko yksinkertaista.
Varmistin ensin, ettei ajattelemani nimistä sovellusta vielä ole olemassa
:$ mat-aet mat-aet: command not found
Koska tuota ei ollut (ei edes ehdotettu asennettavaksi mitään), voin tehdä tuon sovelluksen mat-aet nimellä.
Tämän jälkeen tein skriptin. Skripti hakee apachen error-login 10 viimeistä rivi
:$nano mat-aet
Tiedoston sisältö
#!/bin/bash tail /var/log/apache2/error.log
Skripti piti vielä muuttaa oikeille oikeuksille
:$chmod a+x mat-aet
Tämän jälkeen tein konfiguraatiotiedoston sovellusta varten
:$equivs-control mat-aet.cfg
Jonka sisällöksi tuli
Section: misc Priority: optional Homepage: http://matto.guru Standards-Version: 3.9.2 Package: mat-aet Version: 0.0.1 Maintainer: Matti JäppinenDepends: apache2 Files: mat-aet /usr/bin/ Description: Apachen error login viimeiset rivit nopeasti ja helposti ajaa komennon tail /var/log/apache2/error.log
Paketin sai luotua komennolla
:$ equivs-build mat-aet.cfg
Lintian tarkistus varoitti puuttuvasta man-sivusta
:$ lintian mat-aet_0.0.1_all.deb W: mat-aet: binary-without-manpage usr/bin/mat-aet
Mutta tuohon ei tarvinnut tässä yhteydessä kiinnittää sen enempää huomiota.
Lopuksi tehtiin vain paketin vieminen jakelutyökaluun
:$ cd /home/matto/public_html/repository/ :$ reprepro --ask-passphrase -Vb . includedeb xenial /home/matto/Desktop/mat-aet_0.0.1_all.deb /home/matto/Desktop/mat-aet_0.0.1_all.deb: component guessed as 'main' Created directory "./pool/main/m/mat-aet" Exporting indices... Successfully created './dists/xenial/Release.gpg.new' Successfully created './dists/xenial/InRelease.new'
Asennustestauskin onnistui hyvin
:$ sudo apt-get update Get:1 http://192.168.1.21/~matto/repository xenial InRelease [2 706 B] Hit:2 http://fi.archive.ubuntu.com/ubuntu xenial InRelease Hit:3 http://fi.archive.ubuntu.com/ubuntu xenial-updates InRelease Hit:4 http://fi.archive.ubuntu.com/ubuntu xenial-backports InRelease Hit:5 http://security.ubuntu.com/ubuntu xenial-security InRelease Fetched 2 706 B in 0s (5 653 B/s) Reading package lists... Done :$ sudo apt-get install mat-aet Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: mat-aet 0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded. Need to get 2 192 B of archives. After this operation, 11,3 kB of additional disk space will be used. Get:1 http://192.168.1.21/~matto/repository xenial/main amd64 mat-aet all 0.0.1 [2 192 B] Fetched 2 192 B in 0s (45,4 kB/s) Selecting previously unselected package mat-aet. (Reading database ... 198507 files and directories currently installed.) Preparing to unpack .../archives/mat-aet_0.0.1_all.deb ... Unpacking mat-aet (0.0.1) ... Setting up mat-aet (0.0.1) ...
Lopuksi vielä ajoin komennon, varmistaakseni sen toiminnan
:$ mat-aet [Sun Sep 18 10:50:33.313475 2016] [mpm_event:notice] [pid 7842:tid 140699201685376] AH00489: Apache/2.4.18 (Ubuntu) configured -- resuming normal operations [Sun Sep 18 10:50:33.313559 2016] [core:notice] [pid 7842:tid 140699201685376] AH00094: Command line: '/usr/sbin/apache2' [Sun Sep 18 11:11:17.810012 2016] [mpm_event:notice] [pid 7842:tid 140699201685376] AH00491: caught SIGTERM, shutting down [Sun Sep 18 11:11:18.889482 2016] [mpm_event:notice] [pid 8153:tid 140567151024000] AH00489: Apache/2.4.18 (Ubuntu) configured -- resuming normal operations [Sun Sep 18 11:11:18.889556 2016] [core:notice] [pid 8153:tid 140567151024000] AH00094: Command line: '/usr/sbin/apache2' [Sun Sep 18 11:12:17.451241 2016] [authz_core:error] [pid 8157:tid 140567042082560] [client 127.0.0.1:53422] AH01630: client denied by server configuration: /home/matto/public_html [Sun Sep 18 19:12:00.943750 2016] [mpm_event:notice] [pid 8153:tid 140567151024000] AH00491: caught SIGTERM, shutting down [Sun Sep 18 19:35:04.874057 2016] [mpm_event:notice] [pid 1243:tid 140019667822464] AH00489: Apache/2.4.18 (Ubuntu) configured -- resuming normal operations [Sun Sep 18 19:35:04.875292 2016] [core:notice] [pid 1243:tid 140019667822464] AH00094: Command line: '/usr/sbin/apache2'
13 total views, no views today
]]>h3. Ratkaise HoneyNet Scan of the Month 15. http://old.honeynet.org/scans/scan15/
Käsittele oikeita haittaohjelmia sisältävää kuvaa huolella, äläkä vie sitä tärkeille tuotantokoneille. Ratkaisut tehtävän selviävät levykuvasta, mitään ulkopuolisia järjestelmiä ei saa häiritä.
Raportoi, kuinka ratkaiset tehtävän.
Vastaa tehtävänannon kysymyksiin:
– “Show step by step how you identify and recover the deleted rootkit from the / partition.”
– What files make up the deleted rootkit?
Lisätehtävinä voit halutessasi vastata:
– “Bonus Question: Was the rootkit ever actually installed on the system? How do you know?”
– Mitä tekijään viittaavia tietoja levykuvasta löytyy?
– Selitä vaiheittain, miten rootkit toimii.
Vinkkejä:
– Tervapallon voi purkaa ‘tar xf foo.tar.gz’
– Levykuvien analysointi http://terokarvinen.com/2013/forensic-file-recovery-with-linux
Jotta tehtävää pystyi alkaa ratkaisemaan, piti ensimmäiseksi ladata tuo mainittu levykuva. Se onnistui komennolla:
$wget http://old.honeynet.org/scans/scan15/honeynet.tar.gz
Tästä vastauksena tuli:
2016-09-11 11:01:21 (3,13 MB/s) - ‘honeynet.tar.gz’ saved [13491266/13491266]
Ensimmäiseksi tarkistin, ettei tiedostoa ole muokattu jälkeenpäin vertaamalla sivustolla olevaa MD5 arvoa (MD5=0dff8fb9fe022ea80d8f1a4e4ae33e21) tiedoston MD5-arvoon:
$ md5sum honeynet.tar.gz 0dff8fb9fe022ea80d8f1a4e4ae33e21 honeynet.tar.gz
Koska arvot täsmäsivät, purin tar-paketin:
$ tar xf honeynet.tar.gz
ja vertasin vielä sivustolla ollutta md5 arvoa (MD5=5a8ebf5725b15e563c825be85f2f852e) purettuun levykuvaan:
$ cd honeynet/ $ ls honeypot.hda8.dd README $ md5sum honeypot.hda8.dd 5a8ebf5725b15e563c825be85f2f852e honeypot.hda8.dd
Koska nämä täsmäsivät, pystyin jatkamaan seuraavaan vaiheeseen.
Opettajan tunnilla antaman vinkin mukaan, levykuvalla olleet poistetut tiedostot saa palautettua komennolla tsk_recover. Komento ei kuitenkaan sellaisenaan toiminut, joten pääsin taas asennuspuuhiin.
The program 'tsk_recover' is currently not installed. You can install it by typing: sudo apt install sleuthkit $sudo apt-get install sleuthkit
Tämä vaati myös lisäpaketteja, jotka tarvittiin, joten hyväksyin myös ne:
The following additional packages will be installed:
libafflib0v5 libbfio1 libewf2 libtsk13
Suggested packages:
autopsy mac-robber
The following NEW packages will be installed:
libafflib0v5 libbfio1 libewf2 libtsk13 sleuthkit
0 upgraded, 5 newly installed, 0 to remove and 26 not upgraded.
Need to get 1 542 kB of archives.
After this operation, 5 010 kB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Asennuksen valmistuttua tein kansion poistetuille tiedostoille ja palautin tiedostot sinne.
$mkdir deleted $ tsk_recover honeypot.hda8.dd deleted Files Recovered: 37
Kansiossa olevan tiedostolistauksen avulla voimme aloittaa selvityksen
$cd deleted $ls etc lk.tgz $OrphanFiles
Sisällöstä voimme päätellä, että haittaohjelma on ollut lk.tgz paketin sisällön mukainen. Sisältö paketilla on laajempi:
$ tar -tvf lk.tgz drwxr-xr-x 1031/users 0 2001-02-26 22:40 last/ -rwxr-xr-x 1031/users 611931 2002-02-08 15:08 last/ssh -rw-r--r-- 1031/users 1 2001-02-26 17:29 last/pidfile -rwx------ 1031/users 3713 2001-03-03 05:08 last/install -rwx------ 1031/users 7165 2001-02-26 17:22 last/linsniffer -rwxr-xr-x 1031/users 1345 1999-09-09 18:57 last/cleaner -rw-r--r-- 1031/users 3278 2001-01-27 17:11 last/inetd.conf -rwxr-xr-x 1031/users 79 2001-02-26 17:28 last/lsattr -rw-r--r-- 1031/users 11407 2001-01-27 17:11 last/services -rwxr-xr-x 1031/users 4060 2001-02-26 17:22 last/sense -rw-r--r-- 1031/users 880 2000-10-22 22:29 last/ssh_config -rw------- 1031/users 540 2000-10-22 22:29 last/ssh_host_key -rw-r--r-- 1031/users 344 2000-10-22 22:29 last/ssh_host_key.pub -rw------- 1031/users 512 2000-10-22 22:29 last/ssh_random_seed -rw-r--r-- 1031/users 688 2001-02-26 17:29 last/sshd_config -rwx------ 1031/users 8268 2001-02-26 17:22 last/sl2 -rwxr-xr-x 1031/users 4620 2001-02-26 17:23 last/last.cgi -rwxr-xr-x 1031/users 33280 2001-02-26 17:23 last/ps -rwxr-xr-x 1031/users 35300 2001-02-26 17:23 last/netstat -rwxr-xr-x 1031/users 19840 2001-02-26 17:23 last/ifconfig -rwxr-xr-x 1031/users 53588 2001-02-26 17:23 last/top -rwx------ 1031/users 75 2001-02-26 17:24 last/logclear -rw-r--r-- root/root 708 2001-03-03 05:05 last/s -rwxr-xr-x 1031/users 632066 2001-02-26 16:46 last/mkxfs
Tämän perusteella toteamme, että rootkit on ollut koneella ja sen sisältö on ko. paketin mukainen.
Pikaisen loogisen päättelyn avulla voimme todeta, että:
Seuraavaksi otetaan suurempi otos poistetuista tiedostoista. Tämä onnistuu komennolla:
$ mkdir deleted2 $ tsk_recover -a honeypot.hda8.dd deleted2 Files Recovered: 1614
Ensimmäisenä tulee mieleen root-käyttäjän antamat komennot. Linux tallentaa annetut komennot tekstitiedostoon, jotta terminaalissa toimiva ylöspäin nuoli toimisi palauttamaan edellisen komennon. Teoriassa siis tuo .bash_profile tiedosto sisältää kaikki käyttäjän antamat komennot. Tässä tapauksessa hyökkääjä on luultavasti poistanut tuon tiedoston, joten sen pitäisi löytyä poistettujen tiedostojen joukosta:
$ cat root/.bash_history exec tcsh ls mkdir /var/... ls cd /var/... ftp ftp.home.ro tar -zxvf emech-2.8.tar.gz cd emech-2.8 ./configure y make make make install mv sample.set mech.set pico mech.set ./mech cd /etc pico ftpaccess ls exit
Tiedoston sisällön perusteella on käytetty emech ohjelmistoa, joka on ladattu osoitteesta ftp.rome.ro ja sitä on myös määritelty, joskin määrittelyjen sisältö jää arvoitukseksi.
deleted2 kansiosta löytyy myös /dev/ida/.drag-on kansio, josta löytyy samoja tiedostoja kuin tuosta lk.tgz paketista.
$ find . -name "linsniffer" ./dev/ida/.. /linsniffer ./dev/ida/.drag-on/linsniffer
– “Show step by step how you identify and recover the deleted rootkit from the / partition.”
==> Vastaus edellä
– What files make up the deleted rootkit?
==> Tiedostot, jotka löytyvät tuosta lk.tgz paketista
Lisätehtävinä voit halutessasi vastata:
– “Bonus Question: Was the rootkit ever actually installed on the system? How do you know?”
==> Kyllä, /dev/ida/.drag-on -kansion perusteella
– Mitä tekijään viittaavia tietoja levykuvasta löytyy?
==> FTP-osoite
– Selitä vaiheittain, miten rootkit toimii.
8 total views, no views today
]]>http://terokarvinen.com/2016/aikataulu-linux-palvelimena-ict4tn003-22-ja-23-alkusyksy-2016
– Kerää kuormitustietoja munin -ohjelmalla
– Kuormita konetta stress:llä
– Käytä tunnilla käytyjä työkaluja arvioidaksesi kuormitusta: cpu, mem, io…
– Lopuksi analysoi munin keräämiä käyriä
– Aiheuta valitsemaasi lokiin muutamia rivejä ja analysoi niistä 2-3 riviä perusteellisesti
– Valvo Nagioksella ja aiheuta hälytys
– Kokeile jotain yli ajan tilatietoja tallentavaa ohjelmaa (muuta kuin munin)
– Kirjoita oma ohjelma, joka näyttää tilatietoja Linuxissa (esim vapaa muisti, prosessorien lukumäärä…). Tehtävää helpottavat /proc/ ja /sys/, joten riittänee, kun osaat lukea tekstitiedostoja.
Ensimmäiseksi piti koneelle asentaa munin http://munin-monitoring.org/. Asennus onnistui normaalilla Sudo apt-get install
komennolla. Tämä vaati, kuten aina, sekä salasanan, että pakettien asennushyväksynnän Y-valinnalla. Ohjelma ei kuitenkaan ollut terminaalissa suoritettava, vaan se asentui html-sivuiksi apache web-palvelimen kylkeen. Pikainen ohjeiden luku munin-kotisivuilta kertoi tarkemmin kuinka tuo ympäristö toimii. Kaikki logien kerääminen tapahtuu ns. pluginien avulla. Peruspaketissa oli mukana tarvittavat pluginit itse järjestelmän seurantaa silmällä pitäen. Pikainen testaus graafien toimivuudesta onnistui menemällä osoitteeseen localhost/munin. Eteen tuli kuitenkin ongelma: graafien zoomaaminen ei onnistunut, zoomattu kuva puuttui jostain syystä palvelimelta. Stackoverflow:sta (http://stackoverflow.com/questions/23352233/munin-dynazoom-not-working-on-ubuntu) löytyi kuitenkin apu ongelmaan. Komento sudo a2enmod cgi; sudo service apache2 restart
korjasi ongelman.
Koneen kuormittaminen onnistui annettujen ohjeiden perusteella stress-ohjelmalla. Pikainen testaus näytti, ettei tuotakaan ohjelmaa ollut valmiiksi asennettuna, joten aloitin stress-harjoituksen asentamalla stress-sovelluksen komennolla: sudo apt-get install stress
. Tämän jälkeen antamalla komennon stress
, sain näkyviin erilaisia komentoja, joilla stressausta voi testata.
Avasin toiseen terminaaliin top-ohjelman prosessien seuraamiseksi. Toisessa terminaalissa annoin komennon stress --cpu 8 --timeout 10s
TOP näytti resurssien käytön kasvaneen hieman, muttei kuitenkaan merkittävästi. Päätinkin kokeilla rankempaa testiä ajamalla stress cpu 2400 --timeout 20s
Nyt resurssien käyttö muuttui jo huomattavasti. Running processes määrä kasvoi yhdestä 2401, %Cpu(s) nousi 99,7 ja load averagekin kasvoi huomattavasti.
Ensimmäinen havainto oli, kun iotop sovellusta yritti käynnistää, ettei sitä ollut asennettuna. Ensin siis asensin sovelluksen komennolla sudo apt-get install iotop
. Tämä vaati, kuten aina, sekä salasanan, että pakettien asennushyväksynnän Y-valinnalla.
Sovelluksen käynnistäminen ei onnistunutkaan komennolla iotop, kuten alunperin ajattelin:
matto@thumbcrown:~/Desktop$ iotop -ao Netlink error: Operation not permitted (1) The Linux kernel interfaces that iotop relies on now require root priviliges or the NET_ADMIN capability. This change occured because a security issue (CVE-2011-2494) was found that allows leakage of sensitive data across user boundaries. If you require the ability to run iotop as a non-root user, please configure sudo to allow you to run iotop as root. Please do not file bugs on iotop about this.
Oikea komento olikin sudo iotop -ao
ja tietenkin oman salasanan joutui tässä vaiheessa syöttämään.
stress komento stress --io 8 --timeout 20s
näkyi hetkittäisenä Total DISK WRITE ja Actual DISK Write -arvojen kasvuna. Paremman otoksen sai kuitenkin antamalla komennon stress --io 20 --timeout 20s
. Suuremmilla testiarvoilla iotop ei enää saanut dataa muutoksista, eikä stress testaus näkynyt sovellukselle lainkaan (kaikki arvot olivat 0.00B/s).
Muistin seuraaminen onnistui free -h
komennolla. Muistin seuraaminen testauksen aikana onnistui helpoiten komennolla watch -n 2 free -h
joka seurasi muistin käyttöä ja päivitti tilanteen ruudulle 2 sekunnin välein.
stress-testaus muistilla onnistui ajamalla komento stress --vm 20 --timeout 20s
Toisella ruudulla oleva watch -n 2 free -h
näytti used muistin käytön “Mem” alueella kasvavan 3,4G saakka, normaalin 170M sijasta.
http://localhost/munin/localdomain/localhost.localdomain/cpu.html
CPU:n käyttö graafissa selkein muutos oli “user”-käytön kasvaminen testaushetkillä. Toinen testauksen aikana kasvanut osuus oli selkeästi system-käyttö. Näiden käyttämä määrä saatavilla olevasta kapasiteetistä ei kuitenkaan graafin mukaan ollut lähelläkään 100% kokonaiskapasiteetista.
http://localhost/munin/localdomain/localhost.localdomain/diskstats_iops/sda.html
Levyn stress-testaus näkyi käyrällä selkeänä piikkinä sekä luku, että kirjoitus osuuden osalta. Sekä IO/sec, että Req Size (KB) arvot olivat nousseet huomattavasti tehtyjen testien aikana. Normaalikäytössä arvot olivat hyvin lähellä nollaa.
http://localhost/munin/localdomain/localhost.localdomain/memory.html
Muistin käytössä munin-graafi kertoi cache-osuuden kasvamisesta stress testin aikana. Myös committed osuus oli stress-testauksen aikana kasvanut merkittävästi. Muita poikkeamia muistin käyttökäyrässä ei näkynyt.
Lokirivin muodostaminen oli helppoa antamalla terminaalissa komento sudo apt-get update
ja jättämällä salasana syöttämättä (painoin vain enter-näppäintä). Kolmen virheellisen yrityksen jälkeen annoin komennon uudelleen ja syötin tällä kertaa myös salasanan oikein. Syntyneet logi-rivit olivat:
Sep 4 12:27:51 thumbcrown sudo: pam_unix(sudo:auth): authentication failure; logname= uid=1000 euid=0 tty=/dev/pts/8 ruser=matto rhost= user=matto Sep 4 12:27:58 thumbcrown sudo: matto : 3 incorrect password attempts ; TTY=pts/8 ; PWD=/var/log ; USER=root ; COMMAND=/usr/bin/apt-get update Sep 4 12:28:04 thumbcrown sudo: matto : TTY=pts/8 ; PWD=/var/log ; USER=root ; COMMAND=/usr/bin/apt-get update Sep 4 12:28:04 thumbcrown sudo: pam_unix(sudo:session): session opened for user root by (uid=0) Sep 4 12:28:07 thumbcrown sudo: pam_unix(sudo:session): session closed for user root
Jokainen logi-rivi alkoi samalla tavalla Sep 4
oli kuluva päivämäärä, 12:27:51
=> 12:28:07
oli kellonaika, jolloin tapahtuma kirjautui logiin, tässä tapauksessa Suomen paikallista aikaa GMT + DST = UTC +3h, thumbcrown
oli palvelimen/työaseman nimi jonka logiin merkintä tuli ja sudo
– oli komento joka ilmoituksen aiheutti.
Rivien jatko-osuudet puolestaan poikkesivat toisistaan, riippuen tapahtumasta.
Ensimmäinen rivi: pam_unix(sudo:auth): authentication failure; logname= uid=1000 euid=0 tty=/dev/pts/8 ruser=matto rhost= user=matto
, kertoi kirjautumisen epäonnistuneen. Tämä on loogista, koska ilmoitus tuli ensimmäisen kerran, kun jätin salasanan syöttämättä. uid=1000 kertoi, että virheilmoitus muodostui ensimmäiseltä ei root käyttäjältä. Samaan aikaan euid=0 kertoi, että komentoa yritettiin ajaa root käyttäjänä. tty=/dev/pts/8 kertoi logirivissä, että kirjautumista yritettiin terminaalista, jonka tunnisteena oli /pts/8. ruser ja user arvot kertoivat kirjautuneen käyttäjän käyttäjätunnuksen, joka tässä tapauksessa oli matto.
Toinen rivi: matto : 3 incorrect password attempts ; TTY=pts/8 ; PWD=/var/log ; USER=root ; COMMAND=/usr/bin/apt-get update
Kertoi meille, että käyttäjä matto on yrittänyt 3 kertaa kirjautua väärällä salasanalla. TTY kertoi terminaalin josta kirjautumista yritettiin. PWD kertoi missä kansiossa käyttäjä oli, kun kirjautumista yritettiin. USER kertoi minä käyttäjänä yritettiin kirjautua sisään ja COMMAND kertoi komentoa, jota yritettiin ajaa, mutta joka epäonnistui väärän salasanan antamisen vuoksi.
Viimeiset rivit pam_unix(sudo:session): session opened for user root by (uid=0)
ja pam_unix(sudo:session): session closed for user root
puolestaan kertoivat, että kirjautuminen onnistui ja sudo (pääkäyttäjä) yhteys muodostettiin onnistuneesti. Viimeinen logimerkintä kertoi lopuksi komentojen menneen läpi ja yhteyden sulkeutuneen.
Nagioksen asentaminen vaati normaalin sudo apt-get install nagios3
komennon lisäksi piti asennusikkunassa valita toimenpide postgresin osalta (Ilmoituksen sai pois painamalla TAB-näppäintä ja Enteriä, valitsin vaihtoehdoista No Configuration. Asennuksen valmistuttua ohjelmisto ei kuitenkaan toiminut, joten ajoin tuon sudo apt-get install nagios3
-komennon uudelleen. Nyt minulta kysyttiin nagiosadmin salasanaa kahteen kertaan, jonka jälkeen ohjelmiston toiminnan pystyi varmistamaan avaamalla internet selaimen osoitteesta localhost/nagios3. Kirjautumalla nagiosadmin ja aiemmin annetulla salasanalla päästiin perusnäkymään. Perusnäkymässä eteen tuli kaksi virheilmoitusta. Ensimmäinen liittyi käynnissä olevien prosessien määrään. Määrä oli aivan odotettava, joten minun täytyi muuttaa hälytysrajaa tiedostosta /etc/nagios3/conf.d/localhost_nagios2.conf. sudo nano /etc/nagios3/conf.d/localhost_nagios2.conf
ja sieltä riviä:
# Define a service to check the number of currently running procs
# on the local machine. Warning if > 250 processes, critical if
# > 400 processes.
define service{
use generic-service ; Name of servi$
host_name localhost
service_description Total Processes
check_command check_procs!300!400
}
Lisäksi levytilaan liittyvän hälytyksen sai korjattu muuttamalla tiedoston /etc/nagios-plugins/config/disk.cfg komennolla sudo nano /etc/nagios-plugins/config/disk.cfg
riviä:
# 'check_all_disks' command definition
define command{
command_name check_all_disks
command_line /usr/lib/nagios/plugins/check_disk -w '$ARG1$' -c '$ARG2$' -e -A --ignore-eregi-path=/sys/kernel -i '.gvfs'
}
ilman tuota viimeistä -i ‘.gvfs’-kohtaa, saamme aikaiseksi uuden virheilmoituksen (johtuu bugista). Tiedon löysin sivulta https://help.ubuntu.com/community/Nagios3.
Hälytys
Hälytyksen sai testattua esimerkiksi sammuttamalla ssh palvelimen komennolla sudo service sshd stop
hälytys tulee näkymään hetken viiveellä:
Hälytys hävisi vastaavasti pienellä viiveellä kun palvelun uudelleenkäynnisti komennolla sudo service sshd start
.
12 total views, 1 views today
]]>Ensimmäisenä tehtävänä oli Työasemat ja tietoverkot kurssin nro 25 kokeen tehtävät raportoituna. Lisäksi Live-tikku tehtiin osana kokeen tehtävän toteutusta.
Tehtävänanto
Karttakatu Oy
Me Karttakatu Oy:ssä teemme karttoihin liittyviä weppisovelluksia. Olemme muutaman hengen yritys.
Asenna työasema, jolla tavallisimmat toimistotyöt onnistuvat (weppisurffailu, tekstinkäsittely).
Työntekijämme ovat Einari Vähäkäähkä, Pekka Winha, Åke Andersson ja Leila Laila. He haluavat kehittää PHP-kotisivuja etäkäyttöyhteydellä. Asenna tarvittavat palvelut ja tee esimerkkisivut.
Asenna kaikkien käyttäjien käyttöön skripti (shell script) nimeltä “mystatus”, joka näyttää vapaan levytilan (df -h) ja koneen ip-osoitteen.
Tähtäätkö huipputulokseen? Pekka Winha haluaa käyttää MySQL tietokantaa. Asenna hänelle MySQL-tietokanta ja siihen PhpMyAdmin-weppiliittymä.
Ympäristö
Harjoituksessa käytetään Työaseman ja palvelimen kombinaationa Xubuntu versio 16.04.1 (tiedosto xubuntu-16.04.1-desktop-amd64.iso) ladattuna osoitteesta http://se.archive.ubuntu.com/mirror/cdimage.ubuntu.com/xubuntu/releases/16.04/release/ joka on lähellä Suomea oleva peilipalvelin. Latauksessa käytettiin Google Chrome selainta. Ladattava tiedosto oli kooltaan 1,27GB. Koneena käytettiin Macbook Air (13-inch, Mid 2011) työasemaa, jossa on 1,8GHz Intel Core i7 prosessori, 4GB 1333 MHz DDR3 muistia ja Flash kiintolevy. Asennusmedia ladataan ja luodaan OS X El Capitano käyttöjärjestelmässä. Asennusmediana käytetään Kingston Data Traveler G4 8GB muistitikkua.
Asennusmedian luonti
Asennuspaketin lataus käynnistettiin Elokuun 25. päivänä klo 22:34 ja se valmistui klo 22:46.
Asennusmediasta piti tehdä versio, joka toimii Mac-tietokoneissa, joten normaali Windows asennusmedia ei tullut kyseeseen. Apuna asennuksessa käytin ohjetta joka löytyi täältä https://help.ubuntu.com/community/How%20to%20install%20Ubuntu%20on%20MacBook%20using%20USB%20Stick. Asennus tapahtui vaiheissa:
CD Downloads
hdiutil convert xubuntu-16.04.1-desktop-amd64.iso -format UDRW -o xubuntu.img
joka muutti ladatun iso tiedoston OS X:n ymmärtämään img-formaattiin, tämän sai varmistettua ajamalla komennon ls -la
mv xubuntu.img.dmg xubuntu.img
diskutil list
/dev/disk2 (external, physical): #: TYPE NAME SIZE IDENTIFIER 0: KINGSTON *7.8 GB disk2
Saadun vastauksen perusteella osoite on /dev/disk2
diskutil unmountDisk /dev/disk2
, johon tuli vastaukseksi
Unmount of all volumes on disk2 was successful
sudo dd if=xubuntu.img of=/dev/disk2 bs=1m
. Komennon lisäksi jouduin syöttämään salasanani kopioinnin käynnistämiseksi. Kopioinnista saatu vastaus:
$ sudo dd if=xubuntu.img of=/dev/disk2 bs=1m Password: 1206+1 records in 1206+1 records out 1265106944 bytes transferred in 658.265200 secs (1921880 bytes/sec)
Lisäksi kopioinnin valmistuttua tuli ilmoitus “The disk you inserted was not readable by this computer.” Valitsin vaihtoehdon Eject
vaihtoehdoista Initialize…, Ignore ja Eject.
Linuxin käynnistäminen ja asennus
Install Xubuntu 16.04.1 LTS
English
ja Continue
Password:
kenttään syötin langattoman verkkoni salasanan jonka jälkeen valitsin Connect painiketta (Salasanan oikeinkirjoituksen olisi pystynyt varmistamaan laittamalla ruksin Show password
-laatikkoonConnect
-nappula muuttui Continue
-nappulaksi, jota painamalla pääsin etenemäänPreparing to Install Ubuntu
valikosta laitoin ruksit ruutuihin Download updates while installing Xubuntu
ja Install third-party software for graphics and Wi-Fi hardware, Flash, MP3 and other media
ennen kuin valitsin Continue
Erase disk and install xubuntu
. En valinnut mitään muita valintoja ennen kuin painoin Install Now
Continue
Where are you?
-valintaikkunassa oli valmiiksi teksti Helsinki, joten riitti kun painoin Continue
Keyboard layout
-valintaikkunassa valintana oli Finnish
, vaihdoin kuitenkin käyttöön Finnish - Finnish (Macintosh)
vaihtoehdon, koska koneena oli Macbook. Tämän jälkeen valitsin Continue
Who are you?
-valintaikkunassa kirjoitin:
Your name: Matti Your computer's name: thumbcrown pick a username: matto Password: Confirm your password:
viimeiset kaksi kenttää eivät olleet tyhjiä, vaan niihin kirjoitin monimutkaisen salasanan. Lisävalintoja en muuttanut, joten ainoa valittu ruutu oli Require my password to login
. Lopuksi valitsin Continue
Installation has finished.
). Valitsin vaihtoehdoista Restart Now
Please remove the installation medium, then press ENTER:
, joten poistin USB-tikun koneesta ja painoin Enter-näppäintä.Log In
-painikettaOhjelmat
Tehtävän mukaisesti työasemalla täytyy pystyä selaamaan internettiä ja käyttämään tekstikäsittely-ohjelmaa.
yle.fi
toimi, joten tämä varmisti internet selailun onnistuvan.LibreOffice Writer
nimisen ohjelman, varmistaakseni tekstinkäsittelyn onnistuvan.Kehitystyö
Seuraavaksi oli vuorossa tehtävän osa: Työntekijämme ovat Einari Vähäkäähkä, Pekka Winha, Åke Andersson ja Leila Laila. He haluavat kehittää PHP-kotisivuja etäkäyttöyhteydellä. Asenna tarvittavat palvelut ja tee esimerkkisivut.
Jotta käyttäjät saavat etäyhteyden koneeseen, täytyy siihen asentaa ssh-palvelinohjelmisto:
Open Terminal Here
sudo apt-get install ssh
ja painoin entersudo
osuus edellytti, että kirjoitan salasanani, joten kirjoitin salasanani. Tässä vielä kuva tapahtuneesta:
matto@thumbcrown:~/Desktop$ sudo apt-get install ssh [sudo] password for matto: Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: ncurses-term openssh-client openssh-server openssh-sftp-server ssh-import-id Suggested packages: ssh-askpass libpam-ssh keychain monkeysphere rssh molly-guard The following NEW packages will be installed: ncurses-term openssh-server openssh-sftp-server ssh ssh-import-id The following packages will be upgraded: openssh-client 1 upgraded, 5 newly installed, 0 to remove and 76 not upgraded. Need to get 643 kB/1 230 kB of archives. After this operation, 5 244 kB of additional disk space will be used. Do you want to continue? [Y/n]
Tästä valitsin Y ja painoin ENTER, jolloin tapahtui seuraavaa:
Get:1 http://fi.archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-sftp-server amd64 1:7.2p2-4ubuntu2.1 [38,8 kB] Get:2 http://fi.archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-server amd64 1:7.2p2-4ubuntu2.1 [338 kB] Get:3 http://fi.archive.ubuntu.com/ubuntu xenial-updates/main amd64 ssh all 1:7.2p2-4ubuntu2.1 [7 070 B] Get:4 http://fi.archive.ubuntu.com/ubuntu xenial/main amd64 ncurses-term all 6.0+20160213-1ubuntu1 [249 kB] Get:5 http://fi.archive.ubuntu.com/ubuntu xenial/main amd64 ssh-import-id all 5.5-0ubuntu1 [10,2 kB] Fetched 643 kB in 0s (1 161 kB/s) Preconfiguring packages ... (Reading database ... 188043 files and directories currently installed.) Preparing to unpack .../openssh-client_1%3a7.2p2-4ubuntu2.1_amd64.deb ... Unpacking openssh-client (1:7.2p2-4ubuntu2.1) over (1:7.2p2-4ubuntu1) ... Selecting previously unselected package openssh-sftp-server. Preparing to unpack .../openssh-sftp-server_1%3a7.2p2-4ubuntu2.1_amd64.deb ... Unpacking openssh-sftp-server (1:7.2p2-4ubuntu2.1) ... Selecting previously unselected package openssh-server. Preparing to unpack .../openssh-server_1%3a7.2p2-4ubuntu2.1_amd64.deb ... Unpacking openssh-server (1:7.2p2-4ubuntu2.1) ... Selecting previously unselected package ssh. Preparing to unpack .../ssh_1%3a7.2p2-4ubuntu2.1_all.deb ... Unpacking ssh (1:7.2p2-4ubuntu2.1) ... Selecting previously unselected package ncurses-term. Preparing to unpack .../ncurses-term_6.0+20160213-1ubuntu1_all.deb ... Unpacking ncurses-term (6.0+20160213-1ubuntu1) ... Selecting previously unselected package ssh-import-id. Preparing to unpack .../ssh-import-id_5.5-0ubuntu1_all.deb ... Unpacking ssh-import-id (5.5-0ubuntu1) ... Processing triggers for man-db (2.7.5-1) ... Processing triggers for systemd (229-4ubuntu7) ... Processing triggers for ureadahead (0.100.0-19) ... ureadahead will be reprofiled on next reboot Processing triggers for ufw (0.35-0ubuntu2) ... Setting up openssh-client (1:7.2p2-4ubuntu2.1) ... Setting up openssh-sftp-server (1:7.2p2-4ubuntu2.1) ... Setting up openssh-server (1:7.2p2-4ubuntu2.1) ... Creating SSH2 RSA key; this may take some time ... 2048 SHA256:JvULrCXjbmN4454Wv+14lyWh0qoMptXtac1ceNWEGvQ root@thumbcrown (RSA) Creating SSH2 DSA key; this may take some time ... 1024 SHA256:fkkPVG0FI6FHJR5HNO+jQNdFDI0OvXXyzljHJWNSxL4 root@thumbcrown (DSA) Creating SSH2 ECDSA key; this may take some time ... 256 SHA256:QTOVxb2Ji0+ylaB4SEIhPsuccb6rJONv+iRrmhf088E root@thumbcrown (ECDSA) Creating SSH2 ED25519 key; this may take some time ... 256 SHA256:VIe1KkgbgkqGOcd149Mwv5Aydvbg9WtswVsesC42CDk root@thumbcrown (ED25519) Setting up ssh (1:7.2p2-4ubuntu2.1) ... Setting up ncurses-term (6.0+20160213-1ubuntu1) ... Setting up ssh-import-id (5.5-0ubuntu1) ... Processing triggers for systemd (229-4ubuntu7) ... Processing triggers for ureadahead (0.100.0-19) ... Processing triggers for ufw (0.35-0ubuntu2) ...
ip addr
matto@thumbcrown:~/Desktop$ ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 60:c5:47:00:ac:1c brd ff:ff:ff:ff:ff:ff inet 192.168.1.163/24 brd 192.168.1.255 scope global dynamic wlp2s0 valid_lft 2404sec preferred_lft 2404sec inet6 2001:14ba:4e3:8300::46/128 scope global dynamic valid_lft 56sec preferred_lft 26sec inet6 2001:14ba:4e3:8300:7cb3:edba:83b8:90ad/64 scope global temporary dynamic valid_lft 17979sec preferred_lft 11229sec inet6 2001:14ba:4e3:8300:7284:2698:3184:4097/64 scope global mngtmpaddr noprefixroute dynamic valid_lft 17979sec preferred_lft 11229sec inet6 fe80::5f50:5207:d37f:8c9c/64 scope link valid_lft forever preferred_lft forever
ssh 192.168.1.163
. Fingerprint kyselyyn vastasin yes ja salasanakyselyyn kirjoitin oman salasanani. Yhteys onnistui:
matto@thumbcrown:~/Desktop$ ssh 192.168.1.163 The authenticity of host '192.168.1.163 (192.168.1.163)' can't be established. ECDSA key fingerprint is SHA256:QTOVxb2Ji0+ylaB4SEIhPsuccb6rJONv+iRrmhf088E. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.1.163' (ECDSA) to the list of known hosts. matto@192.168.1.163's password: Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-34-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage 77 packages can be updated. 31 updates are security updates. The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law.
sudo apt-get update
sudo apt-get upgrade
ja lisäksi kun kysyttiin, haluatko päivittää, vastasin Y.sudo apt-get install lamp-server^
. Kysymykseen, haluatko asentaa vastasin Y (Kyllä). Asennuksen aikana esiin tuli ikkuna, joka kysyi MySQL palvelimelle annettavaa salasanaa. Tähän kirjoitin todella monimutkaisen salasanan ja seuraavaan ikkunaan jossa salasana pyydettiin toistamaan, kirjoitin saman salasanan uudelleen.localhost
. Sivu kertoi, että asennus oli onnistunut ja internet sivut toimivat koneella.sudo a2enmod userdir
ja tämän jälkeen käynnistää apache palvelin uudelleen komennolla service apache2 restart
, näistä jälkimmäinen edellytti myös salasanan kirjoittamista avautuneeseen ikkunaan.public_html
-kansioon. Koska kansiota ei vielä ollut, loin sen ensin komennolla mkdir public_html
matto@thumbcrown:~/Desktop$ cd .. matto@thumbcrown:~$ mkdir public_html
matto@thumbcrown:~$ cd public_html/ matto@thumbcrown:~/public_html$ nano index.html
<html> <head> <title>Matto</title> </head> <body> <p>Hello World!</p> </body> </html>
Tallennus CTRL-O
ja lopetus CTRL-X
http://localhost/~matto/
/etc/apache2/mods-enabled/php7.0.conf
lisäämällä #-merkki kaikkien viimeisen kappaleen rivien eteen.
# Running PHP scripts in user directories is disabled by default
#
# To re-enable PHP in user directories comment the following lines
# (from to .) Do NOT set it to On as it
# prevents .htaccess files from disabling it.
#<IfModule mod_userdir.c>
# <Directory /home/*/public_html>
# php_admin_flag engine Off
# </Directory>
#</IfModule>
sudo service apache2 restart
matto@thumbcrown:/etc/apache2/mods-enabled$ cd /home/matto/public_html/ matto@thumbcrown:~/public_html$ nano test.php
Tiedoston sisältö:
<?php print "Hello World!"; ?>
Testaus onnistui taas avaamalla internet-selain ja menemällä osoitteeseen localhost/~matto/test.php
matto@thumbcrown:~/public_html$ adduser einari adduser: Only root may add a user or group to the system. matto@thumbcrown:~/public_html$ sudo adduser einari Adding user `einari' ... Adding new group `einari' (1001) ... Adding new user `einari' (1001) with group `einari' ... Creating home directory `/home/einari' ... Copying files from `/etc/skel' ... Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully Changing the user information for einari Enter the new value, or press ENTER for the default Full Name []: Einari Vähäkäähkä Room Number []: 1 Work Phone []: Home Phone []: Other []: chfn: name with non-ASCII characters: 'Einari Vähäkäähkä' Is the information correct? [Y/n] Y matto@thumbcrown:~/public_html$ sudo adduser pekka Adding user `pekka' ... Adding new group `pekka' (1002) ... Adding new user `pekka' (1002) with group `pekka' ... Creating home directory `/home/pekka' ... Copying files from `/etc/skel' ... Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully Changing the user information for pekka Enter the new value, or press ENTER for the default Full Name []: Pekka Winha Room Number []: 2 Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] Y matto@thumbcrown:~/public_html$ sudo adduser ake Adding user `ake' ... Adding new group `ake' (1003) ... Adding new user `ake' (1003) with group `ake' ... Creating home directory `/home/ake' ... Copying files from `/etc/skel' ... Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully Changing the user information for ake Enter the new value, or press ENTER for the default Full Name []: Åke Andersson Room Number []: 3 Work Phone []: Home Phone []: Other []: chfn: name with non-ASCII characters: 'Åke Andersson' Is the information correct? [Y/n] Y matto@thumbcrown:~/public_html$ sudo adduser leila Adding user `leila' ... Adding new group `leila' (1004) ... Adding new user `leila' (1004) with group `leila' ... Creating home directory `/home/leila' ... Copying files from `/etc/skel' ... Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully Changing the user information for leila Enter the new value, or press ENTER for the default Full Name []: Leila Laila Room Number []: 4 Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] Y matto@thumbcrown:~/public_html$
matto@thumbcrown:~/public_html$ ssh einari@localhost The authenticity of host 'localhost (127.0.0.1)' can't be established. ECDSA key fingerprint is SHA256:QTOVxb2Ji0+ylaB4SEIhPsuccb6rJONv+iRrmhf088E. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts. einari@localhost's password: Permission denied, please try again. einari@localhost's password: Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-34-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage 2 packages can be updated. 0 updates are security updates. *** System restart required *** The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. einari@thumbcrown:~$ ssh pekka@localhost The authenticity of host 'localhost (127.0.0.1)' can't be established. ECDSA key fingerprint is SHA256:QTOVxb2Ji0+ylaB4SEIhPsuccb6rJONv+iRrmhf088E. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts. pekka@localhost's password: Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-34-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage 2 packages can be updated. 0 updates are security updates. *** System restart required *** The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. pekka@thumbcrown:~$ ssh ake@localhost The authenticity of host 'localhost (127.0.0.1)' can't be established. ECDSA key fingerprint is SHA256:QTOVxb2Ji0+ylaB4SEIhPsuccb6rJONv+iRrmhf088E. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts. ake@localhost's password: Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-34-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage 2 packages can be updated. 0 updates are security updates. *** System restart required *** The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. ake@thumbcrown:~$ ssh leila@localhost The authenticity of host 'localhost (127.0.0.1)' can't be established. ECDSA key fingerprint is SHA256:QTOVxb2Ji0+ylaB4SEIhPsuccb6rJONv+iRrmhf088E. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts. leila@localhost's password: Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-34-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage 2 packages can be updated. 0 updates are security updates. *** System restart required *** The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. leila@thumbcrown:~$ exit logout Connection to localhost closed. ake@thumbcrown:~$ exit logout Connection to localhost closed. pekka@thumbcrown:~$ exit logout Connection to localhost closed. einari@thumbcrown:~$ exit logout Connection to localhost closed. matto@thumbcrown:~/public_html$
Skripti
Asenna kaikkien käyttäjien käyttöön skripti (shell script) nimeltä “mystatus”, joka näyttää vapaan levytilan (df -h) ja koneen ip-osoitteen.
/etc/profile.d/
tiedosto jossa skripti sijaitseematto@thumbcrown:~/Desktop$ cd /etc/profile.d/ matto@thumbcrown:/etc/profile.d$ sudo nano 00-aliases.sh
Koska taas ajettiin sudo-komento, täytyi antaa salasana.
function mystatus() { df -h; ip -f inet addr show wlp2s0 | grep -Po 'inet \K[\d.]+' }
Ja tallennus CTRL-O
ja lopetus CTRL-X
matto@thumbcrown:/etc/profile.d$ ssh localhost matto@localhost's password: Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-34-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage 2 packages can be updated. 0 updates are security updates. Last login: Sat Aug 27 12:14:43 2016 from 192.168.1.163 matto@thumbcrown:~$ mystatus Filesystem Size Used Avail Use% Mounted on udev 1,9G 0 1,9G 0% /dev tmpfs 387M 6,3M 381M 2% /run /dev/sda2 226G 4,4G 210G 3% / tmpfs 1,9G 164K 1,9G 1% /dev/shm tmpfs 5,0M 4,0K 5,0M 1% /run/lock tmpfs 1,9G 0 1,9G 0% /sys/fs/cgroup /dev/sda1 511M 3,6M 508M 1% /boot/efi tmpfs 387M 40K 387M 1% /run/user/1000 192.168.1.163 matto@thumbcrown:~$
Mysql-tehtävä
Pekka Winha haluaa käyttää MySQL tietokantaa. Asenna hänelle MySQL-tietokanta ja siihen PhpMyAdmin-weppiliittymä.
matto@thumbcrown:~$ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 5.7.13-0ubuntu0.16.04.2 (Ubuntu) Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> CREATE DATABASE PEKKA; Query OK, 1 row affected (0,00 sec) mysql>
mysql> CREATE USER 'pekka'@'localhost' IDENTIFIED BY 'nda+2.%9q9y^_!%ZJ+2P'; Query OK, 0 rows affected (0,01 sec) mysql> GRANT ALL PRIVILEGES ON PEKKA.* TO 'pekka'@'localhost'; Query OK, 0 rows affected (0,00 sec)
quit
-komennolla ja kirjoittamalla terminaaliin sudo apt-get install phpmyadmin
. Sudo-komennon vuoksi jouduttiin taas kirjoittamaan salasana ja asennus kysyi mitä http-palvelinta käytetään: valinnoista valisin Apache2. Asennus kysyi myös tietokantakonfiguraatiota ja kysymykseen Configure database for phpmyadmin with dbconfig-common
vastasin kyllä (Yes). Seuraavaksi asennus kysyi vielä salasanaa tietokannalle, joka syötettiin kahteen kertaan. sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
, sudo a2enconf phpmyadmin
ja apachen uudelleenkäynnistämisellä service apache2 reload
localhost/phpmyadmin
Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html
23 total views, no views today
]]>23 total views, no views today
]]>