Gebruik van ssh
Gebruik van ssh Marcel Nijenhof
[email protected] 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
–
ssh nijen018@server f xterm # Background ssh
# Wel terminal controls
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
Scp & Sftp
–
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
ser3 telnet groen 1111
ser1
tunnel in ssh
ser2
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
ser3 telnet vanuit ssh
ser1
tunnel in ssh
ser2
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
Vragen
?