· Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html
· Pohjana Tero Karvinen 2012: Linux kurssi, http://terokarvinen.com
Tehtävän teko aloitettu 10.03.2019 noin klo 20.00.
Tehtävän ohjeet löytyy tästä linkistä, sekä alapuolelta:
## LAMP Asenna LAMP (Linux, Apache, MySQL, PHP) ja testaa sen toiminta. ## Kuormitusta Kerää kuormitustietoja koneelta koko harjoituksen ajalta. Analysoi tiedot tiiviisti aivan harjoituksen lopuksi. ## Sorkka ja Rauta Oy:n CRM Tarvitsemme asiakastietokannan. Tee tietokanta, jossa on seuraavat asiakkaat: - Kulta ja Kaivos ky - Piilosana ry - MetalliMake Tee PHP-ohjelma, joka lukee nämä tietueet. Laita tämä sivu näkyviin osoitteessa http://sorkkacrm.example.com Voit simuloida nimipalvelun toimintaa hosts-tiedoston avulla. Tässä harjoituksessa sivulle pääsyä ei tarvitse rajoittaa salasanalla, vaan sen tule näkyä kaikkialle nettiin. ## Rosvoja porteilla Onko koneellemme yritetty murtautua? (Kyllä). Etsi omalta paikalliselta koneeltasi todisteet tapauksesta, jossa koneellesi on yritetty murtatua. Analysoi tiiviisti tähän liittyvät tiedot. ## Sorkan sivut Tee staattinen HTML5 weppisivu, jonka otsikkona (molemmat title ja h1) on "Sorkka ja Rauta Oy". Laita sivu näkyviin osoitteeseen http://rauta.example.com/ . Voit simuloida nimipalvelun toimintaa hosts-tiedoston avulla. ## Einarin esimerkki Einari Vähä-aho ryhtyy koodaamaan. Tee einarille käyttäjä 'einari'. Tee einarille esimerkkikotisivu PHP:lla ja laita se näkymään osoitteessa http://localhost/~einari/ . Esimerkkisivun pitää tulostaa "Einari" käyttäen PHP:n print-funktiota. [Ohje päivittyi harjoituksen edetessä]
Alotus
$ setxkbmap fi
$ sudo apt update
Tulimuuri & ssh
ssh asennus:
$ sudo apt install openssh-server
Jos tarvitaan ssh avaa ensin portti:
$ sudo ufw allow 22/tcp
Tulimuuri päälle:
$ sudo ufw enable
$ sudo ufw status
LAMP
Linux on valmiiksi asennettu.
Apache
$ sudo apt-get install apache2
Korvataan apachen ”testi” sivu:
$ echo ”Default”|sudo tee /var/www/html/index.html
MariaDB
$ sudo apt install mariadb-client
$ sudo apt install mariadb-server
Jos php:llä pitää saada tietoa ulos/ vietyä MariaDB:seen:
$ sudo apt-get install php-mysql
$ sudo mysql_secure_installation
Set root password? [Y/n]
New password:
Re-enter new password:
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
PHP
$ sudo apt-get install php libapache2-mod-php
Kuormitusseuranta
Kuormituksen seuraaminen jäi tekemättä tätä vanhaa laboratorioharjoitusta tehdessä, mutta olen tehnyt aikaisemmin ohjeet, miten kuormitustietoja kerätään.
Sorkka ja Rauta Oy:n CRM MariaDB osuus
Tietokanta
Kirjaudu sisään tietokantaan:
$ sudo mariadb -u root
Tee kanta:
CREATE DATABASE demo;
Käytä juuri tehtyä DB:tä:
USE demo;
Tee asiakas taulu:
CREATE TABLE asiakkaat (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(1024));
Katso taulut:
SHOW TABLES;
Lisää tauluun dataa:
INSERT INTO asiakkaat (name) VALUES (”Kulta ja Kaivos ky”);
INSERT INTO asiakkaat (name) VALUES (”Piilosana ry”);
INSERT INTO asiakkaat (name) VALUES (”MetalliMake”);
Katso taulun sisältö:
SELECT * FROM asiakkaat
Tee käyttäjä ja annan sille oikeudet DB:seen.
GRANT ALL ON demo.* to demo@localhost IDENTIFIED BY ’salasana’
Selvyyden vuoksi edellisen lauseen ensimmäinen demo = DB ja demo@localhost on käyttäjä nimeltä demo.
Kirjadu ulos root tunnuksilta:
exit
Kirjaudu sisään demo käyttäjänä:
$ mariadb -u demo -p
Käytä taulua demo:
USE demo;
Katso asiakas taulua:
SELECT * FROM asiakkaat;
Lisää uusi asiakas:
INSERT INTO asiakkaat (name) VALUES (”testi asiakas”);
Poistu MariaDB:stä:
exit
PHP ohjelma tietokannan lukuun
<!DOCTYPE HTML>
<html>
<body>
<?php
$hostname = "localhost";
$username = "demo";
$password = "salasana";
$db = "demo";
$dbconnect=mysqli_connect($hostname,$username,$password,$db);
if ($dbconnect->connect_error) {
die("Database connection failed: " . $dbconnect->connect_error);
}
?>
<table border="1" align="center">
<tr>
<td>Asiakkaat</td>
</tr>
<?php
$query = mysqli_query($dbconnect, "SELECT * FROM asiakkaat")
or die (mysqli_error($dbconnect));
while ($row = mysqli_fetch_array($query)) {
echo
"<tr>
<td>{$row['name']}</td>
</tr>\n";
}
?>
</table>
</body>
</html>
Sivun näkyviin laittaminen osoitteeseen http://sorkkacrm.example.com
Tee käyttäjän kotihakemistoon public_html kansio, jonka sisään sorkkacrm.example.com -kansio
$ sudoedit /etc/apache2/sites-available/sorkkacrm.example.com.conf
$ cat /etc/apache2/sites-available/sorkkacrm.example.com.conf
<VirtualHost *:80>
ServerName sorkkacrm.example.com
ServerAlias http://sorkkacrm.example.com
DocumentRoot /home/käyttäjä/public_html/sorkkacrm.example.com
<Directory /home/käyttäjä/public_html/sorkkacrm.example.com>
Require all granted
</Directory>
</VirtualHost>
Sivu käyntiin:
$ sudo a2ensite sorkkacrm.example.com
Mahdollisesti joudut stoppaamaan 000-default.conf tiedoston:
$ sudo a2dissite 000-default.conf
$ sudo systemctl restart apache2
Tämän lisäksi, koska sivustoa hostataan localhostissa joudutaan sivusto lisäämään myös hosts -tiedostoon:
$ sudoedit /etc/hosts
Hosts -tiedostoon lisätään seuraavaa:
127.0.1.1 sorkkacrm.example.com
PHP -testi sivun luonti:
<html>
<head>
<title>PHP test</title>
</head>
<body>
<?php print("testi");?>
</body>
</html>
Rosvoja porteilla
En tehnyt harjoitukseen tätä osaa, koska olin jo aikasemmin katsellut tunkeutumistietoja ja kaikki hostaaminen tapahtui vain sisäisesti (ei näkynyt ulos verkkoon).
Tunkeutumis yrityksien seuraamisesta löydät ohjeet tästä.
Staattinen HTML 5 sivu
Sivusto tulee näkymään http://rauta.example.com/ ,joten tehdää kansio sitä varten public_html hakemiston sisään:
$ cd /home/käyttäjä/public_html
$ mkdir rauta.example.com
Seuraavaksi nanolla juuritehtyyn kansioon html sivusto:
$ nano index.html
Ja tähän index tiedostoon sisään koodi:
<!doctype html>
<html>
<head>
<title>Sorkka ja Rauta Oy</title>
<meta charset="utf-8" />
</head>
<body>
<h1>Sorkka ja Rauta Oy</h1>
</body>
</html>
Sivun näkyviin laittaminen osoitteeseen http://rauta.example.com
Seuraavaan conffi tiedostoon lisätää VirtualHost asetukset:
$ sudoedit /etc/apache2/sites-available/rauta.example.com.conf
VirtualHost asetukset näyttää tältä:
<VirtualHost *:80>
ServerName rauta.example.com
ServerAlias http://rauta.example.com
DocumentRoot /home/käyttäjä/public_html/rauta.example.com
<Directory /home/käyttäjä/public_html/rauta.example.com>
Require all granted
</Directory>
</VirtualHost>
Sivu käyntiin:
$ sudo a2ensite rauta.example.com
Mahdollisesti joudut stoppaamaan 000-default.conf tiedoston:
$ sudo a2dissite 000-default.conf
$ sudo systemctl restart apache2
Tämän lisäksi, koska sivustoa hostataan localhostissa joudutaan sivusto lisäämään myös hosts -tiedostoon:
$ sudoedit /etc/hosts
Hosts -tiedostoon lisätään seuraavaa:
127.0.1.1 rauta.example.com
Einarin esimerkki
Käyttäjän luonti
$ sudo adduser testi
Tämä tekee kotikansiot, mutta ei anna esim sudo tai adm oikeuksia jos halutaan antaa kyseiset oikeudet:
$ sudo adduser testi sudo
$ sudo adduser testi adm
$ sudo adduser testi admin
Esimerkkisivun teko PHP:llä ja näkyviinlaitto
Avataan käyttäjille oikeudet hostata omassa kotihakemistossa verkkosivustoja:
$ sudo a2enmod userdir
$ sudo systemctl restart apache2
Tämän jälkeen pitäisi toimia osoitteessa:
http://vuorivirta.me/~käyttäjä/
Jotta php -sivujen hostaaminen onnistuu kotihakemistossa laitetaan toiminto päälle:
$ sudoedit /etc/apache2/mods-available/php7.0.conf
Kommentoi tiedoston lopusta lause.
Tehdään Einarille public_html kansio:
$ mkdir public_html
Tehdään php tiedosto:
<html>
<head>
<title>PHP Test</title>
</head>
<body>
<?php print("Einari");?>
</body>
</html>
Tehtävän teko lopetettu 10.03.2019 noin klo 24.00, mutta jouduin seuraavana päivänä etsimään php-mariadb koodista virheitä ja tekemään index.php -tiedostoon korjauksia.
