Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Logowanie przy pomocy kluczy RSA [SSH]
Offline
Tpk
Administrator


*******

Administratorzy
Liczba postów: 551
Liczba wątków: 228
Dołączył: Nov 2013
Reputacja: 11
Points: 504.72€
#1
Cześć! W tym poradniku chciałbym Wam przedstawić w jaki sposób możecie dwa razy skuteczniej chronić dostęp do swojego konta na zew. serwerze wykorzystując tak zwane logowanie za pomocą kluczy RSA. Klucze te to nic innego jak kryptografia wykorzystywana do uwierzytelniania użytkownika na serwerze zdalnym.
Szacuje się, że jest to metoda dużo bardziej bezpieczna oraz wygodniejsza w porównaniu z standardowym wprowadzaniem loginu i hasła stąd też jej popularność i zainteresowanie ze strony administratorów i nie tylko.

Przejdźmy jednak do sedna czyli w jaki sposób możecie wygenerować sobie własny klucz RSA oraz w jaki sposób go wykorzystywać w codziennej pracy z naszym serwerem.

Windows:
Aby skorzystać z kluczy RSA na platformie M$ musimy zaopatrzyć się w kilka programów, po pierwsze przyda nam się klient SSH, następnie oprogramowanie z pomocą którego wygenerujemy nasz własny klucz oraz na koniec menadżer naszych kluczy. Ja w tym poradniku posłużę się znanym chyba wszystkim programem Putty + Puttygen + Pageant. Jest to zestaw trzech prostych a przede wszystkim darmowych programów udostępnionych na licencji M.I.T. W zasadzie można by powiedzieć nawet, że jednego programu i dwóch dodatków do niego bo tak poniekąd jest (choć żaden z nich nie wymaga instalacji). Wszystkie je można pobrać na stronie projektu w sekcji "Alternative binary files".

// Generowanie klucza RSA:
Zaczynamy od wygenerowania naszego klucza RSA którym będziemy się posługiwać przy połączeniu z serwerem.
Tak więc uruchamiamy program Puttygen:

[Obrazek: 20170725204336000000-1298.png]

Wybieramy jak silny ma być nasz klucz - z ilu bit ma się składać oraz jaki typ klucza chcemy, przykładowe wartości to 1024, 2048 czy 4096 - polecam tą ostatnią ponieważ jest najmocniejsza. Jako rodzaj klucza wybieramy domyślną opcję czyli SSH-2 RSA.
Klucz to nic innego jak bardziej czy mniej złożone równanie matematyczne, tak więc zawsze lepiej podać większą wartość Wink
Naciskamy jeden z dwóch dostępnych przycisków "Generate" i niczym szaleńcy jeździmy kursorem po pustym polu robiąc ósemeczki tak długo aż procedura generowania klucza się zakończy, czyli mniej więcej do zobaczenia takiego obrazu:

[Obrazek: 20170725204525000000-2939.png]

Teraz uzupełniamy takie pola jak:
  • Key comment - komentarz dla klucza, nie przyda nam się do niczego innego jak do odróżniania go w gąszczu innych kluczy w Pageant (po prostu jego nazwa, możemy tam dać adres e-mail, nazwę serwera czy cokolwiek innego).
  • Key passphrase & Confirm passphrase - hasło służące do zdekodowania klucza, również wymagane przy dodawaniu go do menadżera. 
Gdy już wypełniliśmy wszystko, wybieramy opcje Save private key i zapisujemy nasz klucz prywatny który już za moment będziemy dodawać do Pageant.

Najlepiej w jakiejś zewnętrznej lokalizacji tak aby mimo wszystko mieć do niego łatwy dostęp ale żeby nie siedział on na głównej partycji systemowej (tak dla bezpieczeństwa).

Teraz uwaga! Zanim zamkniemy program Puttygen kopiujemy pole Key czy też bardziej uściślając pole "Public key for pasting into OpenSSH authorized_keys file".
Chodzi o to duże pole u góry widoczne od razu po wygenerowaniu klucza (tam gdzie robiliśmy ósemeczki kursorem) zaczynające się od ssh-rsa.

// Wrzucamy klucz na serwer
Aby nasz klucz był jakoś rozpoznawany po stronie serwera wypadałoby go tam jakoś dodać, tak więc uruchamiamy tymczasowo Putty i łączymy się z naszą maszyną, zwyczajnie przy pomocy loginu i hasła. Plik zawierający klucze przynajmniej w systemach Linux'owych znajduje się domyślnie w pliku ~/.ssh/authorized_key czyli w katalogu domowym użytkownika w ukrytym folderze o nazwie .ssh (kropka sugeruje ukrycie).
Tak więc musimy w zależności od użytkownika którego chcemy logować tym kluczem dostać się jakoś do tej ukrytej lokalizacji - zrobimy to komendą:

Kod:
cd /home/NAZWA_USERA/.ssh/

Dzięki temu przejdziemy do wybranej lokalizacji (można również podać tą ścieżkę wyżej - ze znakiem tyldy, a efekt będzie taki sam). Teraz edytujemy plik authorized_key na przykład przy pomocy nano, dodając na końcu skopiowany klucz:

Kod:
nano authorized_key

Schodzimy na sam dół pliku i wybierając kombinację klawiszy Shift + Insert kopiujemy zawartość schowka Windows'a wprost do konsoli Putty.
Kolejno wybieramy Ctrl + X i zatwierdzamy dokonane zmiany Yes (Y) / Tak (T) i enter. 
Od razu można to zrobić również dla root'a, dla niego ścieżka wygląda nieco inaczej /root/.ssh/authorized_key
Ale tym razem innym sposobem, choć efekt będzie taki sam, zrobimy to z wykorzystaniem tzw. potoków.
Najpierw jednak chcąc coś takiego zrobić (o ile mamy możliwość logowania się na konto root'a przez SSH i nie jest to zablokowane w konfiguracji) podnosimy sobie uprawnienia, przelogowując się na tymczasowo na to konto poleceniem:

Kod:
sudo su

Następnie udajemy sie do właściwego katalogu:

Kod:
cd /root/.ssh

I korzystając z wcześniej wspomnianych potoków wykonamy sobie polecenie echo kierując dane do pliku authorized_key:

Kod:
echo TUTAJ_KLUCZ(ssh-rsa) >> authorized_key

Gdy już sobie poradziliśmy, możemy się rozłączyć, ponieważ to tyle co trzeba było zrobić po stronie serwera.

// Dodawanie klucza do Putty:
Mając dodany nasz serwer jako profil w Putty (bo zapewne tak macie) ładujemy go wskazując na jego nazwę i wybierając Load po czym przechodzimy w rozwijanym menu (z lewej) do kategorii Connection i rozwijamy SSH po czym przechodzimy do sekcji Auth:

[Obrazek: 20170725212153000000-7187.png]

W tej zakładce w polu Private key file for authentication wskazujemy ścieżkę do pliku z naszym kluczem prywatnym.
Cofamy się na chwile do strony głównej programu (Session z listy po lewej) i wskazując na nazwę naszego serwera wybieramy Save. 
Dzięki czemu wszystko zostanie zapisane do naszego profilu.
Jeżeli teraz uruchomimy nową sesję z naszym serwerem (otworzymy połączenie) będzie on od nas chciał zdekodowania naszego klucza podając hasło (to podane przy generowaniu), właśnie po to nam jest kolejny trzeci  program czyli Pageant.

// Dodajemy klucz do menadżer'a:

Zanim jednak to zrobimy tak aby wszystkie programy były w jednym miejscu i nie śmieciły nam zbytnio w systemie dobrze byłoby je wrzucić do Startu w miejscu gdzie znajduje się katalog z głównym programem Putty - czyli wrzućmy zarówno Pageant jak i Puttygen do jakiejś przykładowej lokalizacji Menu > Start > Putty. Choć nie jest to wymagane, możemy wrzucić nawet sam Pageant ponieważ drugi z programów po wygenerowaniu klucza już raczej nam się na nic nie przyda (możemy go zwyczajnie usunąć).

No dobra mając to uruchamiamy Pageant, zostanie on załadowany domyślnie do paska (właściwie to do tray'u), uruchamiamy go dwuklikiem i jak widzimy, mamy tylko dwie opcje dodania klucza (Add Key) bądź jego usunięcia (Remove Key):

[Obrazek: 20170725213649000000-2321.png]

Dodajemy klucz podając ścieżkę do jego klucza prywatnego.

Ten prosty menadżer kluczy będziemy uruchamiać za każdym razem (jeszcze przed pomyśleniem, że chcemy wejść na jakiś serwer przy pomocy SSH). 
Jednak każdorazowe dodawanie naszego klucza po uruchomieniu programu może być na dłuższą metę męczące i nie będzie to zbyt wygodne a przecież o to właśnie od samego początku nam chodziło. Dlatego wykonamy sobie jeszcze małą modyfikację tego programu, edytując go minimalnie. 
W tym celu udamy się do Start > Putty czyli tam gdzie go wcześniej umieściliśmy i PPM wybieramy Właściwości:

[Obrazek: 20170725214327000000-9082.png]

W nowym oknie modyfikujemy "Cel" czy też "Target" programu dodając do niego ścieżkę bezwzględną do lokalizacji naszego klucza:

Kod:
"C:\Program Files (x86)\PuTTY\pageant.exe" "D:\key.ppk"

Teraz wybieramy zastosuj (będzie to wymagało uprawnień administratora) a następnie Ok.
Od teraz od razu po uruchomieniu samego Pageant będziemy proszeni o hasło do naszego klucza RSA. 
W ten sam sposób można ustawić sobie nawet kilka kluczy które po uruchomieniu kolejno będą prosić nas o podanie hasła:

Kod:
"C:\Program Files (x86)\PuTTY\pageant.exe" "D:\key.ppk" "D\:key1.ppk"

Teraz cała procedura jaką będziemy musieli wykonać aby bez hasła połączyć się z naszym serwerem to:
  1. Uruchomić Pageant i podać hasło do klucza.
  2. Uruchomić Putty i wywołać nową sesje (połączenie) z naszym serwerem.

&Dlaczego wymagane jest hasło skoro mieliśmy logować się bez hasła?
Pewnie jest to jedno z pytań które w tym momencie ci się nasuwa.
A to jest akurat bardzo proste - hasło chroni jedynie plik z naszym kluczem przed niepowołanym dostępem - równie dobrze możemy go nie podawać jednak w przypadku jakiejkolwiek kradzieży danych z naszego dysku atakujący ma na tacy cały dostęp do komputera oraz dodatkowo naszego serwer'a.
I tak jest to dużo szczęśliwsze rozwiązanie w porównaniu do każdorazowego uruchamiania Pageant, następnie naciskania przycisku "Add key", ręcznego wskazywanie lokalizacji i podawania klucza deszyfrującego - pominęliśmy przy tym te dwa niepotrzebne kroki.

Linux:
Często mówi się o tym, że Linux (niezależnie od dystrybucji) jest wręcz systemem stworzonym dla develeperów i po części jest to prawdą (od dev dla dev) - ponieważ większość z podstawowych zadań jakie tutaj wykonujemy - możemy po pierwsze w całości wykonać z terminala a po drugie dużo szybciej niż w przypadku okienek M$ - jednak nie jest to wykład na ten temat, ale dodałem ten tekst tylko dlatego, że pójdzie nam po prostu za szybko i zbyt dziecinnie łatwo w porównaniu do Windy.

Pierwsze co zrobimy to oczywiście połączymy się z serwerem (min raz), poprzez polecenie:

Kod:
ssh root@jakasstrona.pl

Ewentualnie dopisując -p oraz zmieniając port:
Kod:
ssh -p 10248 root@jakasstrona.pl

Następnie zostaniemy w zależności od dystrybucji możemy zostać zapytani o to czy dodać host do zaufanych - raczej tak (Yes).
Kolejno wylogowujemy się i logujemy ponownie poleceniem:

Kod:
ssh-copy-id root@jakasstrona.pl

Lub tak jak poprzednio zmieniając nieco polecenie na:

Kod:
ssh-copy-id -p 10248 root@jakasstrona.pl

Podajemy raz jeszcze hasło i gotowe!
Od teraz powinniśmy być w stanie logować się za pomocą swojego klucza RSA.

W zależności od dystrybucji możemy się spotkać z różnym podejściem do tego przykładu, np. w Ubuntu musimy np. wprowadzić po przejściu przez całą powyższą procedurę ponownie standardowe polecenie tak jak na początku, aby następnie (w przypadku wersji Desktop) wyskoczył komunikat o padanie hasła do naszego prywatnego klucza RSA które oczywiście podajemy zaznaczając przy tym opcje automatycznego odblokowania klucza tuż po zalogowaniu się użytkownika w systemie.

Jeżeli macie jakieś pytania czy problemy z wygenerowaniem klucza zapraszam do sekcji komentarzy poniżej - postaram się odpowiedzieć na każde o ile tylko będę w stanie.
Tymczasem dzięki za uwagę i na razie Wink

Poradnik napisany dla TcgForum.pl i zabrania się jego kopiowania oraz rozpowszechniania bez zgody autor'a!
Nie ma programów uniwersalnych, są tylko te zaprogramowane na odpowiednio dużą ilość wyjątków -- Tpk ( I July 2k17 )


Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości