No Next Item No Next Conference Can't Favor Can't Forget Item List Conference Home Entrance    Help
View Responses


Grex Garage Item 30: Hardware/firewall - your recommendations please
Entered by spooked on Sat Dec 23 09:29:50 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.



#1 of 19 by spooked on Sat Dec 23 09:44:19 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.



#2 of 19 by nharmon on Sat Dec 23 14:11:10 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.


#3 of 19 by nharmon on Sat Dec 23 14:20:46 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.


#4 of 19 by spooked on Sat Dec 23 21:46:56 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?




  



#5 of 19 by tod on Sat Dec 23 21:54:09 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.


#6 of 19 by spooked on Sat Dec 23 22:34:27 2006:

What do you mean by managing the entire client?


#7 of 19 by spooked on Sat Dec 23 23:36:42 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.



#8 of 19 by spooked on Sat Dec 23 23:52:58 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.



#9 of 19 by tod on Sun Dec 24 05:17:47 2006:

re #6
Entire client=desktop


#10 of 19 by spooked on Sun Dec 24 07:53:16 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).




#11 of 19 by spooked on Sun Dec 24 07:59:57 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.





#12 of 19 by nharmon on Sun Dec 24 13:19:16 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.


#13 of 19 by cross on Sun Dec 24 14:39:26 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.


#14 of 19 by maus on Sun Dec 24 20:52:17 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). 


#15 of 19 by spooked on Sun Dec 24 22:19:54 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.





#16 of 19 by spooked on Sun Dec 24 22:25:18 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.






#17 of 19 by cross on Mon Dec 25 04:20:21 2006:

Such is life, I guess....


#18 of 19 by spooked on Mon Dec 25 08:21:39 2006:

Tell me about it :p



#19 of 19 by gull on Thu Dec 28 20:08:01 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.)

Response not possible - You must register and login before posting.

No Next Item No Next Conference Can't Favor Can't Forget Item List Conference Home Entrance    Help

- Backtalk version 1.3.30 - Copyright 1996-2006, Jan Wolter and Steve Weiss