Jeżeli Twój zdalnie dostępny serwer VPS jest widoczny w Internecie, w razie możliwości, powinieneś zastosować publiczny klucz autoryzacji zamiast hasła. Spowodowane to jest tym, że klucze SSH zapewniają większy stopień bezpieczeństwa w porównaniu z zastosowaniem zwykłego hasła. Hasło może być złamane poprzez atak brute-force, natomiast odczytanie kluczy SSH tylko przez brute-force jest prawie niemożliwe. Z autoryzacją za pomocą publicznego klucza – bezpieczeństwo serwera znacznie wzrasta, każdy komputer posiada publiczny i prywatny klucz (dwa matematycznie powiązane algorytmy, które są niemożliwe do złamania).
Przewagi publicznych i prywatnych kluczy SSH
Obecnie OpenSSH jest domyślną implementacją SSH na systemach z rodziny Unix, a właśnie Linux i OS X. Autoryzacja przy pomocy klucza jest najbardziej bezpiecznym sposobem spośród innych rodzajów autoryzacji wykorzystywanych w OpenSSH, takich jak hasła lub bilety Kerberos. Inne sposoby autoryzacji są wykorzystywane wyłącznie w szczególnych przypadkach. SSH może wykorzystywać klucz „RSA” (Rivest-Shamir-Adleman) lub “DSA” (“Digital Signature Algorithm”).
Gdy wynaleziono SSH, obydwa zostały uznane za najnowocześniejsze algorytmy, natomiast w ostatnich latach DSA zaczęło być spostrzegane jako mniej bezpieczne. RSA jest jedynym zalecanym wyborem dla nowych kluczy, w związku z powyższym wykorzystamy zamiennie klucze „RSA” i „SSH”.
Po zalogowaniu do swojego VPS, serwer SSH używa publicznego klucza w celu „zablokowania” powiadomień. Ich „odblokowanie” jest możliwe jedynie poprzez użycie prywatnego klucza. Oznacza to, że nawet najbardziej zaradni hakerzy nie mogą szpiegować lub wtrącać się w sesje. Niektórzy użytkownicy oraz większość programów SSH w jakości dodatkowego środka bezpieczeństwa stosują przechowywanie prywatnego klucza w chronionym formacie passphrase. Celem takiego sposobu jest zapewnienie okna czasowego, w którym możesz wyłączyć zagrożony prywatny klucz w przypadku uszkodzenia lub kradzieży komputera.
Właśnie dlatego, uwierzytelnienie klucza jest lepszym rozwiązaniem, niż popularne używanie haseł. W przypadku nie stosowania passphrase w stosunku do prywatnego klucza, będziesz miał możliwość automatyzacji części Twoich menadżerskich konfiguracji wykorzystując bezpieczne, automatyczne logowania, mianowicie tworzyć kopie zapasowe etc.
Logowania SSH za pomocą klucza
Ten sam publiczny klucz możesz zachować dla dowolnej liczby serwerów w chmurze, natomiast Twój prywatny klucz zostanie zachowany na kliencie, z którego logujesz się na serwerze. Następnie możesz wyłączyć normalną procedurę login/hasło, co z kolei oznacza, że tylko osoby z ważnym prywatnym/publicznym kluczem będą mogły się zalogować. Podwyższa to poziom bezpieczeństwa systemu, ponieważ jest on bardziej oporny na ataki brute-force.
Zaczynamy
Zakładamy, że już wiesz jak zalogować się do swojego Serwera VPS poprzez PuTTY (dla użytkowników systemu Windows) lub ssh root@ADRES_IP_SERWERA
(dla użytkowników Unix systemów).
Generator klucza PuTTY (lub PuTTYgen)
Chociaż PuTTy jest klientem dla SSH (oprócz Telnet i Rlogin), nie jest to przeróbka lub inna rzecz bazująca się na OpenSSH. W związku z powyższym, PuTTY nie odczytuje prywatnych plików kluczy SSH-2 OpenSSH. Aczkolwiek, PuTTY ma towarzysza o nazwie PuTTYgen (narzędzie do generowania kluczy RSA i DSA), który potrafi konwertować pliki prywatnych kluczy OpenSSH do formatu PuTTY, pozwalając Ci na połączenie się z serwerem w chmurze z komputera z systemem Windows, zapewniając dodatkowe bezpieczeństwo kluczy SSH.
PuTTYgen jest (darmowym) narzędziem open-source, który można pobrać z oficjalnej strony. Użyjesz PuTTYgen do generowania swoich kluczy SSH w celu ich wykorzystania z PuTTY. Pierwsze, co powinieneś zrobić, to pobrać wykonywalne pliki (.exe) i zapisać je na komputerze, z którego planujesz połączyć się z VPS, np. na pulpicie. Nie musisz „instalować” PuTTYgen`a, ponieważ jest to samodzielna aplikacja.
Generowanie kompatybilnych kluczy OpenSSH w celu ich wykorzystania z PuTTY
W celu generowania zestawu kluczy RSA za pomocą PUTTYgen wykonaj następujące czynności:
- Uruchom narzędzia PuTTYgen poprzez podwójnie kliknięcie na jego plik .exe;
- W Type of key to generate wybierz SSH-2 RSA;
- W rozdziale Number of bits in a generated key wybierz 2048 lub 4096 (zwiększenie bitów utrudnia złamanie kluczy za pomocą metod brute-force);
- Naciśnij przycisk Generate;
- Przesuwaj kursor myszy w pustym obszarze sekcji Key, poniżej paska postępu (aby wygenerować losowości), aż pasek postępu będzie pełny;
- Gratulacje! Właśnie stworzyliśmy parę prywatnych/publicznych kluczy;
- W polu Key comment wprowadź jakikolwiek komentarz w celu ułatwienia identyfikacji pary nowo stworzonych kluczy (na przykład adres poczty elektronicznej; domowy; biurowy etc.) – powyższy komentarz jest szczególnie przydatny w przypadku tworzenia więcej, niż jednej pary kluczy;
- Opcjonalnie: Wprowadź hasło w polu Key passphrase, następnie wprowadź to samo hasło w polu Confirm passphrase(jeżeli planujesz wykorzystanie tych samych kluczy w celu automatyzacji procesu, nie powinieneś stwarzać hasła);
- Naciśnij przycisk Save public key i wprowadź jakąkolwiek nazwę pliku (niektórzy użytkownicy stwarzają w swoim komputerze folder z nazwą my_keys);
- Naciśnij przycisk Save private key i wprowadź jakąkolwiek nazwę pliku (możesz go zachować w miejscu lokalizacji publicznego klucza, niemniej jednak powinna to być lokalizacja, do której dostęp masz tylko Ty i którego NIE stracisz! W przypadku utraty kluczy i unieważnienia loginów/haseł, nie będziesz mógł się zalogować!);
- Kliknij prawym przyciskiem myszy w polu tekstowym Public key for pasting into OpenSSH authorized_keys file i wybierz Select All;
- Ponownie kliknij prawym przyciskiem myszy w tym samym polu tekstowym i wybierz Copy.
UWAGA: PuTTY i OpenSSH wykorzystują różne formaty w stosunku do kluczy SSH. Jeżeli skopiowane przez Ciebie klucze SSH zaczynają się od “—- BEGIN SSH2 PUBLIC KEY …”, jest to nieodpowiedni format. Upewnij się, że postępowałeś zgodnie z instrukcją. Twój klucz powinien zaczynać się od
ssh-rsa AAAA ....
Zapisanie publicznego klucza na serwerze
Przyszedł czas na wstawienie skopiowanego klucza do pliku ~/.ssh/authorized_keys na Twoim serwerze.
- Zaloguj się do docelowego serwera;
- Jeżeli jeszcze nie masz folderu SSH, stwórz go ręcznie:
mkdir ~/.ssh
chmod 0700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 0644 ~/.ssh/authorized_keys
- Wstaw publiczny klucz SSH do pliku ~/.ssh/authorized_keys:
sudo vim ~/.ssh/authorized_keys
- Naciśnij klawisz
i
na klawiaturze i kliknij prawym przyciskiem myszy w celu wklejenia. - W celu zachowania, naciśnij następujące klawisze na klawiaturze (w przedstawionej kolejności):
Esc
,:
,w
,q
,Enter
.
Stworzenie profilu PuTTY i zachowanie parametrów na komputerze
W PuTTY możesz stworzyć (i zachować) profile w celu połączenia z różnymi serwerami SSH. W ten sposób nie będziesz musiał zapamiętywać, ponownie wprowadzać zbędnych informacji.
- Uruchom PuTTY poprzez podwójne kliknięcie na wykonywalny plik;
- Początkowym oknem PuTTY jest Session i Category (nawiguj różnymi kategoriami PuTTY wzdłuż lewej strony okna);
- W polu Host Name wprowadź adres IP Twojego VPS lub jego w pełni kwalifikowalną nazwę domeny;
- Wprowadź numer portu w polu Port (w celu zapewnienia dodatkowego bezpieczeństwa, rozważ zmianę portu SSH serwera na niestandardowy port);
- Wybierz SSH w Protocol;
- Po lewej stronie okna wybierz podkategorię Data pod Connection;
- Określ nazwę użytkownika, której planujesz używać podczas logowania do serwera SSH, a którego profil zachowałeś w polu Auto-login username;
- Rozwiń podkategorię SSH pod Connection;
- Zaznacz podkategorię Auth i kliknij na przycisk Browse po prawej stronie okna PuTTY;
- Przejrzyj swój system plików i wybierz stworzony wcześniej prywatny klucz;
- Powróć do kategorii Session i wprowadź nazwę profilu w polu Saved Sessions, na przykład user@123.456.78.9 lub user@host.domena.pl;
- Kliknij Save w Load, Save or Delete a stored session.
Teraz możesz kontynuować i zalogować się do uzytkownik@1.2.3.4, nie będziesz proszony o podanie hasła. Niemniej jednak, jeżeli ustawiłeś hasło dla swojego publicznego klucza, to zostaniesz poproszony o jego wprowadzenie (będzie się to powtarzać przy każdym logowaniu).
Dezaktywacja loginu/hasła
W celach bezpieczeństwa, po tym jak sprawdzisz, że Twoje bazujące się na kluczach loginy działają, możesz podjąć decyzję o dezaktywacji loginu/hasła. Dokonasz tego poprzez edytowanie konfiguracyjnego pliku serwera SSH. W systemach Debian / Ubuntu plik ten znajduje się w /etc/ssh/sshd_config.
sudo vim /etc/ssh/sshd_config
Naciśnij klawisz i
na klawiaturze i edytuj odznaczone niżej wiersze:
[...] PasswordAuthentication no [...] UsePAM no [...]
W celu zachowania, naciśnij następujące klawisze na klawiaturze (w przedstawionej kolejności): Esc
, :
, w
, q
, Enter
. Następnie przeładuj konfiguracje serwera SSH:
sudo reload ssh