LINUX
SSH - bezpieczna powłoka

 

SSH (Secure Shell), to program umożliwiający zdalny dostęp do serwera, jednak w przeciwieństwie do zwykłego telneta, wyposażony jest w mechanizmy silnego uwierzytelniania oraz szyfrowania sesji wykorzystując bezpieczny klucz. Istnieją dwie wersje protokołu ssh oznaczone jako ssh1 oraz ssh2. Ssh2 jest nowszy i zarazem bezpieczniejszy. Nie jest zgodny ze starszym ssh1, choć wspomaga obsługę klientów ssh1, jeśli serwer ssh1 także jest zainstalowany na danej maszynie. Nic nie stoi więc na przeszkodzie, aby na Twoim serwerze znalazły się obie wersje oprogramowania.
Pliki, zawierające potrzebne programy, możesz znaleźć m.in. na ftp.icm.edu.pl w katalogu /pub/security/ssh lub po prostu na www.ssh.com. Po pobraniu plików sprawdź ich długość i rozpakuj do katalogu tymczasowego, a następnie przejdź do instalacji.
Zawsze pierwszą czynnością, zanim przystąpisz do kompilacji jakiegokolwiek programu, jest dokładne przeczytanie plików Readme oraz Install - zawsze znajdziesz tam to, czego potrzebujesz, by poprawnie skompilować program. W pierwszej kolejności zainstaluj ssh1, później ssh2. Jeśli tego nie wiesz (a myślę, że chyba dobrze wiesz), to instalacja oprogramowania ze źródeł zazwyczaj polega na wydaniu trzech komend z poziomu katalogu, w którym znajduje się rozpakowane archiwum programu. Komendy te, to: ./configure, make oraz make install. Jeśli wszystko przebiegło pomyślnie, to oprogramowanie jest prawie gotowe do użytku. Musisz tylko znaleźć plik wykonywalny sshd (zazwyczaj będzie w /usr/local/sbin), uruchomić go i jeśli działa, zrobić odpowiedni wpis uruchamiający w którymś z plików startowych w katalogu /etc/rc.d/, tak, by demon sshd uruchamiał się podczas każdego startu systemu. Najprostszym sposobem jest dopisanie na końcu pliku /etc/rc.d/rc.local (lub innego pliku konfiguracyjnego maszyny, który jest wykonywany podczas jej startu) ścieżki do demona sshd, czyli najprawdopodobniej /usr/local/sbin/sshd. Możliwe jest także uruchamianie demona sshd za pośrednictwem inetd. W tym celu musisz dopisać do pliku /etc/inetd.conf wiersz:

ssh stream tcp nowait root /usr/sbin/tcpd /usr/local/sbin/sshd

Należy w tym przypadku także pamiętać o dopisaniu do pilku /etc/services wiersza:

ssh 22/tcp

choć prawdopodobnie potrzebny wpis już się tam znajduje!. Więcej informacji na ten temat znajdziesz w dokumentacji programu.
I jeszcze jedno: jeśli chcesz, możesz pobrać ssh w postaci plików archiwów rpm - znajdują się one w katalogu /pub/security/ssh/rpms serwera ftp.icm.edu.pl. Nie będziesz się wtedy "męczył" z kompilacją :-), choć nie wiem, czy przypadkiem nie warto się trochę "pomęczyć" (?).
A teraz słów kilka o konfiguracji. W zasadzie serwer sshd nie wymaga jakiejś szczególnej konfiguracji :-), niemniej jednak warto wiedzieć, co można jeszcze zrobić. Dla ssh1 plik konfiguracyjny serwera powinien się znajdować w /etc/sshd_config, natomiast dla ssh2: /etc/ssh2/sshd2_config. Forma układu listy opcji w obu plikach jest podobna. Kilka opcji, które warto wymienić, to:

Port - numer poru wykorzystywanego przez ssh (domyślnie jest to 22),

ListenAdress - parametr ten określa adres IP interfejsu, który ssh będzie obsługiwać,

PermitRootLogin - określa, czy ssh umożliwia logowanie na konto administratora (proponuję wpisać wartość no i używać do logowania konta zwykłego użytkownika i komendy su -l),

AllowHosts - określa hosty, z których można się logować (można używać listy stosując znaki wieloznaczne * i ?),

DenyHost - hosty, z których nie można się zalogować.

Ponadto w pliku konfiguracyjnym serwera ssh2: /etc/ssh2/sshd2_config znajdziesz linie:

Ssh1Compatibility - określa, czy ssh2 będzie wspierać starsze klienty ssh1,

Sshd1Path - podaje ścieżkę do demona sshd1 wspierającego klienty ssh1.

I już wiesz na tyle dużo, że możesz spokojnie korzystać z tego doskonałego narzędzia nie obawiając się, że ktoś będzie podsłuchiwał, tak, jak może to mieć miejsce, gdy korzystasz z telneta, gdzie każde komendy są wysyłane jawnym tekstem.
Istnieje jeszcze wiele ciekawych opcji a sam program jest czymś znacznie większym, niż tylko "bezpiecznym telnetem". Umożliwia również korzystanie z bezpiecznego ftp (sftp) oraz kopiowania plików (scp).
Warto wspomnieć także, iż komunikacja przy pomocy ssh może odbywać się bez podawania hasła. W tym celu należy utworzyć klucze szyfrowania: publiczny i prywatny, korzystając z programów ssh-keygen lub ssh-keygen2 w zależności od wersji ssh. Klucz publiczny należy umieścić na serwerze, z którym chcemy się łączyć. Jednak wydaje mi się, iż nieco bezpieczniej jest używać hasła, szczególnie, gdy nie zapominamy o jego zmianie raz na jakiś czas!
I jeszcze kilka słów o używaniu klienta ssh. Klient, czyli programy ssh1 i ssh2 znajdują się prawdopodobnie w katalogu /usr/local/bin/. Jeśli uruchomiłeś demona sshd, to możesz teraz sprawdzić, czy wszystko działa poprawnie, przechodząc do katalogu, w którym znajduje się program klienta ssh i nawiązując połączenie z własną maszyną:

./ssh localhost

System prawdopodobnie poprosi Cię o potwierdzenie (wpisz yes) oraz podanie hasła użytkownika i już jesteś zalogowany!
Teraz możesz już w pliku /etc/inetd.conf śmiało postawić znaczek # na początku linii zaczynającej się słowem telnet :-).
Dla klientów ssh także istnieją pliki konfiguracyjne i każdy z użytkowników może posiadać własny plik konfiguracji klienta. Domyślnym plikiem klienta dla ssh1 jest /etc/ssh_config, natomiast dla ssh2: /etc/ssh2/ssh2_config. Zrozumienie opcji konfiguracyjnych w tych plikach z całą pewnością nie sprawi Ci żadnego kłopotu. W razie problemów: man ssh.

 

<<< powrót do strony głównej

 

Copyright (C) 2000-2002 by Grzegorz Lewandowski
All rights reserved