Eliminacje
Do dyspozycji macie dwa serwery – jeden publiczny (server1) i jeden prywatny (server2-internal). Są one połączone siecią wewnętrzną (interfejsy eth1 lub eth2). Adres publiczny server1 znajdziesz w panelu Beyond (informacje w przesłanej instrukcji).
- Skonfiguruj server1 tak, aby był on bramą domyślną dla server2-internal.
Wynikiem zadania ma być możliwość uzyskania zasobów dostępnych w Internecie przez server2-internal. Postaraj się, aby nie ucierpiał na tym poziom zabezpieczeń na server1 (blokowanie portów przez zaporę), a także aby konfiguracja była permanentna – pozostawała taka sama po restarcie obu serwerów.
Jeżeli nie uda Wam się zrobić tego zadania, wszystkie kolejne wykonujcie na server1.
(5 pkt.)
- Na server1 udostępnij /srv/www/htdocs używając protokołu SFTP oraz FTPES zachowując następujące warunki dla FTPES:
- certyfikat self-signed ważny przez 3 lata
- długość klucza 4096 bitów
- wymuszenie szyfrowania
- brak możliwości logowania oraz transferu plików bez szyfrowania
(10 pkt.)
Skonfiguruj dostęp do htdocs tylko dla użytkowników ‘web-developer’ oraz ‘tester’, z hasłem ‘P0tyc2k!2k22’ (obaj użytkownicy maja być w grupie głównej ‘dev-team’, utwórz ją). (5 pkt.)
Skonfiguruj dostęp w taki sposób, aby pliki przez nich tworzone miały jako właściciela użytkownika, który dany plik stworzył, grupę właścicielską dev-team oraz uprawnienia u+rw, 6 dla grupy właścicielskiej oraz tylko odczyt dla pozostałych. Upewnij się że użytkownicy ‘wwwrun’ oraz ‘nginx’ mają pełen dostęp do plików (ale NIE dodawaj ich do grupy ‘dev-team’!!!). (10 pkt.)
Zablokuj dostęp użytkownikom anonimowym. (2 pkt.)
Udostępnij pliki z /srv/www/htdocs używając serwera nginx, upewnij się, że możliwy jest dostęp po HTTP – utwórz prostą stronę wyświetlającą nazwę twojego zespołu. (5 pkt.)
- Napisz skrypt (powłoki, ale Python też może być 😉😉), który na podstawie parametru -c {uint} utworzy podaną ilość użytkowników o nazwie ‘student-{nr}’, z losowym hasłem oraz przypisze ich do grupy dodatkowej ‘students’ (utwórz tą grupę).
Skrypt powinien zapisywać efekty swojej pracy do pliku podanego w parametrze -f {string}.
Użyj utworzonego skryptu do wykreowania tylu użytkowników, ile wynosi twój numer zespołu.
Skrypt ten zapisz na server1 w katalogu domowym użytkownika root.
(10 pkt.)
- Zapisz każdorazowe logowanie użytkownika z grupy studenci do maszyny server1 w jej dzienniku systemowym, z prefixem ‘Student access: ‘. (5 pkt.)
- Na serwerze server2-internal Utwórz plik docker-compose w wersji trzeciej, w którym zdefiniujesz podstawową infrastrukturę dla aplikacji internetowej, trzy osobne kontenery:
- web serwer
- PHP
- MySQL
Infrastruktura powinna używać możliwie najnowszych wersji usług i udostępniać wynik funkcji phpinfo(); (15 pkt.)
Zapewnij komunikację pomiędzy kontenerami w odosobnionej sieci. (2 pkt.)
Skonfiguruj volumeny dockera lub mapowanie katalogu tak, aby dane zapisywane w bazie oraz pliki tworzone przez aplikację w jej katalogu pozostawały po wyłączeniu/restarcie infrastruktury (polecenie docker-compose down). (5 pkt.)
- Aplikację z zadania piątego udostępnij w internecie. Użyj serwera nginx na server1. Aplikację umieść pod inną nazwą domenową niż pliki z /srv/www/htdocs (domenę możecie wymyślić ale musi być teoretycznie “poprawnym” adresem hosta). (10 pkt.)
Zablokuj dostęp do aplikacji użytkownikom łączącym z adresów IP pochodzących z terytorium Federacji Rosyjskiej. Zapewnij automatyczne aktualizowanie blokady o nowe adresy IP. (16 pkt.)
- Z wykonanych zadań utwórz krótki raport (/root/raport.txt), w którym zawrzesz najistotniejsze informacje o dokonanej konfiguracji. Bardzo dobrze udokumentowane zadanie będzie dodatkowo punktowane.
Finały – część Linux
Do dyspozycji macie dwa serwery – jeden publiczny (server1) i jeden prywatny (server2-internal). Są one połączone siecią wewnętrzną (interfejsy eth1 lub eth2). Adres publiczny server1 znajdziesz w panelu Beyond (informacje w przesłanej instrukcji).
- Skonfiguruj serwer 2 w taki sposób, aby był on zarządzany przez serwer 1 za pomocą SALT. High state powinien konfigurować następujące rzeczy:
- instalacja pakietu apache2
- Podstawienie pliku /srv/www/html/index.html z następującą treścią
Witamy w zespole <nr zespołu>
- Na serwerze 1 utwórz lokalne repozytorium z pakietem nano (pobierz go np. stąd – http://rpmfind.net/linux/opensuse/distribution/leap/15.4/repo/oss/x86_64/nano-5.9-bp154.1.53.x86_64.rpm). Repozytorium powinno być podpisane za pomocą wygenerowanego przez Was klucza GPG. Repozytorium to następnie udostępnij w wybrany przez siebie sposób i dodaj do repozytoriów zyppera na serwerze 2.
- Wykorzystując serwer apache2 zainstalowany w 1. zadaniu udostępnij witrynę w Internecie. Na publiczny adres serwera 2 wskazuje rekord DNS teamXX.oedu.pl (gdzie XX to numer Waszego zespołu np.team01.oedu.pl). To pozwoli Wam podpiąć pod serwer certyfikat SSL (w taki sposób, aby przeglądarka nie wyświetlała żadnego ostrzeżenia) – zróbcie to.
- Udostępnij dysk /dev/vdb z serwera 1 za pomocą iSCSI na serwer 2. Zamontuj ten dysk w /mnt poprzez fstab.
- Skonfiguruj monitoring obu serwerów tak, aby zbierane były przynajmniej następujące informacje:
- użycie pamięci RAM
- użycie dysku
- użycie procesora
Narzędzie powinno oferować interfejs dostępny z poziomu przeglądarki (po adresie IP).
UWAGA: W tym zadaniu dodatkowo punktowana będzie czytelność zbieranych danych oraz forma ich prezentacji i dostępu do nich.