SSH Overview Secure Shell (SSH) was originally authored by Tatu Ylönen, Finland, is a secure replacement for Telnet, rlogin, rcp, rsh and provides secured TCP tunnels. Optional compression of traffic is provided and can also be used together with many Authentication schemes such as SecurID, Kerberos and S/KEY to provide a highly secure remote access point to UNIX servers. SSH1 was the first implementation (protocol v1.2 and v1.5) that was free in the earlier days, but licensing has become very restrictive, SSH Communications and DataFellows [3] are trying to get people to move to the newer commercial SSH2. OpenSSH (a free alternative discussed in [1]) supports both v1 and v2 protocols. Why SSH? The Telnet, rlogin, rcp, rsh commands have a number of security weakness: all communications are in clear text and no machine authentication takes place. These commands are open to eavesdropping and tcp/ip address spoofing. A second key UNIX tool, the X11 windows system, also communicates in clear text, uses dynamic ports (making packet filtering difficult) and has a difficult-to-use access control mechanism "xhosts" and "xauth", that few users understand and hence X11 access control is often insecure on UNIX desktops. SSH uses public/private key RSA authentication to check the identity of communicating peer machines, encryption of all data exchanged (with strong algorithms such as blowfish, 3DES, IDEA etc.). Backwards compatibility to rlogin/rsh and their trust files (rhosts, hosts.equiv) is provided to allow communication with non SSH servers. Optionally, an encrypted tunnel for X11 communications can be automatically setup by SSH (using the xauth access control and DISPLAY environment variable). So SSH protects against: - Eavesdropping of data transmitted over the network.
- Manipulation of data at intermediate elements in the network (e.g. routers).
- IP address spoofing where an attack hosts pretends to be a trusted host by sending packets with the source address of the trusted host.
- DNS spoofing of trusted host names/IP addresses.
- IP source routing
SSH does not protect against: - Incorrect configuration or usage (see disadvantages below).
- A compromised root account. If you login from a host to a server and an attacker has control of root on either side, he/she can listen to your session by reading from the pseudo-terminal device, even though SSH is encrypted on the network, SSH must communicate in clear text with the terminal device.
- Insecure home directories: if an attacker can modify files in your home directory (e.g. via NFS) he may be able to fool SSH.
Features SSH can be used to log-in securely into another computer over a network, execute commands on a remote machine, and copy files from one machine to another. SSH provides strong authentication and secure communications over insecure channels. It is intended as a replacement for rlogin, rsh, and rcp. Additionally, SSH provides secure X11 connections and secure forwarding of arbitrary TCP connections. - Supports strong, proven authentication systems such as RSA, SecurID, S/Key, Kerberos and TIS (as well as the usual UNIX username/password authentication).
- Three types of trust exist: shosts, rhosts compatible and RSA. RSA trust is stronger (using a private/public key system to identify peers), but bypasses the username/password authentication of UNIX.
- The SSH Server runs on UNIX, Linux and VAX.
Client runs on the above, plus Windows and many other platforms. - Data compression can be enabled to improve performance over slow network links.
- SSH Internet Proxies:
- I don't know of any real working SSH proxies: Magosanyi Arpad started working on one based on OpenSSH (see the OpenSSH developers list, message dated 2000-01-13 17:10:05), but hasn't time to finish it.
- SSH can be compiled so that it can traverse SOCKS [0] proxies. SOCKS is a general proxy protocol, originally sponsored by NEC, but now available from several vendors.
SSH2 is the new protocol version, submitted to the IETF for approval by SSH Communications [3]. It is rewritten (improved cryptography) and is designed for more general purpose VPNs. SSH2: - Includes sftp, an SSH2 tunnelled ftp.
- Uses separate config files to SSH1 (e.g. /etc/ssh2/ssh2_config), but can call SSH1 if a client requests SSH1 protocols and SSH1 is available.
- Compatible with SSH1, when ssh1 has been installed prior to ssh2. (OpenSSH supports both, seamlessly).
- DSA and Diffie-Hellman key exchange are supported.
|