Hi --

My group at a major hospital wants to visualize ca. 1 TB of BAM files from
an internal server as UCSC Genome Browser custom tracks, without needing to
copy them all to an external webserver.  I'm trying to think of
sufficiently draconian security measures that admins will
allow reverse-proxy access to these files through the firewall by the UCSC
Genome Browser.  Seems this would be a common need; so worth some effort to
make solid.  What do you think of these parameters?

   1. Limit reverse-proxy access to *just* the UCSC Genome Browser servers.
    If you can tell us the IP address/range, that would be best, to foil DNS
   spoofing.
   2. ProxyPass  doesn't allow queries in URLs; also block directory
   listing and all access methods but GET.
   3. Obfuscate each filename with a long random hex number so they can't
   be guessed.
   4. Internal server disallow access except to the BAM directory and don't
   follow symbolic links; so no access to the rest of its filesystem.

(See suggested implementation and links below.)

Comments?  *Specific request:  if possible specify the IP address range* from
which UCSC server file access requests could come.

Thanks much and happy New Year!
Howie

PS: Here are some resources and an (untested) suggested implementation, for
anyone trying something similar.

*UCSC custom tracks*

   - Basics: http://genome.ucsc.edu/goldenPath/help/bam.html and
   http://genome.ucsc.edu/goldenPath/help/customTrack.html#SHARE
   - Our server must accept byte-range requests (206 Partial Content
   response):
   https://lists.soe.ucsc.edu/pipermail/genome/2011-February/025008.html
    and
   http://comments.gmane.org/gmane.science.biology.ucscgenome.general/7742
   - FTP-specific:
   http://www.mail-archive.com/[email protected]/msg01742.html

*Reverse proxy*
Apache mod_proxy basics: http://httpd.apache.org/docs/2.0/mod/mod_proxy.html .

Security tips: http://httpd.apache.org/docs/2.0/misc/security_tips.html

*Sample config*
For our server named ourlocalserver to serve *only* files physically
located in /var/www/html/bamfiles
and an external webserver to make them available *only* to the UCSC servers
at external URL http://example.org/ourgroup/bamfiles
I think the config should look something like the following.

*External webserver*

ProxyRequests Off

<Proxy *>
   Order Deny,Allow
   Deny from all
   Allow from (IP address of http://genome.ucsc.edu)
</Proxy>

ProxyPass  /ourgroup/bamfiles  http://localserver/bamfiles


*Internal server configuration*

Lock down access to the filesystem by default:

UserDir disabled root

<Directory />
   Order Deny,Allow
   Deny from all
   Options -Indexes -FollowSymLinks
   AllowOverride None
</Directory>


Only enable access to BAM directory:

<Directory /var/www/html/bamfiles>
   Order Deny,Allow
   Allow from all

</Directory>


Disable all but GET: (not sure if Deny all is correct, but that's what I
want: so no one can POST etc.)

<LimitExcept  GET>
   Deny all
</LimitExcept>




-- 
Howard Goodell, Sc.D.
617 401-1090 cell
Skype howiegoodell
Google Talk howie.goodell

“He that will not apply new remedies must expect new evils, for time is the
greatest innovator.”
—Francis Bacon, Essays
_______________________________________________
Genome maillist  -  [email protected]
https://lists.soe.ucsc.edu/mailman/listinfo/genome

Reply via email to