Hyödyllisiä komentoja

setxkbmap fi
sudo apt-get update
sudo apt-get install ohjelma
sudo apt-get purge ohjelma (esim sudo apt-get purge apache2)
sudo apt-cache search hakusana

users

sudo adduser nimi
sudo adduser nimi sudo
sudo adduser nimi adm
sudo adduser nimi admin
su - nimi
sudo -v
passwd
sudo passwd nimi
sudo usermod --lock root
sudo nano /etc/ssh/sshd_config
# PermitRootLogin no

ufw

sudo ufw allow 80/tcp
sudo ufw allow 22/tcp
sudo ufw delete allow 80/tcp
sudo ufw enable
sudo ufw disable
sudo ufw status verbose

lamp

sudo apt-get -y install apache2 libapache2-mod-php mariadb-client mariadb-server php-mdb2-driver-mysql 
echo hellothere | sudo tee /var/www/html/index.html
sudo a2enmod userdir
sudoedit /etc/apache2/mods-available/php7.2.conf
# kommentoi 5 viimeistä riviä
cd /home/nimi/
mkdir public_html
sudo nano /etc/apache2/sites-available/nimi.conf
<VirtualHost *:80>
ServerName testataan.com
ServerAlias www.testataan.com
DocumentRoot /home/nimi/public_html/
<Directory /home/nimi/public_html/>
Require all granted
</Directory>
</VirtualHost>
sudo a2ensite nimi.conf
sudo apache2ctl configtest
sudo systemctl restart apache2
sudo nano /etc/hosts
# lisää rivi 127.0.0.1 testataan.com
host localhost

mariadb

sudo mariadb -u root
create database foo;
grant all on foo.* to nimi@localhost identified by 'salasana';
exit
sudo mariadb -u nimi -p
show databases;
use foo,
create table tablename (id int auto_increment primary key, name varchar(1024));
show tables;
insert into tablename (name) values ("foobar");
select * tablename;

.sh

nano scriptname.sh (tai pelkkä scriptname ilman päätettä)
# ylälaitaan #!/bin/bash tai #!/usr/bin/python3 jos .py
chmod ugo+x scriptname.sh
sudo cp scriptname.sh /usr/local/bin
bash scriptname.sh
which bash

chmod

ls -ld
# users groups others (ugo)
chmod ugo+x

ssh

sudo apt-get install -y ssh
ssh nimi@localhost
hostname -I
scp filename nimi@localhost:
rsync filename nimi@localhost:
ssh-keygen
ssh-copy-id nimi@localhost
sudo apt-get install -y sshfs
cd /home/nimi
mkdir mnt
cd mnt
mkdir kansio
sshfs nimi@localhost: /home/nimi/mnt/kansio
fusermount -u /home/nimi/mnt/kansio
sshfs -o reconnect,ServerAliveInterval=5,ServerAliveCountMax=3 nimi@localhost: /home/nimi/mnt/kansio/

metapackage

sudo apt-get install -y equivs gdebi-core
equivs-control foobari.cfg
Package: foobari
Version: (defaults to 1.0)
Depends: paketti1, paketti2, paketti3 (esim. git, httpie, curl)
Description: tekstiä
equivs-build foobari.cfg
sudo gdebi -n foobari_1.0_all.deb
apt-cache show foobari
dpkg --list foobari

h6

a) Kirjoita ja suorita “Hei maailma” kolmella kielellä. Asenna tarvittavat ympäristöt.

Kokeilin ensin kirjoittaa “Hei maailman” Pythonilla. Koska Python oli jo valmiiksi asennettuna Ubuntun mukana, loin suoraan tiedoston helloWorld (nano helloWorld.py). Tiedostoon kirjoitin print(“Hello world”) ja ajoin sen komennolla python3 helloWorld.py

Seuraavaksi kokeilin shell scriptiä. Loin tiedoston helloworld.sh komennolla nano helloworld.sh ja kirjoitin sihen echo “Hello world”. Ajoin tiedoston komennolla bash helloworld.sh ja sain viestin näkymään terminaalissa.

Kolmanneksi päätin kokeilla vielä Javascriptiä. Asensin ensin Nodejs:n, jotta voisin pyörittää koodia ilman selainta (sudo apt-get install nodejs) ja tämän jälkeen loin tiedoston helloworld.js (nano helloworld.js). Kirjoitin tiedostoon console.log(“Hello world”) ja ajoin koodin komennolla node helloworld.js


b) (vapaaehtoinen) Kirjoita kullakin kielellä yksinkertainen ohjelma, jolla on jokin käyttötarkoitus. 

Ensiksi päätin kokeilla kirjoittaa Pythonilla jotain. Aloin editoimaan uutta python-tiedostoa komennolla nano weatherapp.py. Tein pythonin Requests-kirjastoa käyttävän ohjelman, joka hakee käyttäjän antaman kaupungin nimen perusteella OpenWeatherMapin API:sta säädataa.

Testasin ohjelmaa ajamalla sen komennolla python3 weatherapp.py ja kaikki näytti toimivan hyvin.

Seuraavaksi päätin kokeilla tehdä shell scriptin, joka hoitaisi mahdollisimman kivuttomasti SSL-sertifikaatin hankkimisen palvelimelle. Aloitin luomalla uuden .sh-tiedoston komennolla nano certbotconf.sh ja lisäsin siihen ensin yläreunaan shebangin #!/bin/bash ja tämän jälkeen komennot, joita tarvittiin certbotin asentamiseen ja konfigurointiin. Annoin myös harjoituksen vuoksi kaikille käyttäjille oikeudet skriptin ajamiseen ajamalla komennot chmod ugo+x certbotconf.sh ja sudo cp certbotconf.sh /usr/local/bin

Kokeilin ajaa skriptin aiemmin luomallani VPS:llä, jossa pyöri jo valmiiksi Apache, mutta ei sertifikaattia. Ajoin skriptin läpi komennolla bash certboconf.sh ja kaikki näytti toimivan hyvin, kunnes oli aika kokeilla sivustoani selaimessa. Jostain syystä en pystynyt enää yhdistämään sivulle ja sertifikaatin testaus ei myöskään mennyt läpi. Aikani ihmeteltyä tajusin, etten ollut ollenkaan muuttanut palomuurin asetuksia, joten lisäsin skriptiin komennot myös tätä varten.

Ajoin skriptin uudestaan ja tällä kertaa kaikki toimi hyvin. Selaimessa testatessani pääsin yhdistämään sivulle ja osoitepalkin vasemmassa laidassa näkyi nyt onnistuneesti lukko. Testasin sivun myös uudestaan SSL Server Testillä ja kaikki näytti hyvältä.

Lähteet:

Karvinen, Tero 2019. Suullinen tiedonanto.

Karvinen, Tero 2018. Hello World Python3, Bash, C, C++, Go, Lua, Ruby, Java – Programming Languages on Ubuntu 18.04. Luettavissa: http://terokarvinen.com/2018/hello-python3-bash-c-c-go-lua-ruby-java-programming-languages-on-ubuntu-18-04

Shellscript.sh. Understanding Shell Script Variables. Luettavissa: https://www.shellscript.sh/variables1.html

Heidi, Erika & Juell, Kathleen 2018. How To Secure Apache with Let’s Encrypt on Ubuntu 18.04. Luettavissa: https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-18-04

h5

a) Asenna SSH-demoni

Asensin SSH-demonin komennolla sudo apt-get install ssh, jonka jälkeen loin testikäyttäjän kaveri testatakseni sen toimintaa (sudo adduser kaveri).

Otin yhteyden testikäyttäjään komennolla ssh kaveri@localhost. Koska kyseessä oli ensimmäinen kerta kun yhdistin osoitteeseen localhost, kysyttiin luotanko osoitteeseen. Vastasin tähän “yes”, jonka jälkeen annoin käyttäjän salasanan ja SSH-yhteys oli onnistuneesti luotu.

b) Suojaa kone tulimuurilla, mutta tee ensin reikä SSH:lle

Tein reiän SSH:lle komennolla sudo ufw allow 22/tcp, mikä salli portin 22, jota SSH oletusarvoisesti käyttää. Tämän jälkeen käynnistin tulimuurin komennolla sudo ufw enable. Testasin vielä tilan komennolla sudo ufw status, mikä näytti, että kaikki paitsi portti 22 oli nyt suljettu.

c) Siirrä tiedostoja ssh:lla

Loin aluksi tätä varten kotihakemistooni komennolla nano random.txt random-nimisen tekstitiedoston. Seuraavaksi kokeilin tiedoston siirtämistä scp:n avulla luomalleni käyttäjälle kaveri. Komento tähän oli scp random.txt kaveri@localhost: . Minulta pyydettiin käyttäjän kaveri salasanaa ja sen annettuani navigoin tämän kotihakemistoon ja tiedosto näkyi siellä onnistuneesti.

d) Automatisoi kirjatuminen julkisen avaimen menetelmällä

Tätä varten loin uuden avainparin itselleni komennolla ssh-keygen ja tallensin sen tarjottuun oletussijaintiin (/home/xubuntu/ .ssh/id_rsa). Tämän jälkeen pyydettiin vielä antamaan passphrase, jonka jälkeen avainpari oli luotu. Kokeilin kopioida avaimen käyttäjälle kaveri komennolla ssh-copy-id kaveri@localhost. Tämän tehtyä testasin vielä ottamalla SSH-yhteyden kaveriin komennolla ssh kaveri@localhost ja pääsin onnistuneesti sisään ilman, että salasanaa kysyttiin erikseen.

j) Asenna ja konfiguroi ja käynnistä sysstat-paketti. Tarkista sar-komennolla, että se on päällä, esim. näyttää lokimerkinnän “Linux reboot…”. Anna sysstatin pyöriä päivä tai pari. Tutki kuormitushistoriaa sysstatin komennoilla sar, iostat, pidstat… Analysoi tulokset, eli selitä perusteellisesti mitä tulokset tarkoittavat.

Tämän vaiheen tein aiemmin luomallani virtuaalipalvelimellani. Asensin aluksi sysstatin komennolla sudo apt-get install sysstat, jonka jälkeen muokkasin sen konfigurointitiedostoa komennolla sudoedit /etc/default/sysstat. Vaihdoin kohtaan “ENABLED” arvoksi “true” ja tallensin muutokse. Käynnistin vielä sysstatin uudelleen komennolla sudo service sysstat restart ja tämän jälkeen jätin sen rauhassa pyörimään.

Palasin seuraavana päivänä takaisin katsomaan tuloksia ja aloitin komennolla sar. Sysstat oli kerännyt dataa 10 minuutin välein. Sar eli System Activity Reporter mittaa prosessorin käyttöä ja prosessori oli päässyt varsin vähällä. Se oli ollut yli 99% ajasta levossa ja eri toimintoihin oli kulunut vain alle prosentti käytetystä ajasta.

Seuraavaksi kokeilin komentoa iostat. Komento näytti sar:n lailla CPU:n käyttöastetta ja tulokset peilasivat aiemman komennon näyttämiä havaintoja. Tämän lisäksi näkyi myös “device utilization report”, jossa seurattiin laitteen saamia i/o-pyyntöjä. Tps eli transfers per second mittasi pyyntöjen määrää ja niitä oli tullut keskimäärin vain reilu 2 per sekunti, joten prosessorilla oli ollut helppoa tähän mennessä. Laitteelta oli myös luettu dataa keskimäärin alle yksi kilotavu sekunnissa ja kirjoitettu reilu 16 kilotavua sekunnissa, mikä on varsin vähän. Totaali luku- ja kirjoitusmäärä oli yli gigatavun ja laitteelle oli kirjoitettu yli 27 gigatavua, mikä oli varsin mielenkiintoista. Voisin kuvitella tämän johtuvan siitä, että kyseessä on vuokrattu VPS, mutta en osaa sen paremmin sanoa mistä tämä suuri luku johtui.

Näiden kahden komennon jälkeen kokeilin vielä komentoa pidstat, jolla voidaan seurata käynnissä olevia prosesseja. Näkymästä löytyivät prosessit ja niiden id:t (PID) sekä kuinka paljon ne rasittivat prosessoria. Kuten jo aiemmilla sar ja iostat -komennoilla oli näkynyt, oli prosessorin käyttöaste erittäin alhainen ja tässä näyttivät lähinnä MySQL-tietokanta ja accounts-demoni käyttävän yhtään prosessorin tehoja.

Lähteet:

Karvinen, Tero 2019. Suullinen tiedonanto.

Borda, Leonardo 2012. How to configure sysstat/sar on Ubuntu/Debian. Luettavissa: http://www.leonardoborda.com/blog/how-to-configure-sysstatsar-on-ubuntudebian/

/ROOT.IN~ 2012. Examples of using SAR command for system monitoring in Linux. Luettavissa: https://www.slashroot.in/examples-using-sar-command-system-monitoring-linux

Computer Hope 2018. Linux iostat command. Luettavissa: https://www.computerhope.com/unix/iostat.htm

LinOxide 2014. pidstat – Monitor and Find Statistics for Linux Procesess. Luettavissa: https://linoxide.com/linux-command/linux-pidstat-monitor-statistics-procesess/

h4

a) Laita hankkimallesi virtuaalipalvelimelle mahdollisuus tehdä kotisivuja normaalin käyttäjän oikeuksin.

Tehtävää aloittaessa minulla oli jo valmis tunnilla luotu VPS pyörimässä digitalocean.com:ssa, johon asennettuna Apache Web Server. Apachen asentamisesta voi lukea täältä.

Aluksi oli tärkeää laittaa päälle Apachen userdir-moduuli, mikä mahdollisti käyttäjien kotihakemistojen käytön. Tämä tapahtui komennolla sudo a2enmod userdir, jonka jälkeen Apache käynnistettiin uudestaan komennolla sudo systemctl restart apache2

Seuraavaksi loin testikäyttäjän user komennolla sudo adduser user ja vaihdoin tähän käyttäjään komennolla su – user. Testasin myös ettei käyttäjällä user ole sudo oikeuksia ajamalla komennon sudo -v. Sain takaisin viestin “Sorry, user user may not run sudo on linux-palvelimet.”, joten kyseessä oli nyt normaalikäyttäjä.

Tämän jälkeen loin käyttäjän kotihakemistoon public_html-kansion ja sinne index.html-sivun. Testasin sivua selaimessa osoitteessa laurihellsten.com/~user/ ja tehty sivu näkyi onnistuneesti.

s) Laita hankkimallesi virtuaalipalvelimelle käyttäjän kotihakemistoon tallennettu sivu näkymään Apachen oletussivuna.

Tämän vaiheen olin tehnyt jo tunnilla, joten käyn prosessin läpi lokaalisti kotikoneella tekemäni testikäyttäjän kautta

Aluksi vaihdoin sudo-oikeudet omaavaan käyttäjään ja loin käyttäjälleni uuden VirtualHostin komennolla sudoedit /etc/apache2/sites-available/user.conf ja lisäsin tähän tyhjään conf-tiedostoon tiedot:

<VirtualHost *:80>
ServerName testataan.com
ServerAlias www.testataan.com
DocumentRoot /home/user/public_html/
<Directory /home/user/public_html/>
Require all granted
</Directory>
</VirtualHost>

Tämän jälkeen lisäsin tehdyn VirtualHostin sites-enablediin komennolla sudo a2ensite user.conf

Tarkistin vielä, että tiedoston sisältö oli oikein komennolla sudo apache2ctl configtest, jonka jälkeen käynnistin Apachen uudestaan komennolla sudo systemctl restart apache2

Testatakseni domain-nimeä lokaalisti lisäsin yllä olevien vaiheiden lisäksi komennolla sudoedit /etc/hosts hosts-tiedostoon rivin 127.0.0.1 testataan.com, jolla selain tunnisti localhostiksi myös osoitteen testataan.com. Sain onnistuneesti näkyviin user-käyttäjän kotihakemistoon luodun kotisivun.

y) Etsi palvelimesi lokeista esimerkkejä murtautumisyrityksistä. Voit etsiä lisätietoa IP-osoitteista ottamatta niihin yhteyttä esimerkiksi komennoilla ipcalc, geoiplookup ja whois.

Aloitin asentamalla ohjelman whois komennolla sudo apt-get install -y whois

Seuraavaksi siirryin katsomaan auth.log-tiedostoa sijainnissa /var/log/auth.log komennolla tail -F auth.log. Lokissa olikin jo elämää heti suoraan, joten kokeilin tutkia vierailijoita whois-ohjelman avulla

Feb 10 17:29:31 linux-palvelimet sshd[5725]: Invalid user testing from 206.189.204.75 port 54918
Feb 10 17:29:31 linux-palvelimet sshd[5725]: pam_unix(sshd:auth): check pass; user unknown
Feb 10 17:29:31 linux-palvelimet sshd[5725]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=206.189.204.75
Feb 10 17:29:33 linux-palvelimet sshd[5725]: Failed password for invalid user testing from 206.189.204.75 port 54918 ssh2
Feb 10 17:29:33 linux-palvelimet sshd[5725]: Received disconnect from 206.189.204.75 port 54918:11: Bye Bye [preauth]
Feb 10 17:29:33 linux-palvelimet sshd[5725]: Disconnected from invalid user testing 206.189.204.75 port 54918 [preauth]
Feb 10 17:29:33 linux-palvelimet sshd[5723]: Failed password for root from 61.184.247.3 port 60176 ssh2
lauri@linux-palvelimet:/var/log$ whois 206.189.204.75
#
ARIN WHOIS data and services are subject to the Terms of Use
available at: https://www.arin.net/whois_tou.html
#
If you see inaccuracies in the results, please report at
https://www.arin.net/resources/whois_reporting/index.html
#
Copyright 1997-2019, American Registry for Internet Numbers, Ltd.
#
NetRange: 206.189.0.0 - 206.189.255.255
CIDR: 206.189.0.0/16
NetName: DIGITALOCEAN-30
NetHandle: NET-206-189-0-0-1
Parent: NET206 (NET-206-0-0-0-0)
NetType: Direct Allocation
OriginAS:
Organization: DigitalOcean, LLC (DO-13)
RegDate: 1995-11-15
Updated: 2018-03-26
Ref: https://rdap.arin.net/registry/ip/206.189.0.0
OrgName: DigitalOcean, LLC
OrgId: DO-13
Address: 101 Ave of the Americas
Address: 10th Floor
City: New York
StateProv: NY
PostalCode: 10013
Country: US
RegDate: 2012-05-14
Updated: 2019-02-04
Comment: http://www.digitalocean.com
Comment: Simple Cloud Hosting
Ref: https://rdap.arin.net/registry/entity/DO-13
OrgNOCHandle: NOC32014-ARIN
OrgNOCName: Network Operations Center
OrgNOCPhone: +1-347-875-6044
OrgNOCEmail: noc@digitalocean.com
OrgNOCRef: https://rdap.arin.net/registry/entity/NOC32014-ARIN
OrgAbuseHandle: ABUSE5232-ARIN
OrgAbuseName: Abuse, DigitalOcean
OrgAbusePhone: +1-347-875-6044
OrgAbuseEmail: abuse@digitalocean.com
OrgAbuseRef: https://rdap.arin.net/registry/entity/ABUSE5232-ARIN
OrgTechHandle: NOC32014-ARIN
OrgTechName: Network Operations Center
OrgTechPhone: +1-347-875-6044
OrgTechEmail: noc@digitalocean.com
OrgTechRef: https://rdap.arin.net/registry/entity/NOC32014-ARIN
#
ARIN WHOIS data and services are subject to the Terms of Use
available at: https://www.arin.net/whois_tou.html
#
If you see inaccuracies in the results, please report at
https://www.arin.net/resources/whois_reporting/index.html
#
Copyright 1997-2019, American Registry for Internet Numbers, Ltd.
lauri@linux-palvelimet:/var/log$ whois 61.184.247.3
% [whois.apnic.net]
% Whois data copyright terms http://www.apnic.net/db/dbcopyright.html
% Information related to '61.183.0.0 - 61.184.255.255'
% Abuse contact for '61.183.0.0 - 61.184.255.255' is 'anti-spam@ns.chinanet.cn.net'
inetnum: 61.183.0.0 - 61.184.255.255
netname: CHINANET-HB
descr: CHINANET Hubei province network
descr: Data Communication Division
descr: China Telecom
country: CN
admin-c: CH93-AP
tech-c: CHA1-AP
mnt-by: MAINT-CHINANET
mnt-lower: MAINT-CN-CHINANET-HB
status: ALLOCATED NON-PORTABLE
last-modified: 2008-09-04T06:50:00Z
source: APNIC
role: CHINANET HB ADMIN
address: 8th floor of JinGuang Building
address: #232 of Macao Road
address: HanKou Wuhan Hubei Province
address: P.R.China
country: CN
phone: +86 27 82862199
fax-no: +86 27 82861499
e-mail: hbadd@189.cn
remarks: send spam reports to hbadd@189.cn
remarks: and abuse reports to hbadd@189.cn
remarks: Please include detailed information and
remarks: times in GMT+8
admin-c: YZ83-AP
admin-c: ZC77-AP
tech-c: YZ83-AP
tech-c: ZC77-AP
nic-hdl: CHA1-AP
notify: hbadd@189.cn
mnt-by: MAINT-CN-CHINANET-HB
last-modified: 2013-08-06T11:09:18Z
source: APNIC
person: Chinanet Hostmaster
nic-hdl: CH93-AP
e-mail: anti-spam@ns.chinanet.cn.net
address: No.31 ,jingrong street,beijing
address: 100032
phone: +86-10-58501724
fax-no: +86-10-58501724
country: CN
mnt-by: MAINT-CHINANET
last-modified: 2014-02-27T03:37:38Z
source: APNIC
% This query was served by the APNIC Whois Service version 1.88.15-46 (WHOIS-UK3)

Seuraavaksi päätin katsella palomuurin lokia komennolla tail -F ufw.log

lauri@linux-palvelimet:/var/log$ tail -F ufw.log
Feb 10 17:33:00 linux-palvelimet kernel: [452907.130836] [UFW BLOCK] IN=eth0 OUT= MAC=72:d0:af:18:f4:85:f4:a7:39:d7:8a:7d:08:00 SRC=185.254.122.5 DST=167.99.41.9 LEN=40 TOS=0x00 PREC=0x00 TTL=246 ID=37973 PROTO=TCP SPT=45299 DPT=3224 WINDOW=1024 RES=0x00 SYN URGP=0
Feb 10 17:33:25 linux-palvelimet kernel: [452931.914892] [UFW BLOCK] IN=eth0 OUT= MAC=72:d0:af:18:f4:85:f4:a7:39:d7:8a:7d:08:00 SRC=191.101.128.41 DST=167.99.41.9 LEN=44 TOS=0x00 PREC=0x00 TTL=241 ID=54321 PROTO=TCP SPT=54665 DPT=3389 WINDOW=65535 RES=0x00 SYN URGP=0
Feb 10 17:33:38 linux-palvelimet kernel: [452944.448561] [UFW BLOCK] IN=eth0 OUT= MAC=72:d0:af:18:f4:85:f4:a7:39:d7:82:7d:08:00 SRC=37.218.35.19 DST=167.99.41.9 LEN=40 TOS=0x00 PREC=0x00 TTL=53 ID=4618 PROTO=TCP SPT=14507 DPT=5555 WINDOW=33760 RES=0x00 SYN URGP=0
Feb 10 17:34:17 linux-palvelimet kernel: [452983.457443] [UFW BLOCK] IN=eth0 OUT= MAC=72:d0:af:18:f4:85:f4:a7:39:d7:82:7d:08:00 SRC=31.184.193.53 DST=167.99.41.9 LEN=40 TOS=0x00 PREC=0x00 TTL=249 ID=33168 PROTO=TCP SPT=59091 DPT=8088 WINDOW=1024 RES=0x00 SYN URGP=0
Feb 10 17:34:29 linux-palvelimet kernel: [452995.819418] [UFW BLOCK] IN=eth0 OUT= MAC=72:d0:af:18:f4:85:f4:a7:39:d7:8a:7d:08:00 SRC=47.106.139.119 DST=167.99.41.9 LEN=53 TOS=0x00 PREC=0x00 TTL=46 ID=7969 PROTO=UDP SPT=36892 DPT=27015 LEN=33

Palomuuri näytti estävän paljon liikennettä, joten katsoin jälleen muutaman ip-osoitteen whoisin avulla.

lauri@linux-palvelimet:/var/log$ whois 37.218.35.19
% This is the RIPE Database query service.
% The objects are in RPSL format.
%
% The RIPE Database is subject to Terms and Conditions.
% See http://www.ripe.net/db/support/db-terms-conditions.pdf
% Note: this output has been filtered.
% To receive output for a database update, use the "-B" flag.
% Information related to '37.218.0.0 - 37.218.63.255'
% Abuse contact for '37.218.0.0 - 37.218.63.255' is 'abuse@euskaltel.com'
inetnum: 37.218.0.0 - 37.218.63.255
netname: EUSKALTEL-MOV
descr: Global Telecommunication Service Provider
descr: of the Basque Country in Spain
country: ES
admin-c: EU41-RIPE
tech-c: EU41-RIPE
status: ASSIGNED PA
mnt-by: EUSKALTEL-MNT
created: 2015-08-12T10:02:23Z
last-modified: 2015-08-12T10:02:23Z
source: RIPE # Filtered
role: EUSKALTEL RIPE
address: Edificio 809
address: Parque Tecnologico de Zamudio
address: 48160 Derio (BIZKAIA)
address: Spain
phone: +34 94 4011000
admin-c: MLP363-RIPE
admin-c: NG1816-RIPE
tech-c: MLP363-RIPE
tech-c: NG1816-RIPE
nic-hdl: EU41-RIPE
remarks:
remarks: For information, visit:
remarks: http://www.euskaltel.com
remarks:
mnt-by: EUSKALTEL-MNT
created: 2002-03-05T08:15:07Z
last-modified: 2015-06-30T13:39:09Z
source: RIPE # Filtered
abuse-mailbox: abuse@euskaltel.com
% Information related to '37.218.0.0/17AS12338'
route: 37.218.0.0/17
descr: Euskaltel
origin: AS12338
mnt-by: EUSKALTEL-MNT
created: 2012-04-04T10:43:04Z
last-modified: 2012-04-04T10:43:04Z
source: RIPE
% This query was served by the RIPE Database Query Service version 1.92.6 (HEREFORD)
lauri@linux-palvelimet:/var/log$ whois 185.254.122.5
% This is the RIPE Database query service.
% The objects are in RPSL format.
%
% The RIPE Database is subject to Terms and Conditions.
% See http://www.ripe.net/db/support/db-terms-conditions.pdf
% Note: this output has been filtered.
% To receive output for a database update, use the "-B" flag.
% Information related to '185.254.122.0 - 185.254.122.255'
% Abuse contact for '185.254.122.0 - 185.254.122.255' is 'abuse@sshvps.net'
inetnum: 185.254.122.0 - 185.254.122.255
netname: ARTURAS
country: LT
admin-c: AZ7180-RIPE
tech-c: AZ7180-RIPE
status: ASSIGNED PA
mnt-by: media-land-llc
created: 2018-11-15T13:02:39Z
last-modified: 2018-12-27T13:38:33Z
source: RIPE
person: Media Land LLC
address: Zastavskaya str. 33
address: Sankt-Peterburg
address: Russia
phone: +88124991601
nic-hdl: AZ7180-RIPE
mnt-by: media-land-llc
created: 2018-04-06T15:04:59Z
last-modified: 2018-10-20T12:22:07Z
source: RIPE # Filtered
% Information related to '185.254.122.0/24AS206485'
route: 185.254.122.0/24
origin: AS206485
mnt-by: media-land-llc
created: 2019-01-14T17:23:31Z
last-modified: 2019-01-14T17:23:31Z
source: RIPE
% This query was served by the RIPE Database Query Service version 1.92.6 (BLAARKOP)

Tunkeutumisyrityksiä näytti tulevan ympäri maailmaa ja niitä tuli myös varsin pelottavaa vauhtia. Hyvä siis pitää palomuuri päällä ja salasanat vahvoina.

b) Tee weppisivuja paikallisella koneellasi ja kopioi ne palvelimelle scp-komennolla.

Päätin kokeilla siirtää lokaalisti kotikoneella tekemäni user-käyttäjän kotisivun virtuaalipalvelimelleni. Katsoin ensin mikä virtuaalikoneeni ip-osoite on komennolla hostname -I ja sen jälkeen siirryin kotikoneellani siirrettävän tiedoston kansioon /home/user/public_html/. Seuraavaksi siirsin index.html-tiedoston virtuaalipalvelimelleni komennolla scp index.html user@167.99.41.9:/home/user/public_html. Scp kysyi käyttäjän user salasanaa ja sen annettuani siirsi tiedoston.

Koska kohdekansiossa oli jo index.html -niminen tiedosto, oletin sen ylikirjoittuvan ja niin kävikin. Katsoessa selaimesta virtuaalipalvelinta näkyi siellä onnistuneesti lokaalisti tekemäni index.html


c) Laita palvelimellesi jokin yksinkertainen PHP-sivu. Voit esimerkiksi tulostaa käyttäjän IP-osoitteen$_SERVER[‘REMOTE_ADDR’] tms. Ole huolellinen, jos otat vastaan syötteitä lomakkeilla (forms).

Palvelimellani oli jo valmiiksi PHP asennettuna. PHP:n asentamisesta voi lukea täältä.

Aluksi siirryin käyttäjän user public_html-kansioon /home/user/public_html ja nimesin index.html-tiedoston .php päätteiseksi komennolla mv index.html index.php. Tämän jälkeen lähdin muokkaamaan Nanolla tiedostoa (nano index.php). Lopputuloksena sivu, joka näyttää clientin ip-osoitteen.

Lähteet:

Karvinen, Tero 2019. Suullinen tiedonanto.

Karvinen, Tero 2017. First Steps on a New Virtual Private Server – an Example on DigitalOcean and Ubuntu 16.04 LTS. Luettavissa: http://terokarvinen.com/2017/first-steps-on-a-new-virtual-private-server-an-example-on-digitalocean

Karvinen, Tero 2016. New Default Website with Apache2 – Show your homepage at top of example.com, no tilde. Luettavissa: http://terokarvinen.com/2016/new-default-website-with-apache2-show-your-homepage-at-top-of-example-com-no-tilde

Linuxize 2018. How to Use SCP Command to Securely Transfer Files. Luettavissa: https://linuxize.com/post/how-to-use-scp-command-to-securely-transfer-files/

Itman 2016. How to get client IP address in PHP. Luettavissa: http://itman.in/en/how-to-get-client-ip-address-in-php/

h3

a) Asenna Apache, laita käyttäjien kotisivut (http://example.com/~tero) toimimaan. Testaa esimerkkikotisivulla.

Avasin ensin palomuuriin portit 22 ja 80 komennolla sudo ufw allow 22/tcp ja sudo ufw allow 80/tcp ja käynnistin palomuurin komennolla sudo ufw enable. Varmistin myös, että oikeat portit ovat sallittu komennolla sudo ufw status.

Seuraavaksi asensin Apachen komennolla sudo apt-get -y install apache2. Asennuksen jälkeen siirryin selaimessa osoitteeseen “localhost” katsomaan, että apache oli onnistuneesti asentunut ja toiminnassa.

Muokkasin Apachen default-sivun erilaiseksi komennolla echo jes | sudo tee /var/www/html/index.html, mikä korvasi default-sivun sisällön tekstillä “jes”.

Ajoin komennon sudo a2enmod userdir, jotta pääsisin käyttämään käyttäjien kotihakemistoja. Apache oli tämän jälkeen käynnistettävä uudestaan komennolla sudo systemctl restart apache2

Tämän jälkeen siirryin oletuskäyttäjä xubuntun kotihakemistoon /home/xubuntu ja loin sinne kansion public_html ja kansioon index.html-tiedoston. Testasin osoitteessa localhost/~xubuntu, ja sivu näytti olevan onnistuneesti toiminnassa.

b) Surffaa oman palvelimesi weppisivuja. Etsi Apachen lokista esimerkki onnistuneesta (200 ok) sivulatauksesta ja epäonnistuneesta (esim 404 not found) sivulatauksesta. Analysoi rivit.

Seuraavaksi siirryin kansioon /var/log/apache2 ja ajoin komennon tail -F access.log. Löysin useamman onnistuneen GET-pyynnon tekemistäni aiemmista sivun päivityksistä. Kokeilin muutaman kerran vielä päivittää sivua ja sain takaisin tasaisesti 200 statusta. Viestissä näytti lukevan järjestyksessä vasemmalta oikealle clientin ip-osoite, pyynnön päivämäärä ja aika, pyynnön kohdesijainti palvelimella, http-protokolla, vastauksen status-koodi, palautetun objektin koko ja tietoja clientin selaimesta. Mielenkiintoisena sivuhavaintona päivittäessä sivua normaalisti (ctrl+r tai selaimen reload-nappula), palautetun objektin koko oli aina 479, kun taas päivittäessä sivun painaen myös shift-nappulaa, oli objektin koko hieman suurempi 480.

Saadakseni 404-statuksen kokeilin kirjoittaa osoiteriviin erilaisia päätteitä ja sain tällä tavalla takaisin “Not Found”-sivun, koska tässä vaiheessa olin tehnyt vain index.html-sivun ja kansiossa ei ollut muuta.

c) Tee virhe weppipalvelimella ajettavaan koodiin (esim PHP tai Python), etsi se lokista ja analysoi tuo lokirivi

Asensin aluksin PHP-moduulin komennolla sudo apt-get install libapache2-mod-php. Apache oli käynnistettävä uudestaan komennolla sudo systemctl restart apache2. Tämän jälkeen muokkasin komennolla sudoedit tiedostoa php7.2.conf sijainnissa /etc/apache2/mods-available/php7.2.conf

Tiedoston viisi viimeistä riviä oli kommentoitava, jotta käyttäjien kotihakemistoissa voitaisiin käytää PHP:tä. Tein tämän ja käynnistin Apachen taas uudestaan ja testasin toimintaa kirjoittamalla nopean PHP-skriptin aiemmin tekemääni index.html-sivuun. Nimesin tiedoston uudestaan .php-päätteiseksi komennolla mv index.html index.php.

Tein koodin virheen kirjoittamalla rivin $file=fopen(“doesntexist.txt”,”r”), joka joka lukisi tiedostosta doesntexist.txt, mutta koska kyseistä tiedostoa ei ollut olemassa, sain virheilmoituksen Apachen error.log-lokiin.

[Sun Feb 03 20:34:59.823056 2019] [php7:warn] [pid 10951] [client 192.168.1.115:57566] PHP Warning:  fopen(doesntexist.txt): failed to open stream: No such file or directory in /home/xubuntu/public_html/index.php on line 13

Rivissä näkyi virheilmoituksen aika ja päivämäärä, varoituksen tyyppi, prosessin tunniste, asiakkaan osoite ja virheen syy. Tässä tapauksessa virheen syy oli, että kyseistä tekstitiedostoa ei löytynyt kohdekansiosta.

d) Tee virhe johonkin Apachen asetustiedostoon, etsi ja analysoi tuo rivi. Etsimiseen sopivat esimerkiksi Apachen omat lokit, syslog sekä ‘apache2ctl configtest’.

Siirryin Apachen kotihakemistoon /etc/apache2 ja aloin etsiä sopivaa tiedostoa muokattavaksi. Apache2.conf vaikutti mielenkiintoiselta, joten aloin muokkaamaan sitä komennolla sudoedit apache2.conf

Heti tiedoston alkupäässä löytyi kohta DefaultRuntimeDir, jonka päätin tehdä virheelliseksi lisäämällä siihen tekstiä. Käynnistin Apachen uudestaan ja sainkin heti vastaan virheviestin:

Job for apache2.service failed because the control process exited with error code.
See "systemctl status apache2.service" and "journalctl -xe" for details.

Ajoin komennon apache2ctl configtest, joka antoi vastaukseksi viestin:

[Sun Feb 03 21:42:46.145865 2019] [core:warn] [pid 11731] AH00111: Config variable ${APACHE_RUN_DIRasdfasdfasdfsadf} is not defined
apache2: Syntax error on line 80 of /etc/apache2/apache2.conf: DefaultRuntimeDir must be a valid directory, absolute or relative to ServerRoot
Action 'configtest' failed.
The Apache error log may have more information.

Viestin mukaan kyseessä oli SyntaxError, jossa Apache ei käsitykseni mukaan tunnistanut DefaultRuntimeDir:iin annettua hakemistoa.

Ajoin myös Linuxin aiemmin suosittelemat komennot systemctl status apache2.service ja journalctl -xe, jotka antoivat myös samantyylisiä vastauksi ongelman syyksi.

g) Tee palvelimella ajettava weppiohjelma, joka käyttää tietokantaa. Voit tehdä jonkin yksinkertaisen CRUD-ohjelman, esimerkiksi TODO-listan

Korjasin apache2.conf-tiedoston takaisin normaaliksi ja käynnistin Apachen uudestaan. Seuraavaksi asensin MariaDB-tietokannan ja pwgen-salasanageneraattorin komennolla sudo apt-get -y install mariadb-client mariadb-server pwgen.

Käynnistin ohjelman root-käyttäjänä komennolla sudo mariadb -u root ja loin komennolla CREATE DATABASE test; tietokannan nimeltä test. Annoin oikeudet uudelle test-nimiselle käyttäjälle tähän tietokantaan komennolla GRANT ALL ON test. * TO test@localhost IDENTIFIED BY ‘pwgenilläSatunnaisestiLuotuSalasana’;

Suljin tietokantaohjelman komennolla exit ja kirjauduin uudestaan sisään, nyt käyttäjänä test (sudo mariadb -u test -p). Ohjelma kysyi käyttäjän test salasanaa ja sen annettuani pääsin onnistuneesti sisään tietokantaan. Siirryin tietokantaan test komennolla USE test; ja seuraavaksi loin tietokantaan uuden taulun tasks komennolla CREATE TABLE tasks (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(1024)); 

Testasin taulua lisäämällä sinne viestin “osta ruokaa” komennolla INSERT INTO tasks (name) VALUES (“osta ruokaa”); ja testasin vielä, että viesti oli mennyt onnistuneesti tauluun komennolla SELECT * FROM tasks;

Seuraavaksi avasin uuden terminaali-ikkunan ja siirryin kansioon /home/xubuntu/public_html/ muokkaamaan siellä olevaa index.php-tiedostoa.

Hain osoitteesta http://terokarvinen.com/2018/php-database-select-and-insert-example-php-pdo templaten PHP-tietokantayhteydelle ja muokkasin sen vastaamaan oman tasks-tietokantani tietoja ja sisältöä. Kokeilin selaimessa, mutta en nähnyt lisäämiäni muutoksia sivulla, joten menin katsomaan /var/log/apache2/error.log:ia. Sieltä sain virheilmoituksen

 [Sun Feb 03 22:44:58.992052 2019] [php7:error] [pid 11887] [client 192.168.1.115:58196] PHP Fatal error:  Uncaught PDOException: could not find driver in /home/xubuntu/public_html/index.php:16\nStack trace:\n#0 /home/xubuntu/public_html/index.php(16): PDO->__construct('mysql:host=loca…', 'tasks', 'XXXXXXXXX')\n#1 {main}\n  thrown in /home/xubuntu/public_html/index.php on line 16

Jonkin sortin ajuri näytti siis puuttuvan, ja myös muistikuvani tunnilta oli, että tällainen ehkä tarvittiin. Etsin komennolla apt-cache search php | grep -i php | grep -i mariadb, mutta en löytänyt mitään. Kokeilin uudestaan komennolla
apt-cache search php | grep -i php | grep -i mysql ja sain sitä kautta osumia. php-mdb2-driver-mysql -paketti vaikutti lupaavalta, joten asensin sen. Tietokantaohjelma ei kuitenkaan vielä tämänkään jälkeen toiminut. Nyt virheviestiksi tuli

[Sun Feb 03 23:14:33.191449 2019] [php7:error] [pid 16659] [client 192.168.1.115:58381] PHP Fatal error:  Uncaught PDOException: SQLSTATE[HY000] [1698] Access denied for user 'tasks'@'localhost' in /home/xubuntu/public_html/index.php:16\nStack trace:\n#0 /home/xubuntu/public_html/index.php(16): PDO->__construct('mysql:host=loca…', 'tasks', 'XXXXXXXXXX')\n#1 {main}\n  thrown in /home/xubuntu/public_html/index.php on line 1

Hetken ihmettelyn ja Googlailun jälkeen, tajusin että olin kirjoittanut koodiin usernamen kohdalle käyttämäni taulun nimen ja tämän korjattuani tietokantayhteys toimi normaalisti.

Lähteet:

Karvinen, Tero 2019. Suullinen tiedonanto.

Apache 2019. Log Files. Luettavissa: https://httpd.apache.org/docs/2.4/logs.html

Karvinen, Tero 2018. Install MariaDB on Ubuntu 18.04 – Database Management System, the New MySQL. Luettavissa: http://terokarvinen.com/2018/install-mariadb-on-ubuntu-18-04-database-management-system-the-new-mysql

Karvinen, Tero 2018. PHP Database SELECT and INSERT Example – php-pdo. Luettavissa: http://terokarvinen.com/2018/php-database-select-and-insert-example-php-pdo

h2


a) Aiheuta lokiin kaksi eri tapahtumaa: yksi esimerkki onnistuneesta ja yksi esimerkki epäonnistuneesta tai kielletystä toimenpiteestä. Analysoi rivit yksityiskohtaisesti.

Loin onnistuneen tapahtuman asentamalla ohjelman Nginx komennolla “sudo apt-get install nginx”. Asennuksen jälkeen siirryin var/log/-hakemistoon, jossa yritin ensin etsiä syslogista mainintoja tapahtumasta komenolla “grep nginx syslog”. En kuitenkaan saanut mitään mainintaa tapahtumasta tällä tavalla, joten yritin seuraavaksi hakea kaikista hakemiston tiedostoista komennolla “grep -Hrn nginx .”. Tällä tavalla sain onnistuneesti näkymään hakusanan “nginx” sisältäviä lokitiedostoja ja niiden sijainnin. Maininnat keskittyivät enimmäkseen dpkg.log-lokiin ja apt-kansiossa sijaitsevaan term.log-lokiin, jotka molemmat näyttivät listaavan ohjelman asennusta koskevia tapahtumia. Tämän lisäksi löysin vielä auth.log:sta yhden maininnan, joka näytti listaavan käyttämäni sudo-komennon, sekä apt-kansion history.log:sta maininnan komentoriviin kirjoittamastani apt-get -komennosta, sekä yhden lokituksen Nginx-ohjelman asentamisesta.

Kielletyn toimenpiteen lokitus osoittautui hieman vaikeammaksi. Yritin ensin tehdä kielletyn toimenpiteen yrittämällä poistaa home-kansion komennolla “rmdir home”. Tämä antoi minulle terminaaliin viestin rmdir: failed to remove ‘home’: Permission denied. Yritin seuraavaksi etsiä grepillä mainintaa tästä hakusanalla “rmdir”, mutta haku ei tuottanut osumia. Lyhyen Internet-etsinnän jälkeen minulle selvisi, että tällaisia tapahtumia ei kerätä lokiin, joten tällä tavalla en onnistunut saamaan lokitusta kielletystä toimenpiteestä.

Seuraavaksi kokeilin aiheuttaa epäonnistuneen toimenpiteen käyttäjän salasanaa vaihtamalla. Komennolla “passwd” pääsin vaihtamaan oletuskäyttäjä xubuntun salasanaa. Komentorivi kysyi heti alkuun käyttäjän vanhaa salasanaa. Oletuksen mukaisesti oletuskäyttäjällä ei ollut vielä salasanaa, joten tämä kohta olisi pitänyt ohittaa painamalla Enter. Sen sijaan kirjoitin jotain sekalaista salasanaksi ja sain takaisin viestin passwd: Authentication token manipulation error. Kokeilin ensin “tail syslog” -komennolla etsiä syslogista mahdollisia virheilmoituksia, mutta tällä tavalla en löytänyt mitään. Seuraavaksi kokeilin etsiä tailin avulla auth.log:sta, josta sain onnistuneesti vastaani authentication failure -lokituksen. Lokitus näyttäisi kertovan epäonnistuneesta autentikointiyrityksestä käyttäjälle xubuntu.

c) Tee unelmien apt-get -komento: yksi komentorivi, joka asentaa suosikkiohjelmasi. 

Ajoin komennon “sudo apt-get -y install gimp deluge nodejs npm”, jolla sain suoraan asennettua aiemmin kokeilemani kuvankäsittelyohjelma GIMP:n sekä torrent-ohjelma Delugen. Tämän lisäksi laitoin mukaan vielä Nodejs:n ja NPM:n javascript-kehitystä varten. Tarkistin GIMP:n ja Delugen asennukset ajamalla ne työpödällä, sekä Noden ja NPM komennoilla “node -v” ja “npm -v”, joka listasi minulle molempien versionumerot.


d) Asenna komentokehotteen paketinhallinnasta kolme itsellesi uutta komentorivillä toimivaa ohjelmaa. Kokeile kutakin ohjelmaa sen pääasiallisessa käyttötarkoituksessa.

Ensimmäisenä asensin tekstiedotori Vim:n (“sudo apt-get install -y vim”). Komennolla “vim foobar.txt” loin foobar-nimisen tekstitiedoston ja kirjoitin sinne hieman tekstiä.

Seuraavaksi asensin ohjelman cURL komennolla “sudo apt-get install -y curl”. Testasin ohjelmaa hakemalla aiemmin asentamaani Nodejs:aan uusimman version asennuspaketit komennolla “curl -sL https://deb.nodesource.com/setup_10.x | sudo bash -“. Tämän jälkeen ajoin komennon “sudo apt-get install -y nodejs” ja Node päivittyi onnistuneesti versiosta 8.10.0 versioon 10.15.0.

Lopuksi kokeilin vielä ohjelmaa Htop asentamalla sen komennolla “sudo apt-get install htop” ja käynnistämällä sen komennolla “htop”. Ohjelma antoi hyvän ja kattavan näkymän taustalla pyöriviin prosesseihin.

Lähteet:

ITNext 2018. 10 CLI Tools that You Will Love. Luettavissa: https://itnext.io/10-cli-tools-that-you-will-love-d214bc73d856

AskUbuntu 2011. How to use “grep” command to find text including subdirectories. Luettavissa: https://askubuntu.com/questions/55325/how-to-use-grep-command-to-find-text-including-subdirectories

WebsiteForStudents 2018. Install The Latest Node.Js And NPM Packages On Ubuntu 16.04 / 18.04 LTS. Luettavissa: https://websiteforstudents.com/install-the-latest-node-js-and-nmp-packages-on-ubuntu-16-04-18-04-lts/

h1

a) Tee oma Linux-livetikku. Kokeile sitä jossain muussa kuin koulun koneessa

Latasin xubuntu-18.04-desktop-amd64.iso -tiedoston osoitteesta http://ubuntu.ipacct.com/xubuntu/18.04/release/

Latasin UNetbootin-ohjelman Windowsille osoitteesta https://unetbootin.github.io/ ja liitin tyhjän USB-tikun tietokoneeseen.

Käynnistin UNetbootin-ohjelman ja valitsin kohdan ”Levykuva” ja siihen lataamani iso-tiedoston. Tyypiksi valitsin USB-aseman ja painoin “OK”, mikä suoritti asennuksen.

USB-asennuksen jälkeen käynnistin tietokoneen uudelleen ja painoin F12-mikä vei minut Windows Boot Manageriin. Valitsin vaihtoehdon “USB HDD: Kingston DataTraveler 3.0” ja sain auki onnistuneesti Xubuntun näkymän.

b) Listaa testaamasi koneen rauta (‘sudo lshw -short -sanitize’)

Avasin Xubuntun terminaalin ruudun vasemmasta ylälaidasta aukeavasta valikosta ja kirjoitin komennon ” sudo lshw -short -sanitize”

c) Asenna kolme itsellesi uutta ohjelmaa. Kokeile kutakin ohjelmaa sen pääasiallisessa käyttötarkoituksessa

Latasin GIMP-kuvaeditorin kirjoittamalla terminaaliin komennon “sudo apt-get install gimp”. Ohjelma asentui nopeasti ja toimi mukavan helposti suoraan paketista.

Seuraavaksi kokeilin bittorrent-sovellusta Deluge. Asennus onnistui samalla tavalla suoraan terminaalista (“sudo apt-get install deluge”). Sovelluksen käyttöliittymä muistutti todella paljon Windowsista minulle aiemmin tuttua uTorrentia, joten käyttöönotto oli vaivatonta. Testasin sovellusta kokeilemalla ladata Xubuntu 18.04:n iso-tiedostoa.

Lopuksi asensin vielä Kazam-sovelluksen näyttökuvien tallennusta varten (“sudo apt-get install kazam”). Itse sovelluksen käyttö kävi helposti, mutta sovellus piilottaa kuvaa ottaessa itsensä, joten päädyin lopulta kuitenkin ehkä hieman koomisesti käyttämään vielä tässä vaiheessa kuitenkin Ubuntun sisäistä screenshot-ominaisuutta.

d) Mitä lisenssiä kukin näistä ohjelmista käyttää? Selitä lyhyesti, mitä oikeuksia ja velvolisuuksia tuosta lisenssistä seuraa.

GIMP käyttää Creative Common sAttribution-ShareAlike 4.0 International (CC BY-SA 4.0) -lisenssiä. Sen mukaan sovellusta saa jakaa ja muokata vapaasti, sekä myös muokattuna myydä ehdoilla, että alkuperäinen luoja mainitaan, mukaan liitetään linkki lisenssiin ja kerrotaan tehdyistä muokkauksista. Jos alkuperäismateriaalia muokataan tai sen päälle rakennetaan, on uuden version jakelu tehtävä samaa alkuperäisen version käyttämää lisenssiä käyttäen.

Deluge ja Kazam käyttävät molemmat GNU GPL v3 -lisenssiä, jonka mukaan sovelluksien lähdekoodiä saa kopioida, jakaa vapaasti ja muokata, mutta tehdyistä muokkauksista tulee mainita ja myös muokatut versiot pitää tämän saman lisenssin alla niiden mahdollisesta maksullisuudesta huolimatta.

e) Listaa käyttämäsi ohjelmat (esim. MS Word), kunkin ohjelman käyttötarkoitus (esim. Tekstinkäsittely) ja vastaava vapaa Linux-ohjelma (esim. LibreOffice Writer). Jos johonkin tarkoitukseen ei löydy vapaata Linux-ohjelmaa, listaa sekin

  • VScode (koodaus) -> VScode/Atom
  • Steam (pelaaminen) -> Steam
  • MS Office (tekstinkäsittely, presentaatiot) -> LibreOffice
  • uTorrent (torrent-client) -> Deluge
  • Google Chrome -> Google Chrome/Chromium/Mozilla Firefox
  • Photoshop (kuvankäsittely) -> GIMP
  • GIT bash (versionhallinta) -> Git bash
  • HWMonitor (laitteiston seuranta) -> Open Hardware Monitor
  • Avira/Malwarebytes (antivirus, antimalware) -> ClamAV, Comodo, Sophos

Lähteet:

Karvinen, Tero 2019. Suullinen tiedonanto.

Ubuntupit 2018. Best Linux Software: Our Editorial List of Essential Linux Apps. Luettavissa: https://www.ubuntupit.com/best-linux-software-our-editorial-list-of-essential-linux-apps/

Techradar 2018. Best Linux apps of 2018. Luettavissa: https://www.techradar.com/news/best-linux-apps

Creative Commons. Attribution-ShareAlike 4.0 International (CC BY-SA 4.0). Luettavissa: https://creativecommons.org/licenses/by-sa/4.0/

tldrLegal. GNU General Public License v3 (GPL-3). Luettavissa: https://tldrlegal.com/license/gnu-general-public-license-v3-(gpl-3)

GNU 2014. A Quick Guide to GPLv3. Luettavissa: https://www.gnu.org/licenses/quick-guide-gplv3.html