|
Grex > Garage > #30: Hardware/firewall - your recommendations please | |
|
| Author |
Message |
spooked
|
|
Hardware/firewall - your recommendations please
|
Dec 23 09:29 UTC 2006 |
When I wasn't looking, a colleague (proofreading my resume) asked me
to do some security work on a software system he is planning to release
soon to some clients. The software was built principally by him, and will
be housed/served out of a data centre. I'm being consulted for all
matters (hardware, software, database, network) security related to the new
venture. This has inspired me to start my own IT security business in my
spare time, something I was always going to do one day - just not so soon
or effortlessly I thought :)
Anyhow, I would like some advice from the Grex community on what
hardware/infrastructure you would recommend. He was originally going to
host the application on a virtual machine share in the data center... it
did not take rocket science thinking for me to instruct him this was a bad
idea. So, we are now more looking at a completely separate box (acquired,
installed, and managed by us) to be stored in the data center.
To give you an idea of the requirments, it is a thick-client application
developed in Visual Basic .Net talking to a SQL Server 2005 database, with
no (or very little application-main) server logic, except for stored
procedures in the database. There will be a small component utilised
initially for securely registering (think licensing) a customer pool for a
client organisation, but this is not the core part of the application.
I'm not so concerned about the security requirements, but I would like
your input on what hardware (firewalls, VPNs, and specifications for the
server-class machine we should purchase). At any one time there may be
say 30 clients maximum querying the database. He is thinking Raid-1 for
backups.
Comments ASAP please :)
|
| 19 responses total. |
spooked
|
|
response 1 of 19:
|
Dec 23 09:44 UTC 2006 |
Further info:
- Client users will be (typically) running Windows XP on a Windows 2000 or
2003 domain, using a firewall router connected to an ADSL modem.
- The operating system on the server will be Windows 2003 Standard Server.
- Correction: typically each client organisation (let's factor in maximum
5 client organisations in the first year) will have anywhere btween 3
and 30 potential concurrent users.
- Each client organisation will have a separate database instance (same
schema though) on the Microsoft SQL Server Enterprise edition server.
- App configuration being thick client calling stored procedures.
- Following each transaction, the application disconnects - i.e. breaks
connection - therefore concurrent connections on the server should be at
most times be limited to users that are either fetching, updating, or
inserting data and be minimal.
- The client's data is operationally critical meaning it is the only audit
trail of cient contact.
Thanks for your hardware advice ASAP, in advance.
|
nharmon
|
|
response 2 of 19:
|
Dec 23 14:11 UTC 2006 |
From a security standpoint I would recommend against your database
allowing remote connections from the internet, even if such connections
are through a VPN. I think that a compromised client having that type of
access could be disasterous. I think you should look into a way of
serving this "fat client" as a thin-client. This isn't as hard as you
think, and my recommendation to do so would be using Citrix Presentation
Server.
When a client connects to Citrix, the Citrix server will launch the
application and then serve the display and inputs in an x-terminal type
fashion. The advantage is that you only need to install the application
to one machine, the Citrix server. This also means that when it comes
time to upgrade you only have to upgrade the application on one machine,
the Citrix server.
We use Citrix where I work to provide database-driven banking
applications to end-users off-site. It has worked really well for us and
I think it would be worthwhile to check out.
|
nharmon
|
|
response 3 of 19:
|
Dec 23 14:20 UTC 2006 |
Hardware recommendations:
We have had really good experience with IBM x-series servers. They are
very well built, and the support has been phenominal. We tried Dell for
a short time, but their service was terrible.
As for firewalls and VPNs, I am definetely a Cisco fan-boy so naturally
I would suggest looking into a ASA or PIX firewall. And while Cisco does
have its own VPN system (3000 concentrator), you should look into a
system called Firepass from F5 networks.
|
spooked
|
|
response 4 of 19:
|
Dec 23 21:46 UTC 2006 |
Thanks, a couple of questions:
(1)
I like the idea of application virtualization, however I would like a
way for the virtualized application on the server to be able to have
some access to the client's machine (for licensing, auditing, and
determining which database instance to connect to). Is this possible?
If so, how does it work? For instance, if the virtualized application
read a MAC address - would it be grabbing the client machine's MAC
address or the MAC address of the virtual application network connection?
(2) If the above is NOT possible, does this not just shift (and
potentially increase) security threats to client organisations?
Guessed/brute-force attacked/socially-engineered attained login
credentials of another organisation's clients would allow the attacker
full access to that other organisation's data. Or is there a way to
combine the security of the VPN with the application's hardcoded
security?
|
tod
|
|
response 5 of 19:
|
Dec 23 21:54 UTC 2006 |
Are you managing the entire client or just the .NET application? I would
recommend a thin client with SSL-VPN if you don't have control over the end
user's machine.
|
spooked
|
|
response 6 of 19:
|
Dec 23 22:34 UTC 2006 |
What do you mean by managing the entire client?
|
spooked
|
|
response 7 of 19:
|
Dec 23 23:36 UTC 2006 |
Due to timeframe of rollout and hardware/licensing costs the application
server virtualization approach is not a feasible solution in
this project.
The .NET application is a self-contained, standalone application - not
interfacing with any other applications on the client.
|
spooked
|
|
response 8 of 19:
|
Dec 23 23:52 UTC 2006 |
One of the likely client organisations has a Cisco 837 Router already in
place.
We have an understanding that we can ask/demand the client organisations
to acquire a minimum-spec router/VPN to securely connect to our firewall
router (to be acuired by us) for communication route ultimately to our
application.
|
tod
|
|
response 9 of 19:
|
Dec 24 05:17 UTC 2006 |
re #6
Entire client=desktop
|
spooked
|
|
response 10 of 19:
|
Dec 24 07:53 UTC 2006 |
The thick client has no interfaces to any other applications on the
client's OS. We are not going down the virtualization approach (in any
form) due to timeframe and costs; that's pretty neat anyhow (least I
researched it quite a bit and learned a bit more about some technologies
in that space).
This is going to be a neat little project --- security from many angles,
and I'll get to play with .NET and SQL Server (*giggles* neither my
preferred cup of tea normally - but great for the novelty factor and good
experience).
|
spooked
|
|
response 11 of 19:
|
Dec 24 07:59 UTC 2006 |
For those interested, you can take a look at my new business card on
http://spooked.unixcab.org/
I'm not a graphic designer, but I think I did an okay job with the
layout. Always could have done better, with more time -- but, I always
rush fluffy stuff.
The cards will be finished in a glossy coating. Anyhow, let me know what
you think.
|
nharmon
|
|
response 12 of 19:
|
Dec 24 13:19 UTC 2006 |
FWIW, Citrix isn't virtualization, its terminal services. And if you are
going to go ahead and have the clients installed onto end-user
workstations, then I really think you should look into Firepass VPN. It
will sit behind the Cisco 837 router and allow external clients to
connect using a web browser. The browser initiates the VPN networking
and can check to make sure the client has proper anti-virus, etc.
|
cross
|
|
response 13 of 19:
|
Dec 24 14:39 UTC 2006 |
The standard solution for this type of thing is to use a 3-tier architecture,
with an application server sitting in the middle mediating access to the
database.
|
maus
|
|
response 14 of 19:
|
Dec 24 20:52 UTC 2006 |
I am going to have to agree with other posters here and suggest that it
would be better to run the client programme on a secured, controlled
server and simply export the display of it, rather than having the
client out in the wild. If that is not an option, at the very least you
do not want the client to ever have any way of reaching the database
itself, and require it to have its access to the database brokered and
mediated via a server programme that authenticates the client and
actually performs the database transactions. Consider the following
stack of tasks:
display
client logic
communications
server logic
data access logic
data storage
You gain better control over the behaviour and expose fewer potential
vulnerabilities the higher up on that list you manage to keep
centralized. Additionally, by only exporting the display (either through
a web application like moving the client and server logic into asp.net
or by using an application service like Citrix), you can do upgrades
without having to ship CDRoms or making the customers download a new
client programme.
Regarding moving the data access logic off of the client, consider this:
you have a legit user who fires one of their employees. This employee is
vindictive and clever and dissects the client programme and figures out
how to connect directly to your database and muddies up all of the data
for their former employer. Since you control the database, your customer
would be pissed off at you. And would probably voice their displeasure
by having their attorney send certified letters to your attorney, and
that can only end badly.
A good rule of thumb is to keep a database isolated with only two links:
a link directly to the server application and a link into the back-end
for monitoring and for mounting SAN/NAS/CIFS shares. It should only
accept queries and whatnot from the server, which scrubs and sanity
checks everything.
If you have to keep the client as a "fat client" programme, I would at
least recommend that you move as much of the business logic and data
access logic into the server, and also make use of some sort of
encrypted tunneling system, such as ssh or a VPN (Cisco's ASA is sexy,
and might even be better than the PIX).
|
spooked
|
|
response 15 of 19:
|
Dec 24 22:19 UTC 2006 |
Yes, I know full well that a 3+ tiered architecture is the way to go, in
any professional Internet-business-data solution. I have worked in the
past as a security analyst/programmer and more recently as a Java/J2EE
architect/lead developer/team leader, so I'm fully aware of good
application and security design.
But, in the real-world, often security is added too late in the
development/production cycle - I have seen it on almost every client
project I have ever worked on. Furthermore, clients (including major Telco
providers and govt departments) not only don't understand (or care) that
it is more difficult to retrofit good security, but they don't want to
budget an awful lot of cash for hardening an application.
I'm very limited in changing the architecture of this application, but in
my report I will of course make the client aware that the parameters I
have been tasked to work within make the solution less than ideal in terms
of security.
|
spooked
|
|
response 16 of 19:
|
Dec 24 22:25 UTC 2006 |
As long as I make this clear, get it in writing, and get client signoff
before proceeding - I cover myself as a professional. It is not ideal,
but it's business I'm afraid.
|
cross
|
|
response 17 of 19:
|
Dec 25 04:20 UTC 2006 |
Such is life, I guess....
|
spooked
|
|
response 18 of 19:
|
Dec 25 08:21 UTC 2006 |
Tell me about it :p
|
gull
|
|
response 19 of 19:
|
Dec 28 20:08 UTC 2006 |
This is slightly off topic, but we use a lot of remotely-hosted Citrix
applications where I work. What amazes me about Citrix is how fast it
is. I'm used to remote access apps like VNC and pcAnywhere, and
they're a real pain over Internet links, with the remote system often
lagging behind mouse clicks and typing. These Citrix apps, on the
other hand, could be mistaken for something locally hosted (and
sometimes are by users.)
|