System operacyjny UNIX - użytkownicy
Konta użytkowników Mechanizm kont użytkowników został wprowadzony, gdy z systemów komputerowych zaczęła korzystać większa ilość osób, niezależnie od tego, ile osób mogło pracować naraz na jednym komputerze. Konto użytkownika to identyfikator <user name> oraz dołączone do niego zasoby, pliki i dane. Maksymalna długość identyfikatora użytkownika wynosi 8 znaków. Termin konto <account> wziął się z bankowości, gdyż pieniądze na koncie bankowym zużywane są w podobny sposób, co zasoby w systemie komputerowym. (Dotyczy to zarówno miejsca na dysku, co zdolności obliczeniowe komputera).
Konta użytkowników Wszystkie potrzebne informacje na temat kont użytkowników zawarte są w pliku /etc/passwd. Struktura jednego wpisu to: username:x:uid:gid:gecos:home_dir:shell UID liczbowy identyfikator użytkownika; GID liczbowy identyfikator grupy; GECOS General Electric Comprehensive Operating System
Typowe konta użytkowników w systemie Linux
Mechanizm szyfrowania haseł Początkowo w systemach UNIX hasła przechowywane były w pliku /etc/passwd, na pozycji zaraz po nazwie użytkownika. Wadą tego rozwiązania było to, że każdy użytkownik w systemie ma dostęp to tego pliku i teoretycznie mógłby rozkodować hasła innych użytkowników. Dlatego pod koniec lat osiemdziesiątych wprowadzono mechanizm shadow passwords. W tej metodzie plik /etc/passwd dalej jest przechowywany w formie jawnej, ale zamiast hasła wprowadzony jest do niego znak x, a hasła przechowywane są w pliku /etc/shadow, do którego dostęp ma jedynie administrator systemu i członkowie jego grupy.
Mechanizm szyfrowania haseł Hasła są przetwarzane w ten sposób, znając jawne hasło można było je łatwo zakodować, i jednocześnie żeby trudno było przejść z postaci zakodowanej do postaci jawnej hasła. Algorytm realizujący takie zadanie nazywa się jednokierunkową funkcją haszującą <one-way hash function>. Gdy użytkownik wprowadza pierwszy raz wybrane hasło to zostaje ono zakodowane przy użyciu pewnej losowo wybranej wartości, nazywanej salt. Dokonuje się tego na 4096 sposobów. Oznacza to, że każdy łańcuch znaków może być zakodowany na 4096 sposobów. Typowa długość hasła w systemach UNIX to 8 znaków.
Mechanizm szyfrowania haseł Salt i hasło w postaci zakodowanej przechowywane jest w pliku /etc/passwd lub /etc/shadow. Struktura pliku shadow jest następująca: Poszczególne pola to: identyfikator użytkownika; zakodowane hasło lub znak specjalny *,!, lub!!; ilość dni od epoki do ostatniej zmiany hasła; ilość dni do kiedy zmiana hasła będzie dozwolona; ilość dni od kiedy zmiana hasła będzie konieczna; ilość dni od ostrzeżenia do wygaśnięcia konta; ilość dni do momentu trzeba zmienić hasło do momenty gdy konto zostanie wyłączone; ilość dni od momentu gdy konto wygasło; pole zarezerwowane.
Mechanizm szyfrowania haseł Proces logowania się do systemu 1. Inicjowane jest logowanie się do systemu, uruchamiany program getty; 2. Użytkownik podaje swój identyfikator oraz hasło. 3. System odczytuje wartość salt z pliku /etc/passwd lub /etc/shadow. 3. Następnie system zakodowuje podane przez użytkowania hasło, przy użyciu wartości salt odczytanej z pliku passwd lub shadow. 4. System porównuje wartości odczytane i zakodowane, i jeśli są zgodne to logowanie jest możliwe i uruchamiana jest powłoka systemowa.
Bezpieczeństwo haseł Złe hasło: michal12 Trochę lepsze hasło: mich12al Dobre hasło: K4HF5T3V Typowym atakiem na system komputerowym jest atak słownikowy dictionary attack polega na generowaniu haseł na podstawie słownika
Środowisko użytkownika Katalog domowy: ~user /home/users/michal Pliki określające środowisko pracy użytkownika: /etc/profile, /etc/bashrc, /etc/skel/, /etc/motd.bashrc,.bash_logout,.bash_profile.history.tcshrc
Grupy użytkowników System grup użytkowników wprowadzono aby umożliwić współużytkowanie tych samych zasobów przez wielu użytkowników. Dodatkowo grupy pozwalają na zawężenie dostępu do pewnych zasobów (np. drukarka, napęd dyskietek) dla wygranego grona użytkowników. Początkowo użytkownik mógł być członkiem tylko jednej grupy, ale możliwe było przełączanie między aktywną grupą. Plik definiujący grupy użytkowników /etc/group ma podobną strukturę do pliku /etc/passwd. Możliwe jest uzyskanie członkostwa w grupie nie będąc formalnie wpisanym do powyższych plików, jeśli grupa ma ustawione hasło i dany użytkownik je zna.
Grupy użytkowników - pierwsze pole to nazwa grupy; - drugie to hasło przypisane grupie; - trzecie to systemowy identyfikator grupy; - czwarte to lista użytkowników, którzy są członkami grupy. Grupa o identyfikatorze 0 jest specjalna i do niej należą osoby o uprawnieniach administratora systemu.
Przejścia między kontami użytkowników Do przejść pomiędzy kontami użytkowników służy program su (substitute user). W wyniku jego działania uruchomiona zostaje nowa powłoka, której dla której przypisane jest UID nowego użytkownika. Aby zwykły użytkownik mógł wykonać ten program, musi jednak znać hasło nowego użytkownika. Program whoami zwraca bieżący identyfikator użytkownika. UID może być rzeczywiste (real UID), używane po zalogowaniu się, lub po wykonaniu polecenia su. Może również być przydzielone (effective UID), które ustawiane jest po wykonaniu programu, który ma ustawioną cechę SUID. Te same reguły dotyczą GID.
Usługi bez uwierzytelniania System UNIX umożliwia realizowanie usług takich jak logowanie do systemu (rlogin), kopiowanie plików (rcp) i uruchomienie powłoki (rsh) na zdalnym komputerze bez podawania na nim hasła dostępu. Dzieje się tak gdy dwa komputery skonfigurowane są jako równoważne. Pliki konfiguracyjne to /etc/hosts.equiv dla całego systemu i ~/.rlogin dla pojedynczego użytkownika. Jest to archaiczny system dzielenia zasobów w sieci i ogólnie jest postrzegany jako zagrożenie dla bezpieczeństwa systemu. Przede wszystkim problemem jest jawne przekazywanie danych między komputerami (bez szyfrowania). Dodatkowo ustawienie dostępu do konta poprzez rlogin powoduje niejako utratę kontroli nad nim.
Sieciowe logowanie się do systemu Usługi typu rlogin nie sprawdziły się ze względu na zagrożenia dla bezpieczeństwa systemu. Dlatego równolegle z nimi rozwijała się usługa telnet, która umożliwia połączenie się z odległym komputerem w taki sam sposób, jakby użytkownik logował się lokalnie. Jej zaletą jest brak konieczności jawnego ustawiania parametrów dostępu do połączenia w jawnych plikach oraz mniejsza możliwość powstania włamania do systemu. Wadą telnetu jest to, że połączenie sieciowe nie jest szyfrowane. Nowszy sposób to użycie usługi typu ssh (secure shell). Połączenie to jest szyfrowane przy użyciu kluczy publicznych. Dzięki niemu możliwe jest sieciowe logowanie się na inny komputer oraz przesyłanie plików, jednak całe połączenie jest szyfrowane, wobec czego zarówno dane, jak i hasła są chronione.
Scentralizowane konta użytkowników W dużych organizacjach potrzebne okazało się potrzebne, aby konta użytkowników były dostępne z różnych komputerów w taki sam sposób. Pierwszym rozpowszechnionym standardem który to umożliwiał był NIS (Network Information System). Jego idea to ustawienie kont i haseł użytkowników na serwerze, dostęp do niego przez usługę RPC (Remote Procedure Call) oraz dostęp do kont użytkowników przez sieciowy system plików NFS. Problemem okazało się zabezpieczenie usługi NIS przed przesyłaniem poufnych danych do niepowołanych użytkowników oraz przesyłanie danych bez szyfrowania. Pierwszą próbą rozwiązania tych problemów było wprowadzenie usługi NIS+. Dane przesyłane są w sposób zaszyfrowany, przy czym kluczem do ich odszyfrowania jest hasło użytkownika mgr oraz Michał klucz Popławski, tajny i klucz.
Scentralizowane konta użytkowników W roku 2002 firma Sun Microsystems wycofała z użycia w swoich produktach system NIS/NIS+ i w jego miejscu wprowadziła mechanizm LDAP (Lightweight Directory Access Protocol). Protokół ten był szczególnie rozwijany przez firmy telekomunikacyjne i zorientowany jest na wymianę danych zorganizowanych w katalogi. I dlatego LDAP jest zorientowany jak baza danych. W systemach typu UNIX wykorzystywany jest do przesyłania takich danych jak UID, hasło, katalog domowy i wykorzystywana powłoka. Jego najważniejsze zalety to używanie protokołu TCP/IP, wykorzystywanie jednego portu do komunikacji niezabezpieczonej i drugiego do szyfrowanej.
Literatura The Linux Documentation Project http://www.tldp.org/ Practical UNIX & Internet Security http://docstore.mik.ua/orelly/networking/puis/index.htm sfsf
Pytania? 19
Dziękuję za uwagę! 20