Vanhan laboratorioharjoituksen teko

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

Tehtävän verkko osuuden lopputulos

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out /  Muuta )

Google photo

Olet kommentoimassa Google -tilin nimissä. Log Out /  Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out /  Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out /  Muuta )

Muodostetaan yhteyttä palveluun %s