Cwiczenia do wykonania

  1. Instalacja systemu linux: W ramach cwiczenia nalezy zainstalowac 3 kopie systemu linux (Debian) w wirtualnej maszenie Sun VirtualBox. Kazdy z systemow powinien posiadac 2 karty sieciowe, jedna podlaczona do serwera NAT (dostep do internetu), druga podlaczona do wspolnej sieci laczacej wszystkie systemy. Siec wewnetrzna nalezy skonfigurowac tak, aby mozliwa byla bezposrednia komunikacja pomiedzy systemami (IP z puli adresow dla sieci prywatnych)
  2. Tworzenie kont uzytkownikow: Nalezy opracowac skrypt zakladajacy konta uzytkownikow na bazie listy w pliku tekstowym w formacie: username:User real name:password. Konta powiny miec automatycznie zakladane katalogi domowe, ustawiane dane personalne oraz haslo. W wersju finalnej skrypt powinien byc programem wykonywalnym bez koniecznosci podawania komendy interpretera w lini polecen. Podpowiedz: do ustawiania hasla w formacie wymaganym w pliku /etc/shadow mozna uzyc polecenia openssl
  3. Konfiguracja polecenia sudo: polecenie powinno pozwalac na wykonywanie wszystkich polecen dla wybranego urytkownika z uprawnieniami root po podaniu hasla, oraz polecen poweroff i shutdown wszystkim uzytkownikom bez podawania hasla
  4. Konfiguracja logow systemowych: Nalezy zapoznac sie z konfiguracja programu syslog lub jego odpowiedzika. W ramach cwiczenia nalezy:
  5. Konfiguracja serwera i klienta ssh: Nalezy upewnic sie czy usluga ssh dziala. Nalezy skonfigurowac usluge tak, aby nie bylo mozliwe uzycie protokolu w werski 1 oraz logowania sie na konto root poprzez ssh. Dla wybranej pary kont nalezy wygenerowac klucze autoryzacyjne i umozliwic logowanie sie miedzy nimi wykorzystujac te klucze. Podpowiedz: w przypadku problemow nalezy sprawdzic logi systemowe (/var/log/auth.log).
  6. Konfiguracja serwera www: Nalezy zainstalowac i uruchomic serwer www. W ramach cwiczen nalezy zmodyfikowac glowna strone. Nalezy ograniczyc dostep dla czesci stron uzywajac standarowych mechamizmow autoryzacji. Zadanie nalezy zrealizowac poprzez lokalne pliki konfiguracyjne .htaccess.
  7. Generacja certyfikatu typu self-signed dla serwera www: Nalezy wygenerowac certyfikat typu self-signed dla serwera www. Do generowania certyfikatu mozna uzyc programu openssl.
  8. Poszukiwanie potencjalnie niebezpiecznych plików w systemie: Uzywajac programu find przeszukac caly system plikow pod katem:
  9. Pliki typu SUID: w ramach testow nalezy przecwiczyc zachowanie sie plikow z atrybutem SUID i wlascicielem root. Nalezy zbadac zachowanie sie tego atrybutu dla kopii programu powloki (bash) oraz dla innego typu programu (np. edytora). Po uruchomieniu takiego programu nalezy sprawdzic czy mozliwy jest dostep do chronionych plikow (np. czy mozna odczytac plik /etc/shadow).
  10. Priorytety procesow: Zapoznac sie z programami pozwalajacymi na zmiane priorytetow procesow w systemie. W celu przetestowania funkcjonowania ustawien nalezy przygotowac program obciazajacy procesor i zaobserwowac podzial czasu procesora pomiedzy 2 takie dzialajace programy dla roznych ustawien priorytetow. Nalezy okreslic mozliwy zakres zmian priorytetow i mozliwosc ich zmiany przez superuzytkownika i uzytkownika nieuprzywilejowanego.
  11. System hasel jednorazowych: Nalezy zainstalowac i uruchomic przynajmniej jeden z systemow hasel jednorazowych. W ramach testow nalezy skonfigurowac go wylacznie dla serwera ssh poprzez konfiguracje PAM (/etc/pam.d). Ostateczny schemat procesu logowania powinien byc nastepujacy:
    1. 1. Logowanie za pomoca kluczy autoryzacyjnych
    2. 2. W przypadku niepowodzenia 1. logowanie za pomoca hasla wielokrotnego
    3. 3. W przypadku niepowodzenia 2. logowanie za pomoca hasla jednorazowego
  12. Kon trojanski: opracowac skrypt podmieniajacy oryginialny program login dla wybranej konsoli, ktory przypomina standardowy proces logowania uzytkownika zapisujac w pliku podawane haslo i uzytkownika. Skrypt powinien sprawdzac czy haslo podane jest prawidlowe (openssl) i jedynie w taki przypadku logowac uzytkownika. Zmian konfiguracji logowania wybranej konsoli nalezy poszukiwac w pliku /etc/inittab.
  13. Tunelowanie portow: uzywajac programu ssh nalezy przeprowadzic tunelowanie wybranego portu (np. 80) na zdalna maszyne. Nalezy przecwiczyc: tunelowanie z lokalnej maszyny, na zdalna maszyne, oraz tunelowanie portu z innego komputera. Dostep do tunelowanego portu powinien byc mozliwy zarowno z lokalnego jak i innego komputera (opcja gateway).
  14. Tunelowanie strumieni: za pomoca ssh nalezy wykonac zdalna komende archiwizacji wybranego folderu (tar), dane przeslac strumieniem przez ssh na zdalna maszyne i utworzyc plik z archiwum.
  15. Konfiguracja serwera DHCP: nalezy zainstalowac i uruchomic serwer DHCP dzialajacy dla wspolnej sieci dla maszyn wirtualnych i przydzielic stale adresy IP dla pozostalych maszyn. Interfejsy tych maszyn nalezy przelaczyc w tryb dhcp.
  16. Konfiguracja serwera DNS: nalezy zainstalowac i skonfigurowac serwer DNS dzialajacy jako forwarder. Dla pozostalych maszyn nalezy zmienic domyslny serwer DNS na skonfigurowany w tym cwiczeniu. Do testowania dzialania serwera mozna uzyc polecenia nslookup.
  17. Zapora ogniowa: nalezy zbadac mozliwosci konfiguracji i funkcjonowanie zapory ogniowej (iptables). Na poczatku nalezy sprobowac zablokowac dostep do wybranej uslugi (np. port 80) z opcja DROP oraz REJECT. Zbadac mozliwosci zwracania roznych komunikatow ICMP dla opcji REJECT (do testow proponuje uzyc polecenia telnet IP PORT). W dalszej czesci nalezy opracowac skrypt konfigurujacy zapore w nastepujacy sposob: Maszyna A - serwer z zapora, Maszyna B - potencjalnie bezpieczny komputer, Maszyna C - potencjalnie niebezpieczny komputer. Maszyna B powinna miec dostep do wszystkich uruchomionych uslug na maszynie A. Maszyna C powinna miec dostep jedynie do uslug zapewniajacych bezpieczny transfer danych (ssh, https) oraz na potrzeby poprawnego funkcjonowania do uslug DHCP i DNS. Wszystkie inne polaczenia powinny byc zapisywane w logach systemowych a nastepnie odrzucane.
  18. Synchronizacja czasu: opracowac skryp, ktory automatycznie synchronizuje czas systemowy z wybranym serwerem czasu podczas statyu systemu, natomaiast przepisuje czas systemowy do zegara sprzetowego podczas zamykania systemu.
Materialy do wykladu
Darmowy rozdzial ksiazki o zbezpieczeniach sieci