We have created an amateur software product related with monitoring and management of specific services. It has been made in Python and runs a web service as frontend to show the data in a nice way besides other things.

We have one problem that we did not solve yet, and is how to distribute it in a way that the virtual appliance cannot be manipulated (so that the code and settings cannot be changed or viewed). We have a bunch of options:

  • Provide this as a SaaS, sending the data remotely (completely discarded for obvious security reasons)

  • Build a server with custom hardware that would be physically secured so at least can't be easily manipulated (discarded for high costs)

  • Create a virtual appliance (i.e. pre-configured VM) with ciphered data, capped console and literally no way to reset user password (i.e. not able to access anything) besides other details

The third option is what I like most, but I am not sure how feasible it is. My intention is not to have a bulletproof virtual appliance which is impossible to manipulate but at least make it harder to do so.

The problem, I do not know where to start to make the virtual appliance more secure as this is a challenge I never had to face before. Could you give me some tips? Am I on the right path?

closed as unclear what you're asking by Philipp, RoraΖ, AviD Dec 9 '14 at 12:43

Please clarify your specific problem or add additional details to highlight exactly what you need. As it's currently written, it’s hard to tell exactly what you're asking. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • There is nothing you can do once the attacker has physical access to the machine, in this case physical access means the user controls the hypervisor on which your virtual machine will run. – user42178 Dec 9 '14 at 11:55
  • Why not just distribute it as an executable binary? What exactly is the threat you want to protect it from? – Philipp Dec 9 '14 at 11:56
  • @AndréDaniel I am aware that having physical access is something difficult to dodge in terms of protection but I am sure something can be done. Philipp thanks for pointing that out as I completely forgot to talk about the real threat but basically they should not be able to get the code easily. Besides partial obfuscation there is not much you can do AFAIK (maybe Cython?). – Brock Dec 9 '14 at 12:04
  • I've edited the question to provide a bit more details about the issue I am trying to solve. – Brock Dec 9 '14 at 13:13
  • @Brock It is now clearer what you want, so I nominated your question for reopening. However, you might want to reconsider if that threat is really that big of a deal. Hiding your sourcecode from your customers is usually a risk which is greatly overstated, because in case of business customers you can prevent most abuse legally through contracts and license agreements. – Philipp Dec 9 '14 at 13:15