9.11 Using a Virtual Private Network to Secure Network Connections
9.11.1 Problem
Your
program operates over a network and interacts with an existing
network infrastructure that provides no support for secure
communications such as SSL. You're guaranteed that
your program will be used only by a select group of people, and you
need to secure its network traffic against sniffing and hijacking.
9.11.2 Solution
For this type of problem, using an SSL tunnel such as
Stunnel is
sufficient, but the certificate requirements and limited verification
options provided by Stunnel may not provide everything you need. In
addition, some network protocols do not lend themselves to SSL
tunneling. (FTP is such a protocol because it may use random ports in
both directions.) An alternate solution is to use a virtual private
network (VPN) for the network services that your program needs.
9.11.3 Discussion
VPNs can be tricky to set up and get to work properly. There can be
many interoperability problems across platforms, but VPNs provide a
clean solution insofar as requiring fewer modifications to firewall
rules (especially if there are many insecure network services
involved), less deployment of tunneling software, and less ongoing
maintenance. Adding or removing services becomes an issue of turning
the service on or off—no changes to firewalls or tunneling
configurations are required. Once the VPN is up and running, it
essentially takes care of itself.
Although we do suggest the possibility of using a VPN when the other
solutions we've provided here
aren't feasible for your situation, a complete
discussion of VPN solutions is well beyond the scope of this book.
Entire volumes have been dedicated to the topic, and we recommend
that you consult one or more of those books if you want to pursue the
use of VPNs. A good launch point for VPN information is
Building & Managing Virtual Private Networks
by Dave Kosiur
(John Wiley & Sons).
|