komputerowa SSH Marcin Bieńkowski Instytut Informatyki Uniwersytet Wrocławski komputerowa () SSH 1 / 14
Na poczatku... Użytkownicy podłaczali się do zdalnych komputerów używajac programów, takich jak telnet, rlogin,... tekst jawny Niestety każdy, kto może podsłuchać taki kanał komunikacyjny (na przykład komputer który stoi pomiędzy nimi), może dowiedzieć się, co jest przesyłane! W szczególności widać przesyłane hasła... Cliparty ze strony http://jimmac.musichall.cz/i.php?i=computer-clipart komputerowa () SSH 2 / 14
Na poczatku... Użytkownicy podłaczali się do zdalnych komputerów używajac programów, takich jak telnet, rlogin,... tekst jawny Niestety każdy, kto może podsłuchać taki kanał komunikacyjny (na przykład komputer który stoi pomiędzy nimi), może dowiedzieć się, co jest przesyłane! W szczególności widać przesyłane hasła... Cliparty ze strony http://jimmac.musichall.cz/i.php?i=computer-clipart komputerowa () SSH 2 / 14
SSH Secure Shell Wraz ze wzrostem popularności sieci konieczne stało się szyfrowanie kanałów komunikacyjnych Najpopularniejszym rozwiazaniem jest ssh 2 wersje protokołu, starsza jest mniej bezpieczna, ale nadal używana 1 Wersja 1, algorytmy: DES, DES3, Blowfish 2 Wersja 2, dodatkowo CAST128 i AES (różnej długości) Proste użycie: ssh -l user host, albo ssh user@host komputerowa () SSH 3 / 14
Klienty Klienty Wieloplatformowe: PuTTY, JavaSSH Windows: freesshd, OpenSSH for Windows, WinSSHD, SecureCRT MacOS: MacSSH Uniksy: Lsh, OpenSSH PalmOS: Top Gun SSH komputerowa () SSH 4 / 14
Klienty Klienty Wieloplatformowe: PuTTY, JavaSSH Windows: freesshd, OpenSSH for Windows, WinSSHD, SecureCRT MacOS: MacSSH Uniksy: Lsh, OpenSSH PalmOS: Top Gun SSH komputerowa () SSH 4 / 14
Logowanie się Klienty Przy pierwszym połaczeniu: $ ssh ssh-server.example.com The authenticity of host ssh-server.example.com (12.18.429.21) can t be established. RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28: c2:42:2d:37:16:58:4d. Are you sure you want to continue connecting (yes/no)? Następnie dostajemy: Warning: Permanently added ssh-server.example.com, 12.18.429.21 (RSA) to the list of known hosts. Wpisujemy hasło i logujemy się do ssh-server.example.com. komputerowa () SSH 5 / 14
Klienty Plik /.ssh/known_hosts Po zalogowaniu do pliku /.ssh/known_hosts zostanie dopisany klucz serwera ssh-server.example.com: ssh-server.example.com,12.18.429.21 ssh-rsa AAAAB3 NzaC1yc2EAAAABIwAAAIEA06jFqviLMMJ/GaJNhGx/P6Z7+4a JIfUqcVjTGQasS1daDYejcfOAWK0juoD+zS3BsGKKYKPA5Gc5 M8v+3NHLbPn1yTpDBgl6UzA0iiMPCbwnOLx61MrBTk+/qJI9k ydajf4ley6chx4ijp0zn5nmalctxqsca3jwfaf72mqpbf8= Przy każdym następnym logowaniu klucz oferowany przez serwer jest porównywany z ta informacja. komputerowa () SSH 6 / 14
Konfiguracja klienta Klienty Plik /.ssh/config Host komputer Hostname komputer.domena.pl User mbi Port 22 ForwardX11 yes Compression yes CompressionLevel 9 Protocol 2,1 SendEnv LANG LC_* komputerowa () SSH 7 / 14
Zastosowania Klienty Za pomoca ssh można też: uruchamiać zdalnie polecenia: ssh serwer "polecenie_zdalne" kopiować pliki na zdalny serwer: scp plik_lokalny serwer:/katalog/zdalny/ albo z powrotem: scp -r serwer:/katalog/zdalny/ /katalog/lokalny/ komputerowa () SSH 8 / 14
Konfiguracja serwera Serwery Plik /etc/ssh/sshd_config: Wybrane opcje: Port 22 Protocol 2 PermitRootLogin no X11Forwarding no Można zawęzić zbiór osób, które moga się logować przez ssh, poleceniami AllowUsers, AllowGroups, DenyUsers, DenyGroups. komputerowa () SSH 9 / 14
Serwery Rodzaje uwierzytelniania użytkownika Domyślnie klient próbuje następujacych typów uwierzytelniania: 1 Uwierzytelniany jest komputer klienta, a potem za pomoca pliku /etc/hosts.equiv lub/i pliku /.shosts sprawdzane jest, czy dany użytkownik może się zalogować 2 Na podstawie pary (klucz prywatny u klienta, klucz publiczny na serwerze) 3 Na podstawie hasła można je wyłaczyć przez RhostsRSAAuthentication (1), HostbasedAuthentication (2), RSAAuthentication (1), PubkeyAuthentication (2), PasswordAuthentication. Te same opcje moga znaleźć się w pliku konfiguracyjnym serwera ssh. Domyślnie pierwsze dwie sa wyłaczone, pozostałe trzy właczone. komputerowa () SSH 10 / 14
Serwery Rodzaje uwierzytelniania użytkownika Domyślnie klient próbuje następujacych typów uwierzytelniania: 1 Uwierzytelniany jest komputer klienta, a potem za pomoca pliku /etc/hosts.equiv lub/i pliku /.shosts sprawdzane jest, czy dany użytkownik może się zalogować 2 Na podstawie pary (klucz prywatny u klienta, klucz publiczny na serwerze) 3 Na podstawie hasła można je wyłaczyć przez RhostsRSAAuthentication (1), HostbasedAuthentication (2), RSAAuthentication (1), PubkeyAuthentication (2), PasswordAuthentication. Te same opcje moga znaleźć się w pliku konfiguracyjnym serwera ssh. Domyślnie pierwsze dwie sa wyłaczone, pozostałe trzy właczone. komputerowa () SSH 10 / 14
Serwery Rodzaje uwierzytelniania użytkownika Domyślnie klient próbuje następujacych typów uwierzytelniania: 1 Uwierzytelniany jest komputer klienta, a potem za pomoca pliku /etc/hosts.equiv lub/i pliku /.shosts sprawdzane jest, czy dany użytkownik może się zalogować 2 Na podstawie pary (klucz prywatny u klienta, klucz publiczny na serwerze) 3 Na podstawie hasła można je wyłaczyć przez RhostsRSAAuthentication (1), HostbasedAuthentication (2), RSAAuthentication (1), PubkeyAuthentication (2), PasswordAuthentication. Te same opcje moga znaleźć się w pliku konfiguracyjnym serwera ssh. Domyślnie pierwsze dwie sa wyłaczone, pozostałe trzy właczone. komputerowa () SSH 10 / 14
Serwery Logowanie przez klucze kryptograficzne Teoria (do protokołu 2) W pliku klienta /.ssh/id_rsa albo /.ssh/id_dsa zapisujemy klucz prywatny RSA lub DSA Do pliku /.ssh/authorized_keys2 (na komputerze zdalnym) dopisujemy odpowiadajacy mu klucz publiczny W przypadku wersji 1 protokołu, używamy odpowiednio plików /.ssh/identity i /.ssh/authorized_keys Praktyka będzie na ćwiczeniach. W szczególności pokażemy, jak można logować się na zdalny komputer bez podawania hasła. komputerowa () SSH 11 / 14
Serwery Logowanie przez klucze kryptograficzne Teoria (do protokołu 2) W pliku klienta /.ssh/id_rsa albo /.ssh/id_dsa zapisujemy klucz prywatny RSA lub DSA Do pliku /.ssh/authorized_keys2 (na komputerze zdalnym) dopisujemy odpowiadajacy mu klucz publiczny W przypadku wersji 1 protokołu, używamy odpowiednio plików /.ssh/identity i /.ssh/authorized_keys Praktyka będzie na ćwiczeniach. W szczególności pokażemy, jak można logować się na zdalny komputer bez podawania hasła. komputerowa () SSH 11 / 14
Serwery Logowanie przez klucze kryptograficzne Teoria (do protokołu 2) W pliku klienta /.ssh/id_rsa albo /.ssh/id_dsa zapisujemy klucz prywatny RSA lub DSA Do pliku /.ssh/authorized_keys2 (na komputerze zdalnym) dopisujemy odpowiadajacy mu klucz publiczny W przypadku wersji 1 protokołu, używamy odpowiednio plików /.ssh/identity i /.ssh/authorized_keys Praktyka będzie na ćwiczeniach. W szczególności pokażemy, jak można logować się na zdalny komputer bez podawania hasła. komputerowa () SSH 11 / 14
Tunelowanie połaczeń Serwery Mimo tego, że większość ludzi zrezygnowała z programu telnet na rzecz ssh...... zadziwiajace i przerażajace, ile usług sieciowych nadal przesyła krytyczne dane niezaszyfrowane (POP3, SMTP, FTP...) Jeśli mamy konto na zdalnej maszynie, za pomoca ssh możemy szyfrować te połaczenia. Obrazek ze strony http://www.ssh.com/support/documentation/online/ssh/adminguide/32/port_forwarding.htm komputerowa () SSH 12 / 14
Tunelowanie połaczeń Serwery Mimo tego, że większość ludzi zrezygnowała z programu telnet na rzecz ssh...... zadziwiajace i przerażajace, ile usług sieciowych nadal przesyła krytyczne dane niezaszyfrowane (POP3, SMTP, FTP...) Jeśli mamy konto na zdalnej maszynie, za pomoca ssh możemy szyfrować te połaczenia. Obrazek ze strony http://www.ssh.com/support/documentation/online/ssh/adminguide/32/port_forwarding.htm komputerowa () SSH 12 / 14
Tunelowanie połaczeń Serwery Mimo tego, że większość ludzi zrezygnowała z programu telnet na rzecz ssh...... zadziwiajace i przerażajace, ile usług sieciowych nadal przesyła krytyczne dane niezaszyfrowane (POP3, SMTP, FTP...) Jeśli mamy konto na zdalnej maszynie, za pomoca ssh możemy szyfrować te połaczenia. Obrazek ze strony http://www.ssh.com/support/documentation/online/ssh/adminguide/32/port_forwarding.htm komputerowa () SSH 12 / 14
Serwery Tunelowanie połaczeń cd. Połaczenia z portem 4025 na lokalnym komputerze będa przekazywane (i szyfrowane po drodze) do komputera zdalny-serwer, a tam przekazywane do portu 25. ssh -L 4025:localhost:25 user@zdalny-serwer Połaczenia z portem 7022 na zdalnym komputerze przekazywane (i szyfrowane po drodze) do lokalnego komputera i przekazywane do portu 22. ssh -R 7022:localhost:22 user@zdalny-serwer komputerowa () SSH 13 / 14
Literatura Literatura Daniel J. Barrett, Richard E. Silverman SSH, The Secure Shell: The Definitive Guide O Reilly & Associates Thomas Koenig SSH (Secure Shell) FAQ - Frequently Asked Questions http://www.faqs.org/faqs/computer-security/ssh-faq/ Manish Singh Secure POP via SSH mini-howto http://www.tldp.org/howto/secure-pop+ssh.html komputerowa () SSH 14 / 14