I am developing a web application that will expose a public API to the world, but will store very, very sensitive personal, private data. Having the content hacked would be fatal.
I will be using the following technologies:
- REST (over HTTPS)
- Apache server at the backend
- PostgreSQL database
I have come up with an idea (I thought of it myself, so it may have vulnerabilities that security experts on here may spot).
The components of my secure environment are as follows:
Machine A: Front (public) facing server on a dedicated machine (i). This machine has firewall rules to only allow TCP connections via port 443 (HTTPS) (ii). Apache configuration only accepts certain regex patterns of published API (iii). Apache forwards request to server B, using an internal API mapping, and using a secret, non standard port
Machine B: (i). This machine has been setup to only accept data from Machine A (ii). This is where the application logic and data exist (iii). Results sent back to Machine A, to send back to requester.
Can anyone improve on this setup (i.e. 'harden' or make it more secure)?