Inżynier na miarę XXI wieku
AUTORYZACJA Password Public Key Infrastructure Użytkownik posiada dwa klucze: public i private. W przypadku próby logowania dostarczany jest, przez użytkownika klucz publiczny. Klucz jest weryfikowany przez serwer i w formie szyfrowanej przekazywany użytkownikowi. Najpowszechniej stosowana. Użytkownik podaje ID i hasło. Baza systemowa ACL (access control list) określa reguły dostępu do zasobów. Knowledge-Based Authentication Biometrics Często stosowany w instytucjach finansowych. Bazuje na tajnych hasłach, jak PIN. Identyfikacja na podstawie cech anatomicznych i fizjologicznych, przykładowo odcisk palca, skanowanie siatkówki, głosu.
Nie zawsze standardowy mechanizm logowania zapewnia odpowiedni poziom bezpieczeństwa. Zwłaszcza jeżeli miałoby to być logowanie zdalne. Ciekawą propozycją jest SSH, czyli Secure SHell realizujący standard protokołów komunikacyjnych o architekturze C/S, przez public-key cryptography Jego specyfikację tworzą: RFC 4250, The Secure Shell (SSH) Protocol Assigned Numbers RFC 4251, The Secure Shell (SSH) Protocol Architecture RFC 4252, The Secure Shell (SSH) Authentication Protocol RFC 4253, The Secure Shell (SSH) Transport Layer Protocol RFC 4254, The Secure Shell (SSH) Connection Protocol RFC 4255, Using DNS to Securely Publish Secure Shell (SSH) Key Fingerprints RFC 4256, Generic Message Exchange Authentication for the Secure Shell Protocol (SSH) RFC 4335, The Secure Shell (SSH) Session Channel Break Extension RFC 4344, The Secure Shell (SSH) Transport Layer Encryption Modes RFC 4345, Improved Arcfour Modes for the Secure Shell (SSH) Transport Layer Protocol
Na początek - dla potrzeb ćwiczeń - dodajmy dodatkowego użytkownika. Niech to będzie użytkownik: czerwiec z hasłem 06.2012...
06.2012 06.2012
Rezultat działań powinien być następujący
Upewnijmy się jeszcze co do możliwości logowania.
Oczywiście, jeżeli chcemy skorzystać z tej usługi, to musi być ona uruchomiona. linux-bwja:~ # rcsshd status Checking for service sshd running Przy pierwszym logowaniu pojawi się prośba o wygenerowaniu pary kluczy (dla macierzystego konta i użytkownika) kurs2012 kurs2012
kurs2012 kurs2012 kurs2012 co się stało? 06.2012 i jest OK
SSH tworzy w katalogu domowym swój podkatalog gdzie przechowuje klucze.
kurs@linux-bwja:~> ls.ssh/ -l razem 4 -rw-r--r-- 1 kurs users 219 kwi 18 12:37 known_hosts kurs@linux-bwja:~> cat.ssh/known_hosts 127.0.0.1 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEA0C5cXPNw7BnOnbHSjdV0cJA+7kLcezhfwK1/yoYm qbcmoggtzxmfe1ezu1akzyeg9hy1vfmfp7gcslj/g4irnhgozbrjvt6zifax/kjnthsw 8G+0R7hf1r+Ue+msTcbtQ1j17xBySxTjqT7hs1d3L+MWgLVJhZXTiQ3MK9SWbrM= Usuniemy ten katalog i wygenerujemy jeszcze raz klucz, tym razem bez hasła.
w tym momencie naciskamy <ENTER>
Przyjrzyjmy się jeszcze raz zawartości foldera /home/kurs/.ssh klucz prywatny nie wolno go przenosić ani udostępniać!!! kurs@linux-bwja:~> ls -l.ssh/ razem 8 -rw------- 1 kurs users 1675 kwi 18 12:48 id_rsa -rw-r--r-- 1 kurs users 397 kwi 18 12:48 id_rsa.pub klucz publiczny możemy go przesłać w miejsce docelowe nawet e-mail'em
!!! Zawartość ~/.ssh/id_rsa
Zawartość publicznego ~/.ssh/id_rsa.pub zwróćmy uwagę na ten wpis
Kopiujemy klucz publiczny na miejsce docelowe, korzystając z komendy scp (choć nie jest to konieczne). kurs@linux-bwja:~> scp.ssh/id_rsa.pub czerwiec@127.0.0.1:~/ The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established. RSA key fingerprint is f8:17:2e:72:3b:5b:dd:f9:b2:39:5d:d6:22:69:48:87. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '127.0.0.1' (RSA) to the list of known hosts. Password: 06.2012 id_rsa.pub 100% 397 0.4KB/s 00:00 W ten sposób nasz klucz publiczny, czyli klucz dla użytkownika: kurs logującego się z serwera: linux-7rjp znalazł się w miejscu docelowym - tzn na koncie użytkownika czerwiec. czerwiec
Logujemy się w miejscu docelowym kurs@linux-bwja:~> ssh czerwiec@127.0.0.1 Password: 06.2012 Last login: Thu Apr 18 12:41:24 2013 from localhost Sprawdźmy zawartość folderu domowego czerwiec@linux-bwja:~> ls -l razem 8 drwxr-xr-x 2 czerwiec users 4096 kwi 18 12:32 bin -rw-r--r-- 1 czerwiec users 397 kwi 18 13:00 id_rsa.pub Jeżeli użytkownik nie posiada odpowiedniego katalogu, to tworzymy czerwiec@linux-bwja:~> mkdir.ssh Kopiujemy zawartość klucza nadając mu odpowiednią nazwę czerwiec@linux-bwja:~> cat id_rsa.pub >>.ssh/authorized_keys
Sprawdzamy czerwiec@linux-bwja:~> cat.ssh/authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA9GjJ8YQ5KaOyc3X9YIjqrMrs79upoyYMHTOrI5at jztsmaq75bacosmjmdxjy+ltkudump5b+i2nsmiby5bpve3f8ptb8erwal1hxhs+zuzw H5LjYppHNLXPekI+Dr/zXKTokQSwlrkcOdMxcFZ5JckrKuGNKXE+mPD19MVdI+wRq4C5 GLvVDxpkFzOqYyj+ +2C8vNKPeOGHrFuE3eTzPDYSmBjQPCdCWC4C1XwNsZSg5vQsbf6hXAqfeU5T248BYbbk rko6elyrkbldyecyoz67r4suwhjfluhj0nfhifq1rzmajqg+sl7v6t6cotuz8gj2xsds BlAudlL2pU69Ww== kurs@linux-bwja i dla pewności porównanie czerwiec@linux-bwja:~> diff id_rsa.pub.ssh/authorized_keys Pliki są identyczne - możemy usunąć i wylogować się czerwiec@linux-bwja:~> rm id_rsa.pub czerwiec@linux-bwja:~> exit logout Connection to 127.0.0.1 closed.
Teraz logowanie na koncie czerwiec@127.0.0.1 jest już bardzo proste, nie wymaga nawet podania hasła. kurs@linux-bwja:~> ssh czerwiec@127.0.0.1 Last login: Thu Apr 18 13:13:45 2013 from localhost czerwiec@linux-bwja:~> id uid=1001(czerwiec) gid=100(users) grupy=16(dialout),33(video),100(users) czerwiec@linux-bwja:~> exit logout Connection to 127.0.0.1 closed. Korzystając z tego bardzo sprawnego i bezpiecznego mechanizmu, trzeba pamiętać o wpisie identyfikującym host i użytkownika.
Korzystając z tego bardzo sprawnego i bezpiecznego mechanizmu, trzeba pamiętać o wpisie kurs@linux-bwja:~> cat.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA9GjJ8YQ5KaOyc3X9YIjqrMrs79upoyYMHTOrI5at jztsmaq75bacosmjmdxjy+ltkudump5b+i2nsmiby5bpve3f8ptb8erwal1hxhs+zuzw H5LjYppHNLXPekI+Dr/zXKTokQSwlrkcOdMxcFZ5JckrKuGNKXE+mPD19MVdI+wRq4C5 GLvVDxpkFzOqYyj+ +2C8vNKPeOGHrFuE3eTzPDYSmBjQPCdCWC4C1XwNsZSg5vQsbf6hXAqfeU5T248BYbbk rko6elyrkbldyecyoz67r4suwhjfluhj0nfhifq1rzmajqg+sl7v6t6cotuz8gj2xsds BlAudlL2pU69Ww== kurs@linux-bwja identyfikującym host i użytkownika. kurs@linux-bwja:~> whoami kurs kurs@linux-bwja:~> hostname linux-bwja
Lightweight Directory Access Protocol (LDAP) LDAP to protokół usług katalogowych a więc obsługi najrozmaitszych baz danych katalogowych. Jedną z częściej stosowanych jego implementacji w praktyce jest OpenLDAP O ile usługi takie można zrealizować i się realizuje za pośrednictwem serwerów baz danych architektury C/S, to z racji zbyt małej efektywności tego się nie robi. W jego obrębie stosowany jest hierarchiczny model baz danych zatem dane organizuje się w postaci struktur drzewiastych. Komunikacja realizowana w oparciu o protokół TCP/IP
Formalnie bazuje na standardzie X.500 X.500 X.501 X.509 X.511 X.518 X.519 X.520 X.521 X.525 X.530 ISO/IEC 9594-1 The Directory: Overview of concepts, models and services ISO/IEC 9594-2 The Directory: Models ISO/IEC 9594-8 The Directory: Public-key and attribute certificate frameworks ISO/IEC 9594-3 The Directory: Abstract service definition ISO/IEC 9594-4 The Directory: Procedures for distributed operation ISO/IEC 9594-5 The Directory: Protocol specifications ISO/IEC 9594-6 The Directory: Selected attribute types ISO/IEC 9594-7 The Directory: Selected object classes ISO/IEC 9594-9 The Directory: Replication ISO/IEC 9594-10 The Directory: Use of systems management for administration of the Directory Jego najwcześniejsza wersja powstała w 1993 a autorami byli Tim Howes Steve Kille Wengyik Yeong
Pierwszym krokiem musi być instalacja i uruchomienie serwera.
Generalnie dostępne są 4 sposoby uwierzytelnienia: anonimowo, jako guest login/password SLL/TLS poprzez serwer PROXY W konfiguracji startowej przyjęliśmy TLS Transport Layer Security jest to wariant SSL Secure Socket Layer opracowany przez Netscape Communications celem ochrony poufności poprzez szyfrowanie i odpowiednie uwierzytelnienie.
ath admin 31415 31415
LDAP daje łatwość odwzorowania każdej struktury hierarchicznej, na przykład organizacji, domen, podziałów terytorialnych czy geograficznych. 1. Wpisy do katalogu entries są obiektami jednej lub wielu klas 2. Wpisy są identyfikowane przez DN= ( Distinguished Name) 3. Wpisy jako obiektu podsiadają atrybuty są one zależne od schematów schemat domyślny
Przykładowe atrybuty domyślne: UID (User Identifier) - identyfikator użytkownika RID (Relative Identifier) - liczba reprezentująca względny identyfikator użytkownika CN (Common Name) - imię SN (Surname) - nazwisko OU (Organizational Unit) - jednostka organizacyjna O (Organization) - jednostka lub organizacja DC (Domain Component) - składnik nazwy domenowej C (Country) - państwo ST (State) stan/prowincja/województwo np.śląskie o=ath L (Location) lokalizacja np. miejscowość np. Bielsko-Biała CN (Common Name) nazwa obiektu Przykładowo: DN= o=ath, ou=wbmii, cn=kryspin Mirota,c=Polska ou=wbmii cn=kryspin Mirota
Użytkownik może: dodawać wpisy katalogowe ldapadd modyfikować ldapmodify usuwać ldapdelete a nade wszystko przeszukiwać ldapsearch
Dziękuję za uwagę Inżynier na miarę XXI wieku