tomcat-users mailing listthredds mailing listThe JVM doesn't fork at all, nor does it support setuid() calls. The JVM (and therefore Tomcat) is one process. The JVM is a virtual machine with many threads under the same process.
root user unless they are all are run as the root user. Hence, any programs run in Tomcat (TDS, manager application, other JSPs and servlets) will run as the root user.root user, and an attacker manages to exploit a weakness in Tomcat or something running in webapps/ to run arbitrary commands, those commands will be run as the superuser!root user and recommend creating an unprivileged, dedicated user and group for running the Tomcat process.$CATALINA_HOME.$CATALINA_HOMEIn this example, both the user and group names will be names tomcat, and the user's home directory, aka $CATALINA_HOME, is /opt/tomcat (notice the symlink below). The groupadd and useradd commands were run as the root:
# groupadd tomcat # useradd -g tomcat -d /opt/tomcat tomcat # passwd tomcat
$CATALINA_HOMEChange the user/group ownership $CATALINA_HOME to the tomcat user and tomcat group:
# cd /opt # chown -R tomcat:tomcat apache-tomcat-6.0.32 # ls -ld *tomcat* drwxr-xr-x 9 tomcat tomcat 4096 Jul 15 16:03 apache-tomcat-6.0.32 lrwxrwxrwx 1 root other 20 Jul 15 19:00 tomcat -> apache-tomcat-6.0.32
Change the user/ownership of the $CATALINA_HOME/conf directory to be owned by the root user, have a group of tomcat and have a permission of user/group read only:
# cd /opt/tomcat # ls -l total 92 drwxr-xr-x 2 tomcat tomcat 4096 Jul 15 16:05 bin drwxr-xr-x 2 tomcat tomcat 4096 Jul 18 12:18 conf drwxr-xr-x 2 tomcat tomcat 4096 Jul 15 16:03 lib drwxr-xr-x 2 tomcat tomcat 4096 Feb 2 12:04 logs drwxr-xr-x 2 tomcat tomcat 4096 Jul 15 16:03 temp drwxr-xr-x 7 tomcat tomcat 4096 Jul 15 16:04 webapps drwxr-xr-x 2 tomcat tomcat 4096 Feb 2 12:04 work # chown -R root:tomcat conf # chmod -R 440 conf/* # ls -l conf total 92 -r--r----- 1 root tomcat 9978 Feb 2 12:06 catalina.policy -r--r----- 1 root tomcat 3713 Feb 2 12:06 catalina.properties -r--r----- 1 root tomcat 1395 Feb 2 12:06 context.xml -r--r----- 1 root tomcat 1353 Jul 18 12:14 keystore -r--r----- 1 root tomcat 3257 Feb 2 12:06 logging.properties -r--r----- 1 root tomcat 6814 Jul 18 12:18 server.xml -r--r----- 1 root tomcat 210 Jul 18 12:10 tomcat-users.xml -r--r----- 1 root tomcat 51835 Feb 2 12:06 web.xml
Change the user/ownership of the $CATALINA_HOME/bin and $CATALINA_HOME/lib directories to be owned by the root user and have a group of tomcat:
# chown -R root:tomcat lib # chown -R root:tomcat bin # ls -l total 92 drwxr-xr-x 2 root tomcat 4096 Jul 15 16:05 bin drwxr-xr-x 2 root tomcat 4096 Jul 18 12:18 conf drwxr-xr-x 2 root tomcat 4096 Jul 15 16:03 lib drwxr-xr-x 2 tomcat tomcat 4096 Feb 2 12:04 logs drwxr-xr-x 2 tomcat tomcat 4096 Jul 15 16:03 temp drwxr-xr-x 7 tomcat tomcat 4096 Jul 15 16:04 webapps drwxr-xr-x 2 tomcat tomcat 4096 Feb 2 12:04 work
tomcat-users mailing list archives dedicated to the perils of running Tomcat as the root user.$CATALINA_HOME/webapps.ROOT application is Tomcat's DocumentRoot and contains the server's main web page. Give thought to the content that is placed in ROOT/, as it will be readily available. (Note: if you want to utilize a robots.txt file to restrict crawler activity, ROOT/ is the place it will go.)manager application is used for remote management of web applications. To use this application, you must add a user with role of manager-gui in tomcat-users.xml. Obviously, if you are not planning to use the manager application, it should be removed.host-manager application is used for management of virtual hosts. To use this application, you must add a user with role of admin-gui in tomcat-users.xml. If you are not planning to do a lot of virtual hosting in Tomcat this application should be removed.examples application should probably be removed from a production server to minimize security exposure.docs are a copy of the Tomcat documentation found online. Unless you have need for a local copy, removing docs would help to tidy-up $CATALINA_HOME/webapps.A realm element represents a "database" of usernames, passwords, and roles (similar to Unix groups) assigned to those users.
tomcat-users.xml file in the Tomcat conf/ directory. server.xml file in the Tomcat conf/ directory. A Tomcat Realm represents a "database" of usernames, passwords, and roles assigned to tomcat users.
| Realm Name | Purpose |
|---|---|
UserDatabaseRealm
|
The UserDatabaseRealm is enabled by default and reads clear text user password information stored in tomcat-users.xml.
|
MemoryRealm
|
The MemoryRealm reads the user password information stored in the tomcat-users.xml in a specified encrypted format.
|
Open the server.xml with your favorite editor:
$ vi server.xml
Locate the UserDatabaseRealm (right above the Host element) and comment it out:
<!-- This Realm uses the UserDatabase configured in the global JNDI
resources under the key "UserDatabase". Any edits
that are performed against this UserDatabase are immediately
available for use by the Realm. -->
<!--
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
-->
<!-- Define the default virtual host
Note: XML Schema validation will not work with Xerces 2.2.
-->
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
Now add the following MemoryRealm information below the commented out UserDatabaseRealm:
<!-- This Realm uses the UserDatabase configured in the global JNDI
resources under the key "UserDatabase". Any edits
that are performed against this UserDatabase are immediately
available for use by the Realm. -->
<!--
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
-->
<!-- Define the default virtual host
Note: XML Schema validation will not work with Xerces 2.2.
-->
<Realm className="org.apache.catalina.realm.MemoryRealm"
digest="SHA" />
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
Tomcat provides a script ($CATALINA_HOME/bin/digest.sh) that will encrypt a password string according to the algorithm specified. Use this script as follows with the password you made for yourself previously:
$ /home/tds/apache-tomcat-6.0.32/bin/digest.sh -a SHA secret secret:e5e9fa1ba31ecd1ae84f75caaa474f3a663f05f4
tomcat-users.xml.Replace your clear-text password in tomcat-users.xml with the encrypted version:
<tomcat-users>
<role rolename="manager-gui"/>
<user username="admin" password="e5e9fa1ba31ecd1ae84f75caaa474f3a663f05f4" roles="manager-gui"/>
</tomcat-users>
Since we are using BASIC authentication, you will need to clear any authenticated sessions in your browser to test whether digested passwords have been enabled.
Restart Tomcat and verify digest passwords have been successfully enabled by logging into the Tomcat manager application using your password in clear text: http://localhost:8080/manager/html/
tomcat-users.xml and server.xml to make sure it is well-formed and without error.tomcat-users.xml and server.xml ?catalina.out file in the Tomcat logs/ directory. For more information on how SSL works, Wikipedia details the steps involved during an SSL transaction.
https instead of http.A self-signed certificate says to your users "Trust me - I am who I say I am."
A certificate signed by a CA says, "Trust me - the CA agrees I am who I say I am."
keystore filekeystore file stores the details of the SSL certificate necessary to make the protocol secured. keystore file for SSL transactions.Other than the compelling security reasons, you will want to enable SSL to take advantage of the TDS remote management tool which (out-of-the-box) requires SSL in order to access: http://localhost:8080/thredds/admin/debug
Based on what we know about Tomcat configuration, which file in $CATALINA_HOME/conf should we edit to to enable SSL?
Open $CATALINA_HOME/conf/server.xml with your favorite editor:
$ vi server.xml
Locate the Java HTTP/1.1 Connector listening on port 8080 and verify it is redirecting SSL traffic to port 8443:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
Find and uncomment the SSL HTTP/1.1 Connector listening on port 8443 to activate this connector:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
Add a keystoreFile attribute to the SSL HTTP/1.1 Connector to tell Tomcat where to find your keystore:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystoreFile="/home/tds/tds/apache-tomcat-6.0.32/conf/keystore" />
Since we opted to not use the default keystore password, we need to specify the new password so Tomcat can open the file:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystoreFile="/home/tds/tds/apache-tomcat-6.0.32/conf/keystore" keystorePass="foobar" />
Finally, verify the AprLifecycleListener is uncommented (found near the top of the file):
<!--APR library loader. Documentation at /docs/apr.html --> <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
Restart Tomcat:
$ $CATALINA_HOME/bin/shutdown.sh $ $CATALINA_HOME/bin/startup.sh
Verify Tomcat is listening on port 8443 by running the netstat command:
$ netstat -an | grep tcp | grep 8443
man netstatRun man netstat in your terminal window to learn more about this command.
netstat (short for network statistics) is available on Unix, Unix-like, and Windows NT-based operating systems. It is a command-line tool that displays:
Look for the following in the output:
tcp 0 0 0.0.0.0:8443 0.0.0.0:* LISTEN
server.xml to make sure it is well-formed and without error.key password) and keystore password should be the same (changeit). If they differ, Tomcat cannot open the keystore and you will get this error: java.io.IOException: Cannot recover key.server.xml?keystore file in server.xml?$CATALINA_HOME/conf/tomcat-users.xml to add a new role with the rolename attribute of tdsConfig, and add this role to your list of roles:
<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="tdsConfig"/>
<user username="admin" password="e5e9fa1ba31ecd1ae84f75caaa474f3a663f05f4" roles="manager-gui,tdsConfig"/>
</tomcat-users>
How did Tomcat know to use SSL for the TDS remote management tool?
Where, in any of the configuration changes you made to $CATALINA_HOME/conf/server.xml or $CATALINA_HOME/conf/tomcat-users.xml, did you explicitly specify that TDS remote management tool must be accessed via SSL?
/WEB-INF/web.xmlweb.xml.WEB-INF directory of the web application: <application name>/WEB-INF/web.xml. Navigate to the unpacked thredds directory in $CATALINA_HOME/webapps, and view the file:
$ cd /home/tds/tds/apache-tomcat-6.0.32/webapps/thredds $ less WEB-INF/web.xml
/admin/debug).Near the bottom of the deployment descriptor you will find this entry:
<!-- This allows "remote configuration":
/thredds/admin/debug gives access to various debug and status info.
/thredds/admin/content/ -> "{tomcat_home}/content/thredds/"
/thredds/admin/root/ -> "{tomcat_home}/webapps/thredds/" DISABLED
/thredds/admin/dataDir/path -> "{dataRoot(path)}/webapps/thredds/" DISABLED
-->
<security-constraint>
<web-resource-collection>
<web-resource-name>sensitive read access</web-resource-name>
<url-pattern>/admin/*</url-pattern>
<http-method>GET</http-method>
<!-- http-method>PUT</http-method -->
</web-resource-collection>
<auth-constraint>
<role-name>tdsConfig</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
For more information on how to configure security requirements for a web application in a deployment descriptor, see: Defining Security Requirements for Web Applications.
<user-data-constraint> establishes a requirement that the constrained requests be received over a protected transport layer connection. This guarantees how the data will be transported between client and server. <transport-guarantee> choices for type of transport guarantee include NONE, INTEGRAL, and CONFIDENTIAL: CONFIDENTIAL when the application requires that data be transmitted so as to prevent other entities from observing the contents of the transmission. (E.g., via SSL.)INTEGRAL when the application requires that the data be sent between client and server in such a way that it cannot be changed in transit. NONE to indicate that the container must accept the constrained requests on any connection, including an unprotected one.manager applicationThe manager application URLs and roles has been re-structured. See the Tomcat Migration guide for more information.
manager applicationmanager application.Using your favorite editor, open the deployment descriptor for the Tomcat manager application:
$ vi $CATALINA_HOME/webapps/manager/WEB-INF/web.xml
Locate the <security-constraint> element (near the bottom of the file):
<!-- Define a Security Constraint on this Application -->
<security-constraint>
<web-resource-collection>
<web-resource-name>HTMLManger and Manager command</web-resource-name>
<url-pattern>/jmxproxy/*</url-pattern>
<url-pattern>/html/*</url-pattern>
<url-pattern>/list</url-pattern>
<url-pattern>/expire</url-pattern>
<url-pattern>/sessions</url-pattern>
<url-pattern>/start</url-pattern>
<url-pattern>/stop</url-pattern>
<url-pattern>/install</url-pattern>
<url-pattern>/remove</url-pattern>
<url-pattern>/deploy</url-pattern>
<url-pattern>/undeploy</url-pattern>
<url-pattern>/reload</url-pattern>
<url-pattern>/save</url-pattern>
<url-pattern>/serverinfo</url-pattern>
<url-pattern>/status/*</url-pattern>
<url-pattern>/roles</url-pattern>
<url-pattern>/resources</url-pattern>
</web-resource-collection>
<auth-constraint>
<!-- NOTE: This role is not present in the default users file -->
<role-name>manager</role-name>
</auth-constraint>
</security-constraint>
Add a <user-data-constraint> with a <transport-guarantee> of CONFIDENTIAL to enable port-forwarding to port 8443:
<!-- Define a Security Constraint on this Application -->
<security-constraint>
<web-resource-collection>
<web-resource-name>HTMLManger and Manager command</web-resource-name>
<url-pattern>/jmxproxy/*</url-pattern>
<url-pattern>/html/*</url-pattern>
<url-pattern>/list</url-pattern>
<url-pattern>/expire</url-pattern>
<url-pattern>/sessions</url-pattern>
<url-pattern>/start</url-pattern>
<url-pattern>/stop</url-pattern>
<url-pattern>/install</url-pattern>
<url-pattern>/remove</url-pattern>
<url-pattern>/deploy</url-pattern>
<url-pattern>/undeploy</url-pattern>
<url-pattern>/reload</url-pattern>
<url-pattern>/save</url-pattern>
<url-pattern>/serverinfo</url-pattern>
<url-pattern>/status/*</url-pattern>
<url-pattern>/roles</url-pattern>
<url-pattern>/resources</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>manager</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
Using your favorite editor, open the deployment descriptor for the Tomcat manager application:
$ vi $CATALINA_HOME/webapps/manager/WEB-INF/web.xml
Locate the <security-constraint> element (near the bottom of the file):
<!-- Define a Security Constraint on this Application -->
<security-constraint>
<web-resource-collection>
<web-resource-name>Manager commands</web-resource-name>
<url-pattern>/list</url-pattern>
<url-pattern>/expire</url-pattern>
<url-pattern>/sessions</url-pattern>
<url-pattern>/start</url-pattern>
<url-pattern>/stop</url-pattern>
<url-pattern>/install</url-pattern>
<url-pattern>/remove</url-pattern>
<url-pattern>/deploy</url-pattern>
<url-pattern>/undeploy</url-pattern>
<url-pattern>/reload</url-pattern>
<url-pattern>/save</url-pattern>
<url-pattern>/serverinfo</url-pattern>
<url-pattern>/roles</url-pattern>
<url-pattern>/resources</url-pattern>
<url-pattern>/findleaks</url-pattern>
</web-resource-collection>
<auth-constraint>
<!-- NOTE: 1. These roles are not present in the default users file
2. The manager role is deprecated, it will be removed in
Tomcat 7.
3. Use the manager-script role to take advantage of the new
CSRF protection. Using the manager role or assigning both
the manager-script and manager-gui roles to the same user
will bypass the CSRF protection. -->
<role-name>manager-script</role-name>
<role-name>manager</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>HTML Manager commands</web-resource-name>
<url-pattern>/html/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<!-- NOTE: 1. These roles are not present in the default users file
2. The manager role is deprecated, it will be removed in
Tomcat 7.
3. Use just the manager-gui role to take advantage of the new
CSRF protection. Assigning the manager role or manager-gui
role along with either the manager-script or manager-jmx
roles to the same user will bypass the CSRF protection. -->
<role-name>manager-gui</role-name>
<role-name>manager</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>JMX proxy</web-resource-name>
<url-pattern>/jmxproxy/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<!-- NOTE: 1. These roles are not present in the default users file
2. The manager role is deprecated, it will be removed in
Tomcat 7.
3. Use the manager-jmx role to take advantage of the new
CSRF protection. Using the manager role or assigning both
the manager-jmx and manager-gui roles to the same user
will bypass the CSRF protection. -->
<role-name>manager-jmx</role-name>
<role-name>manager</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Status</web-resource-name>
<url-pattern>/status/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<!-- NOTE: 1. These roles are not present in the default users file
2. The manager role is deprecated, it will be removed in
Tomcat 7. -->
<role-name>manager-status</role-name>
<role-name>manager-gui</role-name>
<role-name>manager-script</role-name>
<role-name>manager-jmx</role-name>
<role-name>manager</role-name>
</auth-constraint>
</security-constraint>
The manager application deployment descriptor for these later versions of Tomcat 6 has been modified to be similar to the configuration the manager application as it appears in Tomcat 7. The deployment descriptor contains a <security-constraint> section for three of the ContactPaths (as per Manager Application section of the Tomcat Migration Guide), as well as a 'catch all' <security-constraint> to handle the various script-oriented manager commands found in earlier versions of Tomcat 6.
Add a <user-data-constraint> with a <transport-guarantee> of CONFIDENTIAL for the desired ContactPaths to to enable port-forwarding to port 8443:
<!-- Define a Security Constraint on this Application -->
<security-constraint>
<web-resource-collection>
<web-resource-name>Manager commands</web-resource-name>
<url-pattern>/list</url-pattern>
<url-pattern>/expire</url-pattern>
<url-pattern>/sessions</url-pattern>
<url-pattern>/start</url-pattern>
<url-pattern>/stop</url-pattern>
<url-pattern>/install</url-pattern>
<url-pattern>/remove</url-pattern>
<url-pattern>/deploy</url-pattern>
<url-pattern>/undeploy</url-pattern>
<url-pattern>/reload</url-pattern>
<url-pattern>/save</url-pattern>
<url-pattern>/serverinfo</url-pattern>
<url-pattern>/roles</url-pattern>
<url-pattern>/resources</url-pattern>
<url-pattern>/findleaks</url-pattern>
</web-resource-collection>
<auth-constraint>
<!-- NOTE: 1. These roles are not present in the default users file
2. The manager role is deprecated, it will be removed in
Tomcat 7.
3. Use the manager-script role to take advantage of the new
CSRF protection. Using the manager role or assigning both
the manager-script and manager-gui roles to the same user
will bypass the CSRF protection. -->
<role-name>manager-script</role-name>
<role-name>manager</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>HTML Manager commands</web-resource-name>
<url-pattern>/html/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<!-- NOTE: 1. These roles are not present in the default users file
2. The manager role is deprecated, it will be removed in
Tomcat 7.
3. Use just the manager-gui role to take advantage of the new
CSRF protection. Assigning the manager role or manager-gui
role along with either the manager-script or manager-jmx
roles to the same user will bypass the CSRF protection. -->
<role-name>manager-gui</role-name>
<role-name>manager</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>JMX proxy</web-resource-name>
<url-pattern>/jmxproxy/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<!-- NOTE: 1. These roles are not present in the default users file
2. The manager role is deprecated, it will be removed in
Tomcat 7.
3. Use the manager-jmx role to take advantage of the new
CSRF protection. Using the manager role or assigning both
the manager-jmx and manager-gui roles to the same user
will bypass the CSRF protection. -->
<role-name>manager-jmx</role-name>
<role-name>manager</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Status</web-resource-name>
<url-pattern>/status/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<!-- NOTE: 1. These roles are not present in the default users file
2. The manager role is deprecated, it will be removed in
Tomcat 7. -->
<role-name>manager-status</role-name>
<role-name>manager-gui</role-name>
<role-name>manager-script</role-name>
<role-name>manager-jmx</role-name>
<role-name>manager</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
Using your favorite editor, open the deployment descriptor for the Tomcat manager application:
$ vi $CATALINA_HOME/webapps/manager/WEB-INF/web.xml
Locate the <security-constraint> elements (near the bottom of the file):
<!-- Define a Security Constraint on this Application -->
<!-- NOTE: None of these roles are present in the default users file -->
<security-constraint>
<web-resource-collection>
<web-resource-name>HTML Manager interface (for humans)</web-resource-name>
<url-pattern>/html/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>manager-gui</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Text Manager interface (for scripts)</web-resource-name>
<url-pattern>/text/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>manager-script</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>JMX Proxy interface</web-resource-name>
<url-pattern>/jmxproxy/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>manager-jmx</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Status interface</web-resource-name>
<url-pattern>/status/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>manager-gui</role-name>
<role-name>manager-script</role-name>
<role-name>manager-jmx</role-name>
<role-name>manager-status</role-name>
</auth-constraint>
</security-constraint>
The Tomcat 7 version of the manager application deployment descriptor contains a <security-constraint> section for each of the four possible ContactPaths (as per Manager Application section of the Tomcat Migration Guide).
Add a <user-data-constraint> with a <transport-guarantee> of CONFIDENTIAL for the desired ContactPaths to to enable port-forwarding to port 8443:
<!-- Define a Security Constraint on this Application -->
<!-- NOTE: None of these roles are present in the default users file -->
<security-constraint>
<web-resource-collection>
<web-resource-name>HTML Manager interface (for humans)</web-resource-name>
<url-pattern>/html/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>manager-gui</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Text Manager interface (for scripts)</web-resource-name>
<url-pattern>/text/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>manager-script</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>JMX Proxy interface</web-resource-name>
<url-pattern>/jmxproxy/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>manager-jmx</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Status interface</web-resource-name>
<url-pattern>/status/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>manager-gui</role-name>
<role-name>manager-script</role-name>
<role-name>manager-jmx</role-name>
<role-name>manager-status</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
manager application.Restart Tomcat and verify SSL has been enabled for the Tomcat manager application: http://localhost:8080/manager/html/
web.xml to make sure it is well-formed and without error.<transport-guarantee> of CONFIDENTIAL? web.xml?$CATALINA_HOME/bin/shutdown.sh script.Make sure Tomcat is running and then type the following in your terminal window:
$ telnet localhost 8005
When prompted, issue Tomcat the shutdown command by typing SHUTDOWN:
Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. SHUTDOWN
What happened when you issued the SHUTDOWN command via telnet? Is this what you expected?
manager application, you must also open up port 8443.iptables
A valve element represents a component that will be inserted into the request processing pipeline for the associated Catalina container.
RemoteHostValve or RemoteAddrValve to restrict access to the TDS and/or other web applications.conf/server.xml file.manager application to limit accessed to it from within a specific IP address range.RemoteAddrValve to restrict access based on IP addresses.
<!-- This example denies access based on IP addresses -->
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
deny="128\.117\.47\.201,128\.107\.157\.210,96\.33\.56\.215" />
RemoteHostValve to restrict access based on resolved host names.
<!-- This example denies access based on host names -->
<Valve className="org.apache.catalina.valves.RemoteHostValve"
deny="www\.badguys\.com,www\.bandwidthhog\.net" />
<!-- Wildcard characters can with the both valves -->
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
deny="128\.117\.47\..*" />
RemoteAddrValve to limit access to a specific range of IP addresses.
<!-- This example only allows the specified IPs to access -->
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="128\.117\.140\..*" />
valve components available for use.manager Application manager applicationThe manager application URLs and roles has been re-structured. See the Tomcat Migration guide for more information.
$CATALINA_HOME/webapps/manager directory. manager application to install programs on your server willy-nilly.manager application, we highly recommend enabling digested passwords and SSL encryption for the manager.manager application to a small subset of IP addressess or host names using a Tomcat valve, etc., is also a good idea.manager application.manager application.
SHUTDOWN Port SHUTDOWN on port 8005SHUTDOWN command.$CATALINA_HOME/conf/server.xml. $CATALINA_HOME/lib/catalina.jar with an updated ServerInfo.properties file.catalina.jar$ cd $CATALINA_HOME/lib $ jar xf catalina.jar org/apache/catalina/util/ServerInfo.properties
ServerInfo.properties by changing server.info line to server.info=Apache Tomcat. Repackage catalina.jar$ jar uf catalina.jar org/apache/catalina/util/ServerInfo.properties
$CATALINA_HOME/lib/org directory created when extracting the ServerInfo.properties file)$ rm -r org
This document is maintained by Unidata. Send comments to THREDDS support.