Szybkie logowania za pomocą kluczy klienta Secure Shell.odt

Transkrypt

Szybkie logowania za pomocą kluczy klienta Secure Shell.odt
Dokument pobrany z serwisu: www.Centrum.Bezpieczenstwa.pl
Autor artykułu: Patryk Krawaczyński (www.nfsec.pl)
Szybkie logowania za pomocą kluczy klienta Secure Shell
Przedstawiony hack jest tłumaczeniem "Quick Logins with ssh Client keys" z ksiąŜki "Linux
Servers Hacks" autorstwa Rob'a Flickenger'a. Do tłumaczenia zostało dodane takŜe parę informacji
od tłumacza.
Kiedy jesteś administratorem więcej niŜ jednej maszyny, szybkie przechodzenie do powłoki
kaŜdego innego serwera moŜe być bardzo przydatne. Konieczność wpisania "ssh
moja.nazwa.serwera.com" (po czym następuje wpisanie hasła) jest nie tylko męcząca i nudna, ale
potrafi przerwać koncentracje. Nagle nasza koncentracja zamiast skupiać się na "gdzie jest
problem?" kierowana jest na "wchodzę tutaj i tutaj", a potem znowu musimy wracać do "o co w
końcu chodziło?". To cyfrowy odpowiednik pytania: "a właściwie po, co tutaj jestem?" (co więcej,
problem robi się gorszy przez program /usr/game/fortune!).
W kaŜdym razie, im więcej wysiłku jest przy logowaniu do innej maszyny tym mniej sił jest na
rozwiązanie problemu. Nowsze wersje programu SSH oferują bezpieczny odpowiednik ciągłego
wpisywania haseł: wymianę kluczy publicznych.
W celu uŜycia publicznych kluczy na serwerze SSH, musisz najpierw wygenerować parę kluczy
publiczny/prywatny:
$ ssh-keygen -t rsa
MoŜesz takŜe uŜyć parametru: -t dsa dla wygenerowania kluczy DSA lub -t rsa1, jeśli nadal
uŜywasz protokołu w wersji pierwszej (a jeśli uŜywasz to wstydź się! I jak najszybciej wykonaj
aktualizację do drugiej wersji!).
Po wklepaniu powyŜszej komendy, powinieneś zobaczyć komunikat podobny do tego:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/rob/.ssh/id_rsa):
Po prostu wciśnij klawisz [Enter]. Następnie pojawi się pytanie o długie hasło; naciśnij ponownie
[Enter], tym razem dwa razy (ale przeczytaj uwagi o bezpieczeństwie wyświetlone poniŜej). Wyniki
powinny wyglądać następująco:
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/rob/.ssh/id_rsa.
Your public key has been saved in /home/rob/.ssh/id_rsa.pub.
The key fingerprint is:
a6:5c:c3:eb:18:94:0b:06:a1:a6:29:58:fa:80:0a:bc rob@localhost
W ten sposób powstaną dwa pliki, ~/.ssh/id_rsa oraz ~/.ssh/id_rsa_pub. W celu uŜycia tej pary
kluczy, wydaj polecenia:
$ ssh -v server "mkdir .ssh; chmod 0700 .ssh"
$ scp .ssh/id_rsa.pub server:.ssh/authorized_keys
Oczywiście zamiast wyraŜenia server podaj nazwę swojego serwera. Dwa razy powinno pojawić
się pytanie o hasło. Teraz, po prostu wystarczy wykonać polecenie: ssh server, a logowanie
odbędzie się automatycznie bez hasła. O tak, w programie scp teŜ zostanie uŜyty nowiutki,
błyszczący klucz publiczny.
Jeśli to nie działa, sprawdź uprawnienia do plików w obu katalogach ~/.ssh/* oraz server:~/.ssh/*.
Klucz prywatny (id_rsa) powinien posiadać uprawnienia 0600 (i znajdować się tylko na komputerze
lokalnym), zaś wszystkie pozostałe pliki powinny mieć oprawnienia 0655. W przypadku OpenSSH
naleŜy takŜe sprawdzić pod jaką nazwą musi być zapisywany publiczny klucz na serwerze (opcja:
AuthorizedKeysFile w /etc/ssh/sshd_config).
Co się tyczy bezpieczeństwa:
Niektórzy uwaŜają, Ŝe klucze publiczne stanowią potencjalne zagroŜenie. W końcu trzeba tylko
ukraść kopię klucza prywatnego, aby uzyskać dostęp do serwerów. To prawda, ale to samo tyczy
się haseł.
Zadaj sobie pytanie, ile razy dziennie wpisujesz hasło, aby uzyskać dostęp do interpretera poleceń
komputera (lub w celu przesłania pliku poleceniem scp)? Jak często uŜywasz tego samego hasła na
wielu (lub wszystkich? nie dobrze!) komputerach? Czy zdarzyło ci się uŜywać hasła w sytuacji
potencjalnego zagroŜenia (w witrynie WWW, na komputerze osobistym z nieaktualnym
oprogramowaniem lub na kliencie SSH na komputerze, którym nie zarzadzasz bezpośrednio)? JeŜli
znasz to wszystko z autopsji, to wiedz, Ŝe w takich samych warunkach klucz SSH praktycznie
uniemoŜliwia atakującemu późniejsze uzyskanie nieautoryzowanego dostępu (o ile, oczywiście,
klucz prywatny jest odpowiednio zabezpieczony).