SSH // MONITORING NETWORK TRAFFIC BETWEEN VIRTUALBOXES USING WIRESHARK // ASSIGNMENT II

Time to play around with SSH, again!

Assignment II:

Specs of the workstation here: specs

A:
– Install Wireshark
– Create the needed keys to establish secure and automated connection
– Use Wireshark to monitor network traffic
– Create an SSH connection and perform some simple commands via SSH
– Terminate the connection, analyze the network traffic on Wireshark

B:
- Install Munin

 

Step 1.

Installing Wireshark is done with the following command:
sudo apt-get install wireshark

Running Wireshark for the first time needs to be done using sudo -rights. Otherwise tracking won’t work. Here’s a picture of a fully set up Wireshark, displaying TCP -connections only.

wireshark

Step 1.1

Creating keys for SSH is ez. Done like this:
ssh-keygen

After the command, give the desired location for the keys when prompted.
After giving the location, the program will ask for a pass phrase, this will be needed later when establishing the automated connection.

Step 1.2

Copying the public keys between the client and the server will be done as follows:
ssh-copy-id USER@IP

If you are performing this between two virtual machines, remember to set the connection as “bridged”. Otherwise the virtual machines will receive the same IP, resulting in this method not working.

After copying the key, try to login to the desired workstation, using SSH. The program will ask you to repeat the password/pass phrase once more, and after this the login will be automated.

Here I am connecting to my Ubuntu Server virtual machine from my Linux Mint virtual machine, after copying the keys.

automatisoitulogin
Step 1.3

After setting up Wireshark, and performing the steps above, the steps are seen on Wireshark like this:
wiresharkconnections
We can see that the steps we made previously are seen as  “Encrypted requests – and responses” and steps prior to that “new keys” etc are not encrypted.

 

Step 2: Munin

The installation of Munin here is done by following the steps provided by Ubuntu.

At this point I was unable to access my workstation, I believe the external hard drive I’m using is some what broken. So I will attempt the installation on my laptop.
Specs of the laptop used here: laptopspecs.

Before installing Munin, Apache -web server needs to be installed and set up. Before attempting this, be sure to do so.

As Mint uses same package repository as Ubuntu, the commands provided by Ubuntu will work here as well.

Installing Munin can be done with a few commands:
installing server01 – sudo apt-get install munin
installing server02 – sudo apt-get install munin-node

On server01, we will have to do a few modifications in order to make the program work properly.  Go to /etc/munin/using cd – command and make the following modifications:

We will need to modify the .conf file, in order to do so, use this command:
sudo nano munin.conf

 

## This here will be our normal host
## Add this text into the file 
[localhost]
       address localhost

Replace the address and [localhost] into your server’s address. If you only want to do this locally, you can use localhost.

Next we will modify munin-node.conf -file the same way.

## add this into the munin-node-conf -file
## replace localhost with your own IP
allow ^localhost$

In order for these changes to apply, we need to restart the munin server.
sudo /etc/init.d/munin-node restart

 

  • Copying and modifying this and all the other documents in this blog is allowed according to the GNU General Public License (versio 2 or newer). http://www.gnu.org/licenses/gpl.html

DXDIAG EQUIVALENT ON LINUX // HOW TO EASILY CREATE A DOCUMENT OF YOUR WORKSTATION’S SPECS

DirectX Diagnostic Tool (dxdiag) is quite handy on Windows for checking your specs.
We have similar tools on the command prompt on Linux.
The command is as follows:

         sudo lshw -html > specs.html

This command will create a HTML-file with your workstation’s specs listed in it.
The file will be created in to the folder you’re currently located in. So if you want this in your doc file, remember to first relocate there.

The HTML-file looks a little something like this:

linuxboys

The full file is here: specs

 This is a very handy tool when you need to quickly check your gear or when you need to post the workstation’s stats into an assignment/research w/e. 

BACK2SCHOOL BACK2LINUX // RUNNING UBUNTU SERVER ON A VIRTUAL BOX ON UBUNTU // ASSINGMENT 1

I’ve had a quite a break on this blog and Linux-stuff in general. Here’s the first assignment of the “Linux as a Server” -course I’m taking this semester. Also decided on posting in English this time.

The workstation’s specs here.
sudo lshw -html > specs.html

Today’s assignment was the following;
-Run Ubuntu Server on Virtualbox. Install Apache so that a website can be created in the default folder.
-Change the current folders owner and group and also user rights following the steps provided
-Create users Tupu, Hupu, Lupu and Aku.
-Create a user group called “kehittajat” and include Tupu, Hupu and Lupu in it
-Grant Aku sudo rights
-Grant Tupu access into www-data -group

Step 1.

I installed Ubuntu 14.04.1 LTS in to the current workstation, and ran a few necessary commands;
sudo apt-get update
sudo apt-get upgrade

After this I installed Virtualbox
Selection_005
After installation it will boot up simply by this command
Selection_006

 

Step 2.

Next step is to install Ubuntu Server on Virtualbox.
I downloaded Ubuntu Server from here.

I created a new virtual machine using all default setting, except I did boost the memory up to 1.5gb. Otherwise every setting is as it was. Here you can see the overview of the virtual machine:
ubuntu

I installed Ubuntu Server using default settings as well. Since I’m only doing this locally, there was no need to setup proxies or any fancy stuff like that.

Selection_008

The completed installation looks like this:

server

 

Step 3 –  managing group setting / adding users

Next step is to change the directory’s owner and group as well as the user rights. It is done with these commands:
(you need to be located in /var/www)

sudo usermod -a -G www-data juho
sudo chgrp -R www-data /var/www
sudo chmod -R g+w /var/www

Creating the needed users:
users

Creating the user group:

createnewgroup

Granting the users rights into the new group:

kehittajat

Step 4 – Granting rights to users

Granting Tupu the rights into www-data

tupuwww

Giving Aku sudopowes:

akunoikeudet

 

Step 4 – Setting up Apache

Installing Apache web server is done with the following command:
       sudo apt-get install apache2

html

koodi

 – Assignment completed. Users are now assigned to their groups and granted the rights they  should have. The web server is also set up

Problems occurred: 

No significant problems occurred during the assignment, the assignment itself was relatively simple.

However, playing around with Virtualbox, me and many of my colleagues noticed a problem with running Ubuntu LTS 14.04.1 with Virtualbox. The problem was, that the screen size/resolution didn’t scale properly with the Virtualbox client. Easy fixes to this can be found online, but I decided to solve this in a different way: using a different distribution.

Linux Mint 17 runs perfectly with Virtualbox, and offers everything that Ubuntu has to offer as well. Mint uses the same repository for as Ubuntu – aptitude as well, so  there are no problems in this regard.

 

 

 

Kotitehtävä VII: “Hei maailma”

Tehtävänanto:

Käännä “hei maailma” kolmella kielellä, jota ei käsitelty tunnila.

Tietokoneen kokoonpano ja työympäristö:

  • Malli: Fujitsu Lifebook AH532
  • Suoritin: Intel Core i3-2328M 2.2GHz
  • Näytönohjain: Intel HD Graphics 3000
  • Muisti: 4Gb DDR3
  • Käyttöjärjestelmä: Ubuntu 12.04 LTS 64-bit

Java:

Javaa varten minulla on jo asennettuna koneelle Eclipse-kehitysympäristö.

javasanoomoi

Javalla “Hei maailman” teko onnistuu helposti.
Eclipse antaa (valittaessa) määrittäjät public static void main(String[] args) itsestään, ja itse koodi on vain rivin pituinen.

System.out.println() tulostaa annetun tekstin.

Tässä vielä hieman edistyneempi Java-ohjelma, jonka olen joskus vääntänyt. Ohjelma laskee neliön pinta-alan.

javallasama

Ruby

Rubyllä “Hei maailman” tekeminen onnistuu näin:

rubymoi
Tämän jälkeen, kun avaa tiedoston Rubyllä, eli ruby “tiestostonnimi”
Printtaa Ruby kyseisen tekstin.

C/C++

Eclipse näköjään tukee myös C:tä ja C++:saa. Asentelin Eclipseen tarvittavat paketit komennoll :

sudo apt-get install eclipse-cdt
sudo apt-get install g++

Sitten vain kirjoiteltiin koodi IDE:en.
c++moi

 

Kotitehtävä VI: SSH

Tehtävänanto:

Asenna SSH-palvelin
– Luo uusi käyttäjä ja kirjaudu sillä
– Automatisoi kirjautuminen julkisella avaimella
– Tee ainakin yksi seuraavista a,b…
a) kopioi tiedostoja rsync:lla (rsync -vazh foo/ tero@example.com :)
b) kopioi tiedostoja scp:lla
c) tee turvallinen tunneli (ssh -L, www-cache.haaga-helia.fi:8000)
d) kokeile ssh-asiakasta jossain toisessa käyttöjärjestelmässä

Tietokoneen kokoonpano ja työympäristö:

  • Malli: Fujitsu Lifebook AH532
  • Suoritin: Intel Core i3-2328M 2.2GHz
  • Näytönohjain: Intel HD Graphics 3000
  • Muisti: 4Gb DDR3
  • Käyttöjärjestelmä: Ubuntu 12.04 LTS 64-bit

Asennus:

SSH-palvelimen asennus Linuxille onnistuu erittäin helposti komentokehotteen kautta komennoilla:

sudo apt-get install openssh-server

sudo apt-get install openssh-client

Ubuntussa asentamalla pelkän openssh-serverin, osaa apt hakea siihen myös muut tarvittavat paketit, kunten openssh-clientin.

Uuden käyttäjän luonti Ubuntulle

Uuden käyttäjän luonti onnistuu komentokehotteesta seuraavasti:

sudo adduser test_user

Tämän jälkeen, komentokehote pyytää antamaan käyttäjälle salasanan.

Tämän jälkeen, komentokehote pyytää antamaan käyttäjän nimen ja muuta infoa.
Uusi käyttäjä on luotu, kun kysymyksiin on vastattu.

Luotuani uuden käyttäjän nimeltä test_user, kokeilin kirjautua käyttäjälle, varmistaakseni onnistuiko uuden käyttäjän luominen varmasti.  Tein tämän SSH:n kautta, käyttämällä komentoa:

ssh test_user@localhost
// localhostin sijaan voi myös käyttää ip-osoitetta. Se selviää komentokehotteesta komennolla “ifconfig”

test_user_test

Sain yhteyden käyttäjään, ja nyt pystyn komentokehotteen kautta käyttämään tietokonetta test_userina.

Kirjautumisen automatisointi

Salasanan kirjoittaminen on niin vaivalloista, että täytynee automatisoida tämä prosessi jotenkin.

Yritin tehdä automatisointia helposti komennoilla:
ssh-keygen
ssh-copy-id juho@localhost

Sekä myös samat test_userilla.

Tämä ei kuitenkaan tuottanut tulosta, vaan yrittäessäni logata käyttäjälle, kysyttiin silti salasanaa.

Googlettelun jälkeen löysin ratkaisun ongelmaan. copy-id -komento ei ollutkaan kopioinut avaimia.

Lähdin selvittämään tätä manuaalisesti. /home/juho/.ssh –> authorized_keys

Komennon ssh-keygen jälkeen etsin kansioista “authorized_keys” tiedoston “id_rsa.pub”
ja kopion sen secure copy-komennolla test_userille samaan paikkaan:

       scp id_rsa.pub test_user@localhost:.ssh/authorized_keys

Tämä jälkeen kokeilin ottaa yhteyttä ssh:lla test_useriin. Komentokehote kysyi vieläkin salasanaa. Hetken googlailun jälkeen löysin ratkaisun: Relog.

Reloggasin ja kaikki toimi niin kuin pitikin. Eli, kirjauduin käyttäjältä ulos, jonka jälkeen kirjauduin uudelleen sisään.

Bonustehtävät:

b) Kopioi tiedostoja scp:llä.

Tämä tulikin jo ylhäällä tehtyä.
scp, eli secure copy, onnistuu helposti komennolla “scp”

komennon “scp” jälkeen annetaan kopioitavan tiedoston nimi:
—> scp “esimtiedosto”
Tämän jälkeen annetaan polku käyttäjään ja kansioon, jonen tiedosto halutaan:
—> scp “esimtiedosto” ssh test_user@localhost:.ssh/authorized_keys

Tämä kopioi tiedoston käyttäjältä toiselle.

(Lisää tehtäviä tulolla (a,c.. jne))

Kotitehtävä V: SQL

Tehtävänanto:

  • Asenna tietokantapalvelin ja kokeile SQL:ää komentokehotteesta. Luo uusi mysql-käyttäjä. Tee taulu, syötä siihen tietoa ja hae sitä. Voit halutessasi aloittaa tyhjästä liverompula.

Tietokoneen kokoonpano ja työympäristö:

  • Malli: Fujitsu Lifebook AH532
  • Suoritin: Intel Core i3-2328M 2.2GHz
  • Näytönohjain: Intel HD Graphics 3000
  • Muisti: 4Gb DDR3
  • Käyttöjärjestelmä: Ubuntu 12.04 LTS 64-bit

Tietokantapalvelimen asennus:

MySQL-tietokantapalvelimen asennus on erittäin helppoa. Se onnistuu komennolla:

“sudo apt-get install mysql-server

Asennusprosessin aikana, asennusohjelma pyysi minun antavan MySQL:lle root-salasanan, eli pääkäyttäjän salasanan.

Käyttäjän luonti:

Ensiksi avasin itse MySQL:n. Tein tämä MySQL:n pääkäyttäjän oikeuksin komennolla:

mysql -u root -p

Tämän jälkeen, MySQL pyysi pääkäyttäjän salasanaa, jonka annoin.

mysql
Ja tältä se sitten näytti.

Komennolla: SHOW DATABASES;  – MySQL luettelee kaikki jo järjestelmässä olevat tietokannat.
Tietokannan valinna jälkeen ohjelma ilmoittaa “Database changed.”

Teen uuden tietokannan itselleni. Se tapahtuu seuraavasti:

Ensiksi teen itse tietokannan.  Se onnistuu komennolla CREATE DATABASE nimi;
Nimeksi annan tietokannalleni vaikka ‘testitietokanta’.

Seuraavaksi annan itselleni oikeudet tietokantaan, ettei minun aina tarvitse käyttää sitä pääkäyttäjänä. Se tapahtuu komennolla:

GRANT ALL PRIVILEGES ON testitietokanta.* TO juho@localhost IDENTIFIED BY ‘salasana';

Nyt voin kirjautua itsenäni sisään käyttämällä komentokehotteessa komentoa:

mysql -u juho -p testitietokanta;

Nyt kun kirjoitan SHOW DATABASES; – tulisi minun nähdä oma tietokantani.

testitietokanta
Ja siellähän se on!

Taulun tekeminen ja tiedon tallentaminen

Nyt voimme tehdä tietokantaan taulun!

Tein taulun tietokantaan, johon voidaan tallentaa asiakkaan nimi ja puhelinnumero komennolla:

USE testitietokanta;
CREATE TABLE test( nimi VARCHAR(50) , puh VARCHAR(10))

Ohjelma vastaa: Query OK, 0 rows affected (0.57 sec)

Tallensin tauluun ‘testi’ tietoa komennolla:

INSERT INTO test VALUES(‘JASKA’ , ‘1234567890’);

Nyt kun haluan etsiä tietoa tietokannastani ‘test’ teen sen komennolla:

SELECT * FROM test;
tai jos haluan etsiä pelkästään nimeä ‘Jaska’
SELECT ‘Jaska’ FROM test;
jne.

 

Kotitehtävä: PHP

Tehtävänanto:

  • a) Tee käyttäjän kotisivulle PHP:lla “Hei maailma” (esim. lukujen yhteenlasku). Asenna tarvittavat sovellukset. Aloita tyhjästä liverompulla.
  • b) Tee yksinkertainen PHP-ohjelma, joka laskee jotain käyttäjän syötteiden perusteella. Esim. suorakaiteen ala korkeudesta ja leveydestä, painoindeksi (BMI) pituudesta ja painosta tai syntymäaika syntymävuodesta. Vinkkejä: php.net: Manual: English: Simple tutorial: Forms. Kun julkaiset PHP-lähdekoodia WordPressissa, muista valita tekstin tyyliksi CODE, jotta sisennykset ja muut merkinnät näkyvät oikein.

Olenkin jo kerran kirjoitellut tänne raporttia Apache-webpalvelimen asennuksesta, joten en sitä nyt tee. Vaan hyppään suoraan koodin kirjoittamiseen websivulle.

Uusi läppärini saapui, joten työympäristö on nyt hieman erilainen.

Tietokoneen kokoonpano ja työympäristö:

  • Malli: Fujitsu Lifebook AH532
  • Suoritin: Intel Core i3-2328M 2.2GHz
  • Näytönohjain: Intel HD Graphics 3000
  • Muisti: 4Gb DDR3
  • Käyttöjärjestelmä: Ubuntu 12.04 LTS 64-bit

Ongelma I

Apachen asennus onnistui normaalisti. Asennuksen jälkeen kokeilin toimivuutta kirjoittamalla URL-kenttään “localhost” - Apache toimi normaalisti.

Tämän jälkeen loin tarvittavat kansiot websivua varten. Poikkeuksena viime postaukseen, vaihdoin index.html nimen index.php.

Kun kirjoitin selaimen URL-kenttään “localhost/~juho/index.php alkoi selain lataamaan .php-tiedostoa, eikä näyttänytkään sitä suoraan ruudulla.

Pienen googlettamisen jälkeen tajusin, etten ollut asentanut Apacheen php-pluginia. Tein sen komennoilla:

sudo apt-get install libapache2-mod-php5filter

sudo apt-get install libapache2-mod-suphp

Apachlle restart ja tämän jälkeen kotisivu näyttäytyi normaalisti.

Hei maailma

Kotisivun asennus Ubuntulle onnistui. Seuraavaksi tein pienen “Hei maailma” tervehdyksen PHP:lla.

Tein uuden tekstitiedoston nimeltä index.php ja kirjoittelin sinne pätkän koodia nanolla.

compt

Ja tältä se näytti websivulla:

awwyeah

I have no idea what I’m doing

EDIT: “Width” pitäisi olla “Lenght”.

PHP on hirveää, tämä  ei meinaa toimaa millään.

Päätin tehdä PHP:llä/HTML:llä pienen laskimen, joka laskisi kolmion ja suorakaiteen pinta-alan, eli kertoisi kaksi lukua keskenään.

Meinasin rage quittaa monta kertaa, sillä PHP on aivan hirveän epäkäytännöllinen mielestäni.
Lopulta sain säädettyä tälläisen koodin, joka vihdoinkin teki mitä halusin:

phplaskin

Koska Java on minulle tuttu, tein ohjelman omasta mielestäni helpoimmalla tavalla, eli muuttujilla.  Heti alussa määritän muuttujat $value1, $value2 ja $result.

$value1 ja 2 ovat käyttäjän määriteltävissä, kun taas $result on muuttujien tulo.

Käyttäjä määrittää muuttujat ja ohjelma kutsuu toiminnon mult.php ja ilmoittaa muuttujan $result arvon.

Vaikein kohta tässä koodissa oli se, että tajusin nimetä ohjelman mult.php. Eli, kun ohjelma hakee tiedostoa mult.php se hakee itsensä ja siten toteuttaa tuon viimeisen komennon, eli printtaa $resultin,

Selaimessa ohjelma näyttää tältä:

selaimessa

ja ilmoittaa vastauksen näin:

done'd

EDIT: Kommentoin koodin.

Sama Javalla

Halusin testata miten saman ohjelman tekeminen onnistuu Javalla, kun PHP:lla se tuntui niin kankealta.

javallasama

Mielestäni Javalla koodista tuli selkeämpi ja ennen kaikkea helpompi kirjoittaa. Seuraavana ongelmana olisikin saada Java-koodi websivulle.

EDIT: Java lisätty.