Re: Securing ssh tunnels.
From: Brian Hatch (secure-shell_at_ifokr.org)
Date: 06/26/03
- Previous message: joseph pape: "Second instance if SSH not running"
- In reply to: Darren Reed: "Re: Securing ssh tunnels."
- Next in thread: Paul Newhouse: "Re: Securing ssh tunnels."
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ] [ attachment ]
Date: Thu, 26 Jun 2003 10:20:12 -0700 To: Darren Reed <avalon@caligula.anu.edu.au>
> I was thinking why would you do this and then I thought, shouldn't
> there be an ssh proxy ? (You can all stone me for suggesting this
> after you've read it ;)
As a user, I like the ability to have an end-to-end secured
connection, and any interference from the firewall administrator
would annoy me, and I'd try to get around it if I could.
As the security guy in charge of the firewall, the idea of an
SSH proxy is very appealing. You'd be impersonating the remote
server, so since you're the negotiation endpoint, you'd be able
to disable things like X11, agent, or port forwards, yet allow
generic connections through. While it's obvious a determined
user could overcome these, the default would stop most simple or
unintended problems, such as old ssh_config files that allow X11
by default.
A transparent proxy would do a full mitm 'attack', more or less:
client attempt to connect out to the internet
proxy get's the connection instead (use whatever means are
available on your firewall...)
proxy knows the outgoing IP address
proxy checks local directory to see if it's got a fake
host key for this IP. If not, it creates one and
uses that host key for this destination henseforth.
(It could use the same key for all destinations if
you prefer - this may make more sense, but it does
make your known_hosts file look rather suspicious.)
proxy make client SSH connection to the actual destination
proxy checks a second local directory to see if it's got a
host key for this destination. If not, it stores
the one presented. If it does, it verifies that it's
correct.
proxy continues handshake with user, refusing any options we
don't like and requesting those we do from the actual
server
proxy shuttles authentication methods back and forth
proxy encrypts/decrypts as appropriate (content checking
could be integrated here iff necessary)
The first obvious problem is that there's no way to provide the
user with the ability to say the destination's host key is correct,
so the proxy must trust it on faith. I can't think of an easy way
to get around this without providing some sort of actual proxy
support into SSH itself, where it'd have a chance to acknowledge
the proxy's key and then the true destination's key. It'd never be
actually using the true destination's key, except for that one initial
acceptance. This also brings up other issues - if Mr "I'll click
anything" blesses the destination key, am I stuck with his decision,
even though I'd normally check the key manually?
-- Brian Hatch Military Intelligence Systems and Microsoft Works Security Engineer http://www.ifokr.org/bri/ Every message PGP signed
- application/pgp-signature attachment: stored
- Previous message: joseph pape: "Second instance if SSH not running"
- In reply to: Darren Reed: "Re: Securing ssh tunnels."
- Next in thread: Paul Newhouse: "Re: Securing ssh tunnels."
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ] [ attachment ]