Network Security for the Systemtap Client/Server
Dave Brolley
brolley@redhat.com
Thu Nov 6 18:34:00 GMT 2008
Frank Ch. Eigler wrote:
> Hi -
>
> On Wed, Nov 05, 2008 at 04:53:25PM -0500, Dave Brolley wrote:
>
>
>>>> Wire Level Security
>>>>
>> [...]
>> If I understand correctly, the only way to ensure that the script has
>> not been modified on route is to have the client sign it with its own
>> certificate and private key. This can be easily done using the same
>> techniques used by the server to sign its response. [...]
>>
>
> That could well be an overkill. Standard wire-level security like
> TLS/SSL, without extra explicit signatures, should be sufficient for
> protection against a hostile network.
>
I'll let you make the call on sufficiency. However while a SSL/TLS
connection provides server authentication and encryption, I still don't
believe that it alone protects against tampering. Search for "tampering"
in the following page:
https://developer.mozilla.org/en/Introduction_to_Public-Key_Cryptography#Internet_Security_Issues
>
>
>> [...]
>> Note that stap-client makes use of more than just the returned
>> module. Output from stap on the server side is also used and this is
>> why I'm proposing that the entire server response be
>> signed. stap-client needs to know that no part of the server
>> response has been tampered with.
>>
>
> That's a good point, but that's adequately addressed by wire-level
> security. It may help to consider the wire-level stuff orthogonal -
> as indeed it is since we can theoretically connect stap-client and
> stap-server with a local unix pipe.
>
Once again, I believe that if we're worried about tampering, then
signing is the way to protect against it.
>
>
>> Some possibilities for verification of the module by staprun on the
>> client side are:
>>
>> 1) Separately sign the module within the signed server response, which
>> seems a bit redundant to me given that the entire server response is
>> already signed by the server and verified by the client. [...]
>>
>
> Yes, but the client (stap-client) cannot be trusted by staprun.
> staprun need only care that the final module is built correctly.
>
So are you preferring the option above over option 2 (staprun
re-verifies the entire response)?
>>> [...]
>>> All that must be automatable to death. The wire protocol part's user
>>> interface should be no clumsier than, say, svn talking to a https:
>>> server.
>>>
>> Right. Bear in mind that these are sysadmin tasks performed once for
>> each client/server on the network. These tasks are analogous to using
>> ssh-keygen to generate key pairs for ssh and adding the public
>> identities to each machine one wants to access.
>>
>
> I don't see a need yet for client-side *authentication* that might
> necessitate signing keys there, so that leaves only the ssh-keygen
> part.
>
> So, for module-signing purposes, sshd's host key is analogous to
> stap-server's signing key, and ssh's $HOME/.ssh/known_keys (treated
> more like authorized_keys) is analogous to the staprun's approved keys
> list.
>
We're in agreement here.
Dave
More information about the Systemtap
mailing list