Przygotowanie do pracy serwera Telnet i ssh
Telnet pozwala zalogować się do zdalnego serwera i wykonywać na nim polecenia tak jak na komputerze lokalnym.
Telnet umożliwia uzyskanie dostępu do wszystkich zasobów komputera zdalnego. Dane w sesjach telnetu są przesyłane bez szyfrowania (zwykłym tekstem), co naraża użytkownika na przechwycenie i podsłuchanie transmisji.
Dlatego nie należy przesyłać telnetem haseł i innych poufnych danych. Ze względu na bezpieczeństwo za pomocą telnetu nie można zalogować się na konto użytkownika root. Jeżeli telnet jest jedyną możliwością połączenia ze zdalnym serwerem, należy zalogować się na konto zwykłego użytkownika, a następnie poleceniem su uzyskać uprawnienia administratora.
Telnet jest usługą działającą w architekturze klient-serwer, kontrolowaną przez superdemona xinetd.
Oprogramowanie klienta jest dołączone do każdego systemu operacyjnego. Oprogramowanie serwera nie jest instalowane w domyślnej konfiguracji.
Przykład. Uruchamianie usługi telnet
Aby umożliwić nawiązywanie połączeń z komputerem za pomocą telnetu, należy:
1. Zalogować się na konto użytkownika.
2. Zainstalować pakiet telnetd poleceniem sudo apt-get install telnetd
Serwer telnetu zostanie automatycznie dodany do listy serwisów uruchamianych podczas startu systemu.
3. Ponownie uruchomić superdemona xinetd poleceniem sudo /etc/init.d/openbsd-inetd restart 4. Sprawdzić, czy możliwe jest nawiązanie połączenia poleceniem
telnet localhost
5. Sprawdzić możliwość połączenia z innego komputera.
Od tego momentu można łączyć się z wybranym serwerem. Jeżeli występują problemy z nawiązaniem połączenia, należy sprawdzić, czy usługa telnet jest uruchomiona oraz czy firewall lub SELinux nie blokuje nawiązania połączeń.
Przykładową sesję telnetu pokazuje rysunek:
Sesja rozpoczyna się od nawiązania połączenia, następnie jest sprawdzana nazwa konta użytkownika i sesja zostaje zakończona.
Ćwiczenia:
Za pomocą programu nmap wyświetl listę otwartych portów Twojego komputera.
1. Sprawdź, z którego numeru portu korzysta usługa telnet.
2. Spróbuj za pomocą telnetu nawiązać połączenie, korzystając z innego numeru portu otwartego na Twoim komputerze. Przykładowo, aby nawiązać połączenie na porcie 22 (standardowy port dla usługi SSH), wydaj polecenie
telnet localhost 22
Czego można się dowiedzieć z uzyskanej odpowiedzi serwera?
3. Spróbuj za pomocą telnetu nawiązać połączenie, korzystając z zamkniętego portu na Twoim komputerze.
Przykładowo, aby nawiązać połączenie na porcie 123, wydaj polecenie telnet localhost 123
Czego można się dowiedzieć z uzyskanej odpowiedzi serwera?
Protokół SSH (Secure Shell) stworzono, aby wykorzystać możliwość zdalnego logowania, zachowując przy tym bezpieczeństwo haseł. W Linuksie jest używana bezpłatna implementacja o nazwie OpenSSH. Protokół SSH umożliwia połączenie się użytkownika ze zdalnym systemem tak jak w przypadku telnetu, ale sesja jest szyfrowana.
Osoba używająca elektronicznego podsłuchu zobaczy zaszyfrowane informacje, których odczytanie jest możliwe tylko wtedy, gdy ma się klucz kryptograficzny. Protokół SSH opiera się na kryptografii klucza publicznego.
Do korzystania z ssh są potrzebne dwa klucze: publiczny oraz prywatny. Klucz publiczny jest powszechnie dostępny (może być umieszczony na stronie sieci WWW), klucz prywatny musi być dobrze chroniony. Każda kombinacja klucz prywatny/klucz publiczny jest niepowtarzalna. Klucz prywatny nie jest przesyłany przez sieć. Gdy dane są zaszyfrowane za pomocą klucza publicznego, można je odszyfrować tylko za pomocą klucza prywatnego tego użytkownika (SSH regularnie zmienia swój prywatny klucz, tak aby dane były inaczej szyfrowane co kilka minut).
Protokół SSH pracuje w architekturze klient-serwer. Klient jest instalowany domyślnie. Serwer SSH można zainstalować w dowolnym momencie poleceniem
sudo apt-get install ssh
Polecenie to spowoduje zainstalowanie wszystkich pakietów niezbędnych do obsługi protokołu. W środowisku Windows nie ma nawet klienta SSH – jeżeli użytkownik zamierza korzystać z tego protokołu, to musi z sieci pobrać klienta, np. bezpłatny program putty.
Przykład. Uruchamianie usługi ssh
Aby umożliwić nawiązywanie połączeń za pomocą SSH z komputerem, należy:
1. Zalogować się na konto użytkownika.
2. Zainstalować pakiet SSH poleceniem sudo apt-get install ssh
Serwer SSH zostanie automatycznie dodany do listy serwisów uruchamianych podczas startu systemu.
3. Ponownie uruchomić demona SSH poleceniem sudo /etc/init.d/ssh restart
Do zatrzymania demona SSH można użyć polecenia sudo /etc/init.d/ssh stop
Do uruchomienia demona SSH można użyć polecenia sudo /etc/init.d/ssh start
4. Sprawdzić, czy możliwe jest nawiązanie połączenia poleceniem (z kontem, które utworzyłeś wcześniej) ssh uczen@192.168.0.103
5. Sprawdzić możliwość połączenia z innego komputera.
Od tego momentu można łączyć się z wybranym serwerem. Jeżeli występują problemy z nawiązaniem połączenia, należy sprawdzić, czy usługa jest uruchomiona oraz czy firewall lub SELinux nie blokuje nawiązania połączeń.
Przykładowa sesja SSH jest pokazana na rysunku poniżej. Sesja rozpoczyna się od nawiązania połączenia. Podczas pierwszego połączenia z serwerem generowana jest para kluczy wykorzystywanych do szyfrowania danych.
Następnie sprawdzana jest nazwa konta użytkownika i hasło. Jeżeli autoryzacja przebiegnie pomyślnie, ustanawiana jest sesja.
Ćwiczenia:
1. Korzystając z klienta putty, pracującego w środowisku Windows, nawiąż połączenie z własnym komputerem.
Wyświetl nazwę konta, na którym pracujesz.
2. Za pomocą SSH połącz się z komputerem kolegi. Wprowadź polecenie sudo shutdown -h now
Uwaga
Obowiązuje zasada: „Kto pierwszy, ten lepszy".