[cvs] [Wiki] changed: SecurityTips

Wiki Guest wiki at wiki.horde.org
Sat Nov 27 12:25:40 PST 2004


guest [217.184.155.24]  Sat, 27 Nov 2004 12:25:40 -0800

Modified page: http://wiki.horde.org/display.php?page=SecurityTips
New Revision:  1.3

@@ -1,11 +1,10 @@
 +++ Horde Security Tips
 +++++ The content of this page is mainly derived from the security-section in the Horde documentation. It is aimed at system administrators who want to add some extra security to their Horde installations (or for those who are a bit paranoid ;) )
 
 ++++ Introduction
-The configuration examples here have been tested by me on a Fedora Core 1 system running Apache 2.0.51 with mod_ssl.
-My httproot is {{/var/www}} and I made Horde store its stuff in {{/var/cache}} and {{/var/log}}.
-I'd like to here some opinions from administrators of other systems...
+The configuration examples here have been tested by me on a Fedora Core 1 system running Apache 2.0.51 with mod_ssl and Horde 2.2.7.
+My Apache is serving most files out of {{/var/www/html}}. Thus my Horde installation lives in {{/var/www/html/horde}}. Please keep this in mind if you are applying any of these configurations on your system.
 ----
 ++++ Filesystem Permissions
 <code>
 chown -R apache.apache /var/www/html/horde
@@ -26,34 +25,55 @@
 ++++ Apache/PHP Configuration
 The Horde documentation is suggesting an awfull lot of <Directory> instructions to secure Hore. I've found a way to limit those to one <Directory> and one <DirectoryMatch> instruction //and// statisfy Horde's needs towards PHP on the fly:
 <code>
 <Directory "/var/www/html/horde/">
-  php_admin_flag  safe_mode        off         # Only needed if you have got safe_mode globally on
-  php_admin_value open_basedir     "/var:/usr" #	/usr b/c of PEAR. /var is needed for my installation...
-  php_admin_flag  expose_php       off         # always a good idea :)
-  php_admin_flag  display_errors   off         # If you do this (recomended by the PHP documentation, btw)...
-  php_admin_flag  log_errors       on          # ... you need to set this also. Don't forget to specify a logfile!
+  # Only needed if you have got safe_mode globally on
+  php_admin_flag  safe_mode        off
+
+  # /usr b/c of PEAR. /var is needed for my installation...
+  php_admin_value open_basedir     "/var:/usr" 
+
+  # always a good idea :)
+  php_admin_flag  expose_php       off
+
+  # If you do this (recomended by the PHP documentation, btw)...
+  php_admin_flag  display_errors   off
+
+  # ... you need to set this also - otherwise you'll have no idea what's wrong if something doesn't work.
+  # Don't forget to specify a logfile in your php.ini or elsewhere!
+  php_admin_flag  log_errors       on
   php_admin_flag  register_globals off
 </Directory>
 
-<DirectoryMatch "^/var/www/html/horde/(.*/)?(config|lib|locale|po|scripts|templates)(/.*)?">
+<DirectoryMatch "^\/var\/www\/html\/horde\/(.*\/)?(config|lib|locale|po|scripts|templates)(\/.*)?">
   order deny,allow
   deny  from all
 </DirectoryMatch>
+
+<LocationMatch "^\/horde\/(.*\/)?test\.php">
+  order deny,allow
+  deny  from all
+  allow from localhost
+</LocationMatch>
 </code>
-This way you can safely switch {{php_safe_mode}}globaly on and still have Horde working. Please notice that you might need to modify the {{open_basedir}} directive. It includes {{/var}} in this example because there are a lot of important things in {{/var}} on my server (i.e. the cache and the logfile for Horde),
+This way you can safely switch {{php_safe_mode}} globaly on and still have Horde working. Please notice that you might need to modify the {{open_basedir}} directive. It includes {{/var}} in this example because there are a lot of important things in {{/var}} on my server (i.e. the cache and the logfile for Horde),
 
 Please take note that you need to put this into your httpd.conf because the {{php_admin_*}} instructions won't work in a .htaccess file. If you do so, don't forget to use {{httpd -t}} to check for syntax errors in your httpd.conf before you restart your Apache. Apache 2.0.x allows you to place a config file into {{/etc/httpd/conf.d/}} so you can place the whole thing into a new file {{/etc/httpd/conf.d/horde.conf}}. If the directory {{/etc/httpd}} doesn't exist on your system, you may execute the following command on a shell to find out, what your Apache's config-directoy is:
 <code>
 httpd -V | grep HTTPD_ROOT
+httpd -V | grep SERVER_CONFIG_FILE
 </code>
 
 Also note that I used escaped slashes in the RegEx for the <DirectoryMatch> instruction. Apache seems to cope with unescaped metacharacters. But since I'm using perl-RegEx most of the time, I'm used to escape those.
 
 The <DirectoryMatch>-instruction is restricting access to the folders //config//, //lib//, //locale//, //po//, //scripts// and //templates// in Horde and all its applications.
+<LocationMatch> prevents Horde's test.php scripts being accessed from the outside. The Horde documentation is suggesting to restrict //all// hosts. This example allows access from your localhost so you can run the tests via lynx, for instance.
+
 Interesting read:
 * Guide on [http://www.regular-expressions.org RegularExpressions]
 * [http://www.php.net/manual/en/ini.php List of core php.ini directives]
 * [http://www.php.net/manual/en/security.php PHP Security Manual]
 * Apache 2.0 documentation on the [http://httpd.apache.org/docs-2.0/mod/core.html#directory <Directory>] instruction
 * Apache 2.0 documentation on the [http://httpd.apache.org/docs-2.0/mod/core.html#directorymatch <DirectoryMatch>] instruction
+* Apache 2.0 documentation on the [http://httpd.apache.org/docs-2.0/mod/core.html#locationmatch <LocationMatch>] instruction
 ----
+++++ MySQL Configuration


More information about the cvs mailing list