|
It is important to
consider some of the security issues that relate to
virtual subhosting. Because the Virtual Hosts operate in
the same Virtual Server Environment, CGI scripts that are
executed by any Virtual Host will inherit prvileges to
access any directory or file in your Virtual Server
directory heirarchy.
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 subhosted 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
subhosted 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 <Host>
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 subhosted
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 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
subhosted 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. |