I am about to deploy a web application (in a couple months) with the following set-up (perhaps anyways):
Ubuntu Lucid Lynx with:
IP Tables firewall (white-list style with only 3 ports open)
Custom SSH port (like 31847 or something)
No "root" SSH access
Long, random username (not just "admin" or something) with a long password (65 chars)
PostgreSQL which only listens to localhost
256 bit SSL Cert
Reverse proxy from NGINX to my application server (UWSGI)
Assume that my colo is secure (Physical access isn't my concern for the time being)
Application-level security (SQL injection, XSS, Directory Traversal, CSRF, etc)
Perhaps IP masquerading (but I don't really understand this yet)
Does this sound like a secure setup? I hear about people's web apps getting hacked all the time, and part of me thinks, "maybe they're just neglecting something", but the other part of me thinks, "maybe there's nothing you can do to protect your server, and those things are just measures to make it a little harder for script kiddies to get in". If I told you all of this, gave you my IP address, and told you what ports were available, would it be possible for you to get in (assuming you have a penetration testing tool), or is this really protected well.