|
V i r t u a l H o s t i n g
S e c u r i t y I s s u e s
|
|
It is important to consider some of the security issues that relate to
virtual hosting. Because the Virtual Hosts operate in the same Virtual
Server Environment, CGI scripts that are executed by any Virtual Host will
inherit privileges to access any directory or file in your Virtual Server
directory hierarchy.
For example, a malicious Virtual Hosted client could write a simple
script to remove all of the files on your Virtual Server (not a good
thing). Another script could send the contents of your
"~/etc/passwd" file to a remote e-mail address where
"weak" passwords could be decrypted. If your login password is
susceptible to a dictionary crack, a virtual hosted client could
effectively steal shell access away from you.
It is recommended that you do not offer full cgi-bin access to your
Virtual Hosted clients unless you have complete trust in them (even then,
they may accidently cause damage to your Virtual Server). We recommend one
of the following alternatives:
-
Provide stock CGI scripts in a directory you control
Most web sites do not demand a great deal of custom CGI programming. It is
likely that you could provide a library of "stock" CGI scripts
which your virtual hosted clients could then use. A sample composition of
such a library might include: a counter, a guestbook, and a generic form
processor. You would store these scripts in a subdirectory of your
cgi-bin directory (e.g. vhlib). You would then configure each of your
Virtual Hosts to use this cgi-bin
directory by adding the following lines to their
<VirtualHost> definition:
<SRMOptions>
ScriptAlias /cgi-bin/ /usr/local/etc/httpd/cgi-bin/vhlib/
</SRMOptions>
-
Configure the cgi-bin directory separate from the hosts' home
directory
Another alternative is to provide your virtual hosted clients with a
cgi-bin that is not a subdirectory in their home directory. This would
prohibit them from uploading and executing any arbitrary script. Instead,
the subhosted client would e-mail you the script, you would review it, and
then install it into their cgi-bin directory (which can be configured to
be a subdirectory of your main cgi-bin directory). An example is shown
below:
<SRMOptions>
ScriptAlias /cgi-bin/ /usr/local/etc/httpd/cgi-bin/HOSTNAME/
</SRMOptions>
Where the subdirectory HOSTNAME becomes the cgi-bin directory for the
virtual hosted client (you may want to use the same directory name for
both
the htdocs and cgi-bin subdirectories).
We recognize that in most cases it is likely that not only are you
providing your clients with hosting service, but you are also designing
their web content and writing their CGI scripts as well. So this
discussion may not be applicable to your specific situation, but it is
still an element to remember should you decide to expand the scope of your
services in the future.