Završni praktični zadatak – Modul 18 – Linux mreže
Cilj
Samostalno postaviti bezbedan Ubuntu Server sa statičkom mrežnom konfiguracijom, SSH pristupom preko ključa, UFW firewall-om i funkcionalnim veb servisom, uz sistematsku dijagnostiku namerno unetog problema — objedinjujući sve veštine ovog modula bez oslanjanja na prethodne primere.
Scenario
Firma „Kaskada Solutions" postavlja novi Ubuntu Server koji će hostovati internu aplikaciju dostupnu preko HTTP-a, sa zahtevom da administratori pristupaju serveru isključivo preko bezbednog SSH-a, i da firewall dozvoljava samo neophodan saobraćaj.
Zahtevi zadatka
- Instalirajte Ubuntu Server VM i konfigurišite statičku IP adresu preko Netplan-a, testiranu sa
netplan trypre konačne primene. - Instalirajte SSH server i konfigurišite autentifikaciju isključivo preko ključa (bez lozinke), testirajući da ključ radi pre onemogućavanja lozinke.
- Prenesite najmanje jedan fajl na server preko SCP-a.
- Instalirajte jednostavan veb server (npr. nginx ili Apache) i potvrdite da lokalno sluša na portu 80 preko
ss -tulpn. - Konfigurišite UFW da dozvoli isključivo SSH i HTTP saobraćaj, dodajući SSH pravilo pre uključivanja firewall-a.
- Testirajte i dokumentujte dostupnost veb servisa sa drugog uređaja (host računara), pre i posle dodavanja UFW pravila za port 80.
- Pregledajte log zapise SSH i veb servisa preko
journalctli dokumentujte relevantne zapise koji potvrđuju uspešnu konfiguraciju. - Namerno unesite jednu grešku po vašem izboru (npr. pogrešan redosled UFW pravila, netačna Netplan sintaksa, ili greška u SSH konfiguraciji) i dokumentujte tačno kako se problem manifestuje, zatim ga ispravite koristeći sistematsku dijagnostiku iz Teme 16.
Ograničenja i pravila
- SSH pristup mora raditi isključivo preko ključa, bez lozinke.
- UFW pravilo za SSH mora biti dodato pre uključivanja firewall-a — dokumentujte da ste ovo svesno ispoštovali.
- Dijagnostika mora pratiti sistematski redosled (interfejs → IP → ruta → DNS → lokalni port → spoljni port → log), ne nasumično nagađanje.
Šta predati
- Dijagram topologije sa IP adresom servera i dozvoljenim portovima (može biti ručno nacrtan ili Mermaid).
- Kompletna Netplan YAML konfiguracija.
- Izlaz
ip addr show,ss -tulpn,sudo ufw status verbosesa objašnjenjem šta svaki prikazuje. - Dokaz uspešne SSH prijave preko ključa i SCP prenosa fajla.
- Dokaz dostupnosti veb servisa sa drugog uređaja, pre i posle UFW izmene.
- Dokumentacija namerno unete greške iz zahteva 8 (pre i posle ispravke).
Kriterijumi ocenjivanja
| Kriterijum | Broj poena |
|---|---|
Ispravna statička mrežna konfiguracija preko Netplan-a, testirana sa try | 15 |
| Ispravno konfigurisan SSH sa autentifikacijom isključivo preko ključa | 20 |
| Uspešan SCP prenos fajla | 10 |
Ispravno instaliran i proveren veb servis (lokalno preko ss) | 10 |
| Ispravno konfigurisan UFW (ispravan redosled, dozvoljen samo neophodan saobraćaj) | 20 |
| Potvrđena dostupnost servisa spolja pre i posle UFW izmene | 10 |
| Tačna dijagnostika i objašnjenje namerno unete greške (zahtev 8) | 15 |
| Ukupno | 100 |
Rešenje
Kompletno rešenje dostupno je u /resenja/modul-18/08-zavrsni-zadatak-resenje.md.
📖 Prikaži rešenje
Rešenje završnog zadatka – Modul 18
Mrežna konfiguracija
Netplan (/etc/netplan/00-installer-config.yaml):
network:
version: 2
ethernets:
enp0s3:
dhcp4: false
addresses:
- 192.168.100.10/24
routes:
- to: default
via: 192.168.100.1
nameservers:
addresses: [1.1.1.1, 8.8.8.8]
$ sudo netplan try
(potvrđeno Enter-om nakon provere da veza radi)
$ ip addr show enp0s3
inet 192.168.100.10/24 brd 192.168.100.255 scope global enp0s3
SSH sa autentifikacijom preko ključa
(host)
$ ssh-keygen -t ed25519
$ ssh-copy-id admin@192.168.100.10
$ ssh admin@192.168.100.10
(uspešna prijava bez lozinke, potvrđena PRE nastavka)
(na serveru, /etc/ssh/sshd_config)
PasswordAuthentication no
PermitRootLogin no
$ sudo systemctl restart sshd
SCP prenos
(host)
$ scp izvestaj.txt admin@192.168.100.10:/home/admin/
izvestaj.txt 100% 45 1.2KB/s 00:00
Veb servis i UFW
$ sudo apt install nginx -y
$ ss -tulpn | grep :80
tcp LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=1420,fd=6))
$ sudo ufw allow OpenSSH
$ sudo ufw enable
$ sudo ufw allow 80/tcp
$ sudo ufw status verbose
Status: active
22/tcp (OpenSSH) ALLOW IN Anywhere
80/tcp ALLOW IN Anywhere
Test dostupnosti spolja (pre i posle):
(host, pre dodavanja porta 80)
$ curl http://192.168.100.10
curl: (7) Failed to connect ... Connection timed out
(host, posle)
$ curl http://192.168.100.10
<!DOCTYPE html>...Welcome to nginx!...
Log zapisi
$ journalctl -u sshd -n 10
sshd[901]: Accepted publickey for admin from 192.168.100.1 port 52001 ssh2
$ journalctl -u nginx -n 10
nginx[1420]: nginx.service: Deactivated successfully. (start)
Test i dijagnostika (zahtev 8)
Namerno uneta greška (primer): sudo ufw enable pokrenut pre dodavanja SSH pravila (obrnut redosled od preporučenog).
Manifestacija: Aktivna SSH sesija administratora se odmah prekida (connection closed), jer UFW podrazumevano odbija sav dolazni saobraćaj bez eksplicitnog pravila — uključujući saobraćaj postojeće SSH veze.
Dijagnostika: Pošto je SSH pristup potpuno onemogućen, potreban je pristup preko VirtualBox konzole (grafički prozor VM-a, ne mrežni SSH) da bi se problem uopšte mogao ispraviti — ovo je klasičan primer zašto redosled komandi u Temi 12 nije proizvoljan.
Ispravka: Preko VirtualBox konzole:
$ sudo ufw allow OpenSSH
$ sudo ufw reload
Nakon toga, SSH pristup sa host računara ponovo radi.
Napomena za ocenjivača
Prihvatljiv je bilo koji izbor konkretne namerne greške i IP adresiranja, dokle god: (1) statička mrežna konfiguracija je ispravno postavljena preko Netplan-a i testirana sa try, (2) SSH radi isključivo preko ključa, testiran pre onemogućavanja lozinke, (3) SCP prenos je uspešan, (4) veb servis je proveren i lokalno (ss) i spolja (curl/pretraživač) pre i posle UFW izmene, (5) UFW pravila su ispravno redosleđena, i (6) dijagnostička vežba jasno pokazuje uzrok, manifestaciju i ispravku namerno unete greške koristeći sistematski pristup iz Teme 16.