You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by jf...@apache.org on 2002/11/11 17:08:33 UTC
cvs commit: jakarta-tomcat-catalina/webapps/docs security-manager-howto.xml
jfarcand 2002/11/11 08:08:33
Modified: webapps/docs security-manager-howto.xml
Log:
Add a section on package protection. Add minor change to the introduction.
Revision Changes Path
1.3 +67 -29 jakarta-tomcat-catalina/webapps/docs/security-manager-howto.xml
Index: security-manager-howto.xml
===================================================================
RCS file: /home/cvs/jakarta-tomcat-catalina/webapps/docs/security-manager-howto.xml,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- security-manager-howto.xml 30 Jul 2002 03:58:28 -0000 1.2
+++ security-manager-howto.xml 11 Nov 2002 16:08:33 -0000 1.3
@@ -8,6 +8,7 @@
<properties>
<author email="glenn@voyager.apg.more.net">Glenn Nielsen</author>
+ <author email="jeanfrancois.arcand@sun.com">Jean-Francois Arcand</author>
<title>Security Manager HOW-TO</title>
</properties>
@@ -35,12 +36,13 @@
Using the Java SecurityManager is just one more line of defense a
system administrator can use to keep the server secure and reliable.</p>
- <p><strong>WARNING</strong> - Implementation of a SecurityManager in
- Tomcat has not been fully tested or had a security audit. Make sure that
- you are satisfied with your SecurityManager configuration before allowing
- untrusted users to publish web applications, JSPs, servlets, beans, or
- tag libraries. However, running with a SecurityManager is definitely
- better than running without one.</p>
+ <p><strong>WARNING</strong> - A security audit
+ have been conducted using the Tomcat 5 codebase. Most of the critical
+ package have been protected and a new security package protection mechanism
+ has been implemented. Still, make sure that you are satisfied with your SecurityManager
+ configuration before allowing untrusted users to publish web applications,
+ JSPs, servlets, beans, or tag libraries. <strong>However, running with a
+ SecurityManager is definitely better than running without one.</strong></p>
</section>
@@ -66,7 +68,7 @@
access to JVM properties such as <code>java.home</code>.</li>
<li><strong>java.lang.RuntimePermission</strong> - Controls use of
some System/Runtime functions like <code>exit()</code> and
- <code>exec()</code>.</li>
+ <code>exec()</code>. Also control the package access/definition.</li>
<li><strong>java.io.FilePermission</strong> - Controls read/write/execute
access to files and directories.</li>
<li><strong>java.net.SocketPermission</strong> - Controls use of
@@ -103,6 +105,14 @@
but disallow it from using file access to read any other files (unless
permissions for those files are explicitly granted).</p>
+ <p>If you starts Tomcat with the <code>-nonaming</code> argument,
+ Tomcat always dynamically creates the following file permission:</p>
+<source>
+permission java.io.FilePermission "** your application context**", "read";
+</source>
+ <p>Where **your application context** equals the folder(or WAR file) under which
+ your application has been deployed. </p>
+
</subsection>
@@ -186,6 +196,11 @@
// ========== CATALINA CODE PERMISSIONS =======================================
+// These permissions apply to the launcher code
+grant codeBase "file:${catalina.home}/bin/commons-launcher.jar" {
+ permission java.security.AllPermission;
+};
+
// These permissions apply to the server startup code
grant codeBase "file:${catalina.home}/bin/bootstrap.jar" {
permission java.security.AllPermission;
@@ -204,24 +219,6 @@
permission java.security.AllPermission;
};
-// These permissions apply to the jasper page compiler
-// located in the "jasper" directory.
-grant codeBase "file:${catalina.home}/jasper/-" {
- permission java.security.AllPermission;
-};
-
-// These permissions apply to shared web application libraries
-// including the Jasper runtime library installed in the "lib" directory
-grant codeBase "file:${catalina.home}/lib/-" {
- permission java.security.AllPermission;
-};
-
-// These permissions apply to shared web application classes
-// located in the "classes" directory
-grant codeBase "file:${catalina.home}/classes/-" {
- permission java.security.AllPermission;
-};
-
// ========== WEB APPLICATION PERMISSIONS =====================================
@@ -262,6 +259,9 @@
// Required for getting BeanInfo
permission java.lang.RuntimePermission "accessClassInPackage.sun.beans.*";
+ // Required for OpenJMX
+ permission java.lang.RuntimePermission "getAttribute";
+
// Allow read of JAXP compliant XML parser debug
permission java.util.PropertyPermission "jaxp.debug", "read";
};
@@ -291,14 +291,13 @@
// };
//
// The permission granted to your JDBC driver
-// grant codeBase "file:${catalina.home}/webapps/examples/WEB-INF/lib/driver.jar" {
+// grant codeBase "jar:file:${catalina.home}/webapps/examples/WEB-INF/lib/driver.jar!/-" {
// permission java.net.SocketPermission "dbhost.mycompany.com:5432", "connect";
// };
// The permission granted to the scrape taglib
-// grant codeBase "file:${catalina.home}/webapps/examples/WEB-INF/lib/scrape.jar" {
+// grant codeBase "jar:file:${catalina.home}/webapps/examples/WEB-INF/lib/scrape.jar!/-" {
// permission java.net.SocketPermission "*.noaa.gov:80", "connect";
// };
-
</source>
<h3>Starting Tomcat With A SecurityManager</h3>
@@ -312,7 +311,46 @@
</source>
</section>
+<section name="Configuring Package Protection in Tomcat">
+ <p>Starting with Tomcat 5, it is now possible to configure which Tomcat
+ internal package are protected againts package definition and access. See
+ <a href="http://java.sun.com/security/seccodeguide.html">
+ http://java.sun.com/security/seccodeguide.html</a>
+ for more information.</p>
+
+
+ <p><strong>WARNING</strong>: Be aware that removing the default package protection
+ could possibly open a security hole</p>
+ <h3>The Default Properties File</h3>
+
+ <p>The default <code>$CATALINA_HOME/conf/catalina.properties</code> file
+ looks like this:</p>
+<source>
+#
+# List of comma-separated packages that start with or equal this string
+# will cause a security exception to be thrown when
+# passed to checkPackageAccess unless the
+# corresponding RuntimePermission ("accessClassInPackage."+package) has
+# been granted.
+package.access=sun.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,
+org.apache.jasper.
+#
+# List of comma-separated packages that start with or equal this string
+# will cause a security exception to be thrown when
+# passed to checkPackageDefinition unless the
+# corresponding RuntimePermission ("defineClassInPackage."+package) has
+# been granted.
+#
+# by default, no packages are restricted for definition, and none of
+# the class loaders supplied with the JDK call checkPackageDefinition.
+#
+package.definition=sun.,java.,org.apache.catalina.,org.apache.coyote.,
+org.apache.tomcat.,org.apache.jasper.
+</source>
+ <p>Once you have configured the <code>catalina.properties</code> file for use
+ with a SecurityManager, remember to re-start Tomcat.</p>
+</section>
<section name="Troubleshooting">
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>