Gebruik van ssh
Gebruik van ssh Marcel Nijenhof
marceln@pion.xs4all.nl
2 december 2007
Waarom ssh
Inleiding
●
Wat is ssh
– Vervanging berkley rtools (rsh, rlogin, rcp)
– Vervanging telnet
– ftp
●
Verschillen
– Verbindingen gecrypt
– Public key signing authorisatie
– Poort forwarding
Het protocol
●
Het ssh protocol wordt onderhouden door ietf
– http://www.ietf.org/html.charters/secshcharter.html
●
Versies
– 1.5
– 1.99 (Zowel 1.5 als 2.0)
– 2.0
●
Geen standaard voor scp (wel sftp)
Protocol gebruik
De architectuur
●
Server
– Draait op de server waarna je connect
– Wacht totdat er een verbinding wordt opgebouwd
– Verzorgt authorisatie, connectie, poort forwarding
●
Client
– Draait op de werkplek/Start de verbinding
– Meerdere type clients (commandline, putty, winscp)
Server implementaties
●
OpenSSH (4.7)
●
ssh.com
●
FSecure ssh (nu bij wrq)
●
SunSSH (OpenSSH 2.5.1p1)
●
Dropbear (0.50)
●
Diverse andere implementaties (Zie freshmeat)
Server gebruik
Client implementaties
●
OpenSSH (Ook cygwin)
●
ssh.com
●
Putty
●
WinSCP (Putty clone)
●
Teraterm & TSSH
●
pssh (PalmOS)
●
mindterm (Java implementatie)
Ssh en remote commando's
●
Je kunt via ssh inloggen
– ssh nijen018@server
●
Een remote commando opstarten
– ssh nijen018@server hostname
– ssh nijen018@server t vi # Wel terminal controls
– ssh nijen018@server f xterm # Background ssh
Redirectie en pipes
●
Makkelijk voor data transport
●
Redirectie
– ssh server1 tar cf . > /tmp/server1.tar # Geen ''
– ssh server2 tar xf < /tmp/server2.tar # Geen ''
●
Pipes
– ssh server1 tar cf . | ssh server2 tar xf # 2 keer over net
Vpn via ssh en ppp
●
Makkelijk op te zetten via:
– Creëer een “seriële lijn” via ssh
– Start pppd aan beide kanten op
●
Niet uniek voor ssh (kan ook via telnet)
●
Zie: http://www.tldp.org/HOWTO/pppssh/
●
Langzaam door het dubbele ack probleem
●
Onder linux ook via tun driver (zie forwarding)
Scp & Sftp
●
scp
– Methode om files en directories te kopiëren (alla rcp)
– Mogelijk recursief (r) en behoud van permissies (p)
– Niet portable (OpenSSH scp > ssh.com werkt niet)
●
sftp
– Interactief files op halen
– Ftp commandline achtige programma
– Server extensie
– Geen chroot/commando selectie mogelijkheden
File transport en gui
●
winscp3
– Standaard windows explorer achtig programma
– Transporteert files via ssh,scp of sftp
●
kde (konqueror) > fish
– fish://server/tmp
●
gnome (nautulis) > ssh
– ssh://server/tmp
Portforwarding Algemeen
●
Opzetten tcp verbinding door de ssh verbinding
– Tcp verbinding wordt encrypt
– Gaat automatisch mee door de firewall
– Werkt als een soort proxy (3 tcp sessies)
●
Tekening
Local portforwarding
●
Voorbeeld:
ser1$ ssh gL 1111:ser3:23 ser2 # g = Globaal dus ook van andere host
ws$ telnet ser1 1111 # Login vanaf ws via de ser1,ser2 op de ser3
●
Tekening
ws
ser1 ser2
ser3
telnet groen 1111
tunnel in ssh
telnet vanuit sshd
Remote Portforwarding
●
Voorbeeld
ser1$ ssh R 1111:ws:23 ser2 # Denk aan GatewayPorts sshd_config(4)
ser3$ telnet ser2 1111 # Login van de ser3 via ser1 op ws
●
Tekening
ws
ser1 ser2
ser3
telnet vanuit ssh
tunnel in ssh telnet ser2 1111
Ip forwarding (vpn via tun)
●
Ip forwarding via 2 tun interfaces (openssh 4.3+)
●
Verkeer tussen tun interfaces via “ssh”
– Beide systemen worden multihome
– Verkeer kan via ip forwarding gerouteerd worden
●
ssh f w 0:1 server true
– Denk aan PermitTunnel (config_sshd(4))
– Daarna ifconfig tun0 ....
XForwarding
●
Voorbeeld
ssh X server # Zet xforwarding op (evtentueel ook Y voor trusted xforwarding)
●
Bijzondere remote forwarinding
– DISPLAY wordt automatisch opgezet
– Maakt automatisch gebruik van magic cookies
– De tcp poort 6000 hoeft niet eens open te staan
– Transparant door firewalls
Sudo & Xauthority
●
Magic cookie staat in “~/.Xauthority”
– Magic cookie is een passwoord
– Nodig om X applicatie te gebruiken
●
Gebruik na sudo
– root: export XAUTHORITY=~<user>/.Xauthority
– Andere gebruiker:
● eigen account: xauth list $DISPLAY
● ander account: xauth add ....
Portforwarding & Putty
●
Configuration > Connection > SSH > Tunnels
Exceed 10
●
Vanaf Exceed 10 is ssh volledig geïntegreerd
●
Gewoon bruikbaar vanuit “xstart.exe”
– Vul “ssh” als connectie methode in
– Vul de host in (evt. als ip nummer)
– Vul een commando in (b.v. “/usr/bin/X11/xterm”)
●
Op deze manier is er geen volledige sessie
support (xdm)
Encryptie
●
ASymetrisch (rsa1, rsa, dsa)
– Werkt met public key encryptie (public/private keys)
– Kan gebruikt worden voor authorisatie
– Gebruikt voor uitwisselen van de sessie key
●
Symetrisch (aes, 3des, blowfish)
– Data wordt symetrisch verstuurd (sneller)
– Integriteit wordt gecontroleerd (md5, sha1)
Public key
●
Public key encryptie
– De publieke sleutel mag overal bekend zijn
– De prive sleutel is geheim
– Crypten
● Decrypten kan alleen via prive sleutel
● Signen bericht via private sleutel – Ondertekenen
● Via private key
● Controleren via public key
Fingerprint
●
Samenvatting publieke sleutel
– Publieke sleutel wordt gebruikt door de host om aan te tonen dat hij is wie hij is
– Bij eerste inlog poging krijg je de fingerprint te zien
$ ssh localhost
The authenticity of host 'localhost (127.0.0.1)' can't be established.
RSA key fingerprint is d0:6e:57:55:21:39:31:32:34:7b:d0:df:f4:92:af:
07.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
Last login: Fri Feb 18 17:31:03 2005 from localhost.localdomain
Public key authorisatie
●
Authorisatie via de prive sleutel van de gebruiker
– De server moet beschikken over de public key
● ~/.ssh/authorized_keys
● Permissies moeten goed zijn
● Bij ssh.com ssh anders
● Alternatief voor “.rhost” files
– De private key is dan paswoord equivalent
●
sshkeygen t dsa b 1024
Public key agent
●
Je kunt een paswoord zetten op de prive sleutel
– Alleen bruikbaar na intypen van sleutel passwoord
– Prive sleutel file is niet meer passwoord equivelent
●
Er is een daemon die de decrypte keys onthoudt
– Wel inloggen zonder paswoord
– Zodra de daemon niet loopt is de key veilig
– De sleutel files zelf zijn ook veilig
Configuratie sshd
●
Veel opties (zie sshd_config(5))
– X11Forwarding yes
– AllowTcpForwarding yes
– RSAAuthentication yes
– PasswordAuthentication yes
– PermitEmptyPasswords no
– Subsystem sftp /opt/OpenSource/openssh/libexec/sftpserver
– UseLogin no
●
Beïnvloed veiligheid en mogelijkheden
Ssh & firewalls
●
Alleen tcp poort 22 van client na server
●
Relatief veilige X koppeling
– Geen poort 6000 terug open
– Gebruik magic cookies
●
Stroom is encrypt
– Niemand kan paswoorden sniffen
Firewall problemen
●
Al het verkeer is encrypt
– Verkeersstroom is niet zichtbaar te maken
– IDS kan er weinig mee
●
Portforwarding
– Niet te voorkomen/filteren op firewall
– Verkeer komt van ander ip adres dan oorspronkelijk
Ssh en bruteforce aanvallen
●
Veel bruteforce aanvallen op ssh
– sshd: Invalid user guest4 from 200.68.46.232 sshd: (pam_unix) check pass; user unknown
sshd: (pam_unix) authentication failure; ... rhost=200.68.46.232 ....
●
Diverse oplossingen
– Denyhosts (voegt ip nummers toe in hostdeny)
–
Diverse andere
Documentatie
●
http://www.openssh.com
●
openssh faq
●
O'REILLY The Secure Shell
Conclusies
●
Problemen met
– Logging/ids op het netwerk
– Portforwaring is niet altijd wenselijk
●
Met ssh is een hoop mogelijk
– Vereenvoudigd het werk
– Maakt het werk veiliger
– Gaat goed door firewalls heen