Protect with tls frontend#938
Open
dmargery wants to merge 2 commits into
Open
Conversation
A per python docs, the built-in HTTP request handler is not fit for production. Add an option to use geni-tools in production by having it listen on localhost, using http, to be called by a frontend that will handle the TLS handshake and pass the client certificate as an HTTP Header. To use this variant, you need to set proto and certheader options in the configuration file.
Member
|
Eyeballing this the changes look fine. Certainly the goal is appropriate. Can you verify that with old arguments the old behavior remains? Can you speak to what testing you have done? |
|
The Grid'5000 testbed has been using dmargery's fork with a TLS frontend for a couple of year without any difficulties. As far as I know these changes preserve the previous behavior if no changes are done to the configuration file. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
I run an aggregate manager on the default https port at am.grid5000.fr
Being on default port, it gets its share of malicious https traffic, and some of it is able to cause a Denial of Service due to incomplete TLS handshakes (as far as I understand).
Due to the warning on https://docs.python.org/2/library/simplehttpserver.html, I understand I should not be using geni-tools to run a production entry point to a testbed, as I understand that deep down the layers, the code for SimpleXMLRPCServer uses the same ssl_wrapper over sockets as SimpleHTTPServer and is therefore subject to the same warning.
This MR implements an insecure XMLRPCServer that expects to sit behind a TLS proxy (we use apache2 for that). The TLS proxy handles all the incoming traffic, and only passes "verified" traffic down to geni-tools, over http, transferring the verified certificate as an http header.