This is an old revision of the document!
* Publicare:
* Termen de predare:
Tema constă în realizarea configurației unui set de exerciții pe o topologie simulată într-o mașină virtuală. Topologia este alcătuită din mașina guest și trei containere virtualizate cu ajutorul tehnologiei LXC (atenție: nu se folosește Docker, ca la laboratoare, însă modul de utilizare este similar). Mai multe detalii despre topologie găsiți la secțiunea Topologie.
Revizii:
t2update
!);Fiecare exercițiu are un punctaj propriu. Nota pe întreaga temă este dată de suma punctajelor acumulate în urma rezolvării fiecărui exercițiu.
Punctajul maxim care se poate obține pe întreaga temă este 100 de puncte. Acest punctaj este echivalent cu 1.95 puncte din nota finală.
Există exerciții bonus cu ajutorul cărora puteți obține 125 de puncte. Din păcate, punctajul se trunchiază la 100 de puncte. Puteți rezolva exerciții bonus în schimbul exercițiilor obișnuite.
Nu este obligatorie rezolvarea tuturor exercițiilor. Exercițiile pot fi rezolvate în orice ordine, mai puțin în situația în care un exercițiu depinde de rezolvarea unui alt exercițiu.
vmdk
.root@host$ t2update
.
t2update
t2check
root@host:~# t2check task01 ......................... 10.0/10.0 task02 ......................... 10.0/10.0 task03 ......................... 10.0/10.0 task04 ......................... 10.0/10.0 ... root@host:~# t2check 11 task11 ......................... 0.0/10.0 mail not received
root@host$ t2check --save
scp
, copiați acest fișier pe stația voastră locală (atenție să nu încurcați directoarele și să copiați o arhivă veche / salvată în altă parte!). Dacă sunteți conectat la OpenStack prin serverul intermediar fep.grid.pub.ro
, va trebui să copiați mai întâi acolo, apoi s-o preluați pe stația voastră de lucru (alternativ, puteți folosi funcționalitatea de ProxyCommand
a clientului ssh
pentru o conexiune directă).
Folosiți comanda reboot
înainte să testați de-a întregul (checkerul local doar simulează ceva mai rapid).
/etc
, /home
și /root
(atât pe host, cât și pe containere). NU instalați alte pachete în plus.
Rezolvările sunt particularizate pentru fiecare student (pe baza contului Moodle). Pentru a obține aceste date, accesați link-ul Moodle RL Checker.
Datele de particularizare afișate pe Moodle vor fi introduse şi în fişierul /root/tema2.txt
, unde va trebui să păstrați formatul text VARIABILA=valoare
(liniile noi în plus nu contează)! Atenție: nu puteți personaliza aceste valori, ele fiind verificate cu strictețe de către checker-ul online!
Informațiile generate anterior vor fi folosite în enunțul temei cu următoarele notații:
- $A = valoarea variabilei A - $B = valoarea variabilei B - $C = valoarea variabilei C - $D = valoarea variabilei D - $E = valoarea variabilei E - $F = valoarea variabilei F - $G = valoarea variabilei G - $H = valoarea variabilei H - $I = valoarea variabilei I - $J = valoarea variabilei J - $K = valoarea variabilei K
Toate discuțiile legate de probleme/întrebări/exerciții din tema de RL trebuie puse pe forumul temei. Reguli de utilizare ale acestui forum:
/root/scripts/make-juju.py
în loc de ./make-juju.py
pentru a nu se baza pe directorul actual de lucru (working directory
).
Se recomandă citirea întregului set de exerciții înainte de rezolvarea temei. În mod asemănător, la rezolvarea unui exercițiu se recomandă citirea întregului subset de exerciții.
red
: 10.44.$A.0/27
green
: 172.18.$B.64/28
blue
: 172.18.$B.80/30
red
, green
și blue
vor avea ruta default prin sistemul host
.red
2022:2:$A:$C::/64
green
2022:3:$B:$D::/64
blue
2022:4:$B:$E::/64
red
, green
și blue
vor avea ruta default prin sistemul host
.host
, red
, green
, respectiv blue
). Adăugați intrări de hosts doar pentru adresele IPv4.eth0
a sistemului host
este asignată dinamic de către ISP, prin DHCP; configurarea trebuie realizată astfel încât conectivitatea la internet a containerelor să nu depindă de această adresă IP.systemd-resolved
a fost dezactivat peste tot, deci ar trebui să meargă tehnica clasică de editare /etc/resolv.conf
;)(21600 + $G)
, (21600 + $H)
, (18600 + $I)
, să conducă la conectarea ssh pe sistemele blue
, green
respectiv red
.(13700 + $K)
să conducă la conectarea pe tracker-ul de pe sistemul green
.host
astfel încât:red
să fie blocate (inclusiv către host!);green
să nu fie permise de pe host
(decât prin port forward).blue
, mai puțin protocoalele icmp
, ssh
și ftp
.blue
sau răspunsurile de la acestea! folosiți reguli stateful;student
de pe oricare sistem să fie permisă pe toate celelate sisteme (tot în cadrul utilizatorului student
) folosind chei publice;ssh h
să ducă către sistemul host
cu utilizatorul student
;ssh r
să ducă către sistemul red
cu utilizatorul student
;ssh g
să ducă către sistemul green
cu utilizatorul student
;ssh b
să ducă către sistemul blue
cu utilizatorul student
.ssh-copy-id
utilizează autentificare ssh pe bază de parolă pentru a copia cheia. Mașina virtuală pe OpenStack nu permite astfel de autentificare pe host
, așadar veți fi nevoiți să autorizați cheia publică manual in fișierul corespunzător!red
scriptul /home/student/scripts/whereswaldo
care să caute recursiv prin paginile de la http://host/.X/
și să găsească fișierul waldo.txt
(e.g., http://host/.X/sub/cale/waldo.txt
).ana
face_ReLe
ftp
. Pe sistemul host
:/root/scripts/ftp-upload
care uploadează DOAR fișierele de forma [UVT][0-10000].txt
('U' sau 'V' sau 'T' urmat de un număr și extensia .txt
) din directorul curent la URL-ul ftp://red/upload/
, autentificându-se cu utilizatorul fs
și parola talent+valoare
./root/scripts/ftp-download
care descarcă DOAR fișierele cu forma ([a-zA-Z]+)-([0-9]+).tar.gz
(adică orice șir de litere mici/mari, separatorul minus ('-'), un număr și extensia .tar.gz
) de la URL-ul ftp://red/download
în directorul curent. Descărcarea se face în mod anonim, fără autentificare.host
este configurat un server de e-mail (SMTP):green
, creați scriptul /root/scripts/sell-nft
care să trimită un mesaj către contact@host
ce va conține:Cumpara NFTuri cu RR
sha256
al atașamentului;rr.jpeg
preluat din directorul curent de unde este rulat scriptul.host
, creați un set de reguli de firewall pentru BLOCAREA și jurnalizarea acceselor lui blue
asupra serviciului telnet
de pe sistemul green
./var/log/insecure.log
.“insecure-telnet: ”
.red
, creați un script /root/scripts/check-port
care va primi, ca prim argument, numărul unui port TCP (1-65535), și va scrie, la stdout, textul “adevarat”
dacă acel port este deschis pe host
(inclusiv IPv6!) si “nah”
în caz contrar.green
și blue
.wg-rl
pe ambele capete. 2022:0:$F::/64
pentru capetele tunelului (green
va avea a prima adresă IP asignabilă, blue
pe cea de-a doua).blue
va fi pornit un serviciu special pe portul TCPv6 9944
care va asculta DOAR pe capătul de tunel wireguard creat anterior (checkerul îl va porni automat; pentru testare puteți folosi nc
cu argumentul -s
, trebuie să puteți trimite mesaje bidirecționale prin portul forwardat).green
(aveți iptables instalat) pentru a realiza DNAT astfel încât conexiunile la green
portul 44
să ducă către acest serviciu ce rulează pe blue
.green:44
va trebui să fie funcțional din orice rețea (e.g., încercați să vă conectați de pe host
sau red
)!iptables
pentru a rezolva acest exercițiu. E.g., nu e voie să folosiți un serviciu auxiliar care să asculte pe portul 44
și să redirecționeze pachetele la blue
!tcpdump
cu încredere ;)