Would appreciate your patience with this question; still learning a lot of things.

My Taxi booking start-up has a website (CakePHP) hosted on EC2 (for reliability) which is a ERP of sorts used only by internal employees. This tool also interacts with the Cabs/Taxis' GPS receivers in that these GPS machines send some data to the public server through some APIs which help decide logic for the Booking process. And as we don't have very strong Net on premises, we've kept it all on EC2.

Now, we are increasingly concerned about leaving information (customer data, vehicle info) like this on the public domain and accessible from the internet and outside the premises by a rogue employee. For our implementation, MySQL replication has already been considered with us reading from a local slave, writing to the master and etc. The only issue being, there's no way non-technical employees would know whether the data is new or whether the replication is broken. Also, we'd prefer our servers online as we don't want to invest in physical security for this hardware.

We are thinking of the following:

  1. IP address based auth; those belonging to the local NAT would be allowed. Problem is we have a dynamic IP.

  2. Computername/MacID based auth; almost no-security once the user finds out. Also, can we read these parameters from Chrome?

  3. Storing a list of IP addresses that login and as there are just 6 employees, we'd be able to monitor it for weird IPs. Not scalable or even secure.

  4. Hosts file configuration on employee PC and this "host" would be configured on apache2 so directly hitting the IP address would do no good. Again, needs one smart employee.

  5. SSH based routing to the mainserver with access only from localhost on the main server..but unable to configure this.

Do help us out!

| improve this question | | | | |
  • 1
    One other option is to look into a VPN (e.g. Amazon's VPC) - have publicly accessible instance that receives your API calls, and setup your other instances to not be directly accessible via the internet. You can still save data from the public instance to the other ones. Either use Amazon's VPN Connection or setup something such as OpenVPN to make the EC2 instances appear part of your local office network, with no outside access. – cyberx86 Dec 25 '11 at 7:28
  • Static IP addresses are usually not that expensive. I would talk to your ISP and see if you can get a static IP. – David W Dec 28 '11 at 12:02

As someone having pointed it out, use a VPN service and IP address based auth could help.

| improve this answer | | | | |
  • Did it with a local PC thats always on. All PCs are routed to that for my Domain. And only localhost connections are allowed on that PC. – kouton Jan 4 '12 at 6:28

Here is how I would do it. I would get two network interfaces, say eth0 and eth1 (or create a virtual interface eth0:1). eth0 will have a public IP whereas eth1 will have ip from VPN. Now you can configure iptables or any other firewall you are using to allow everything from eth1 but eth0 should have all the ports blocked except for the api one.

| improve this answer | | | | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.