Tomcat Manager: usuario, contraseña y accesibilidad

Si en un servidor de aplicaciones Tomcat hacemos uso del Manager Webapp, lo primero que debemos tener en cuenta es su securización, y aquí entran dos factores, el usuario y contraseña que utilicemos para acceder (gestión de roles) y desde donde permitimos el acceso.

Por defecto el rol de admin para el Manager está deshabilitado. El archivo donde se encuentran todos los roles es «tomcat_users.xml«:

/usr/share/tomcat/conf/tomcat_users.xml

<!-- <user name="admin" 
password="adminadmin" roles="admin,manager,admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status" /> -->

Como podéis ver, está comentado. Así que lo primero que tendríamos que hacer es crear un nuevo usuario con los roles que queramos asignar. En el ejemplo anterior tiene todos los necesario pero se puede afinar según requerimientos. Por ejemplo:

<user name="foo" password="foo_password" roles="manager-gui" />

Con esto ya tenemos el usuario. Ahora lo importante es bloquear el acceso al Manager desde cualquier ubicación a excepción de las redes que nosotros indiquemos. Lo óptimo sería habilitarlo únicamente para conexiones locales (localhost) y acceder al Manager por un tunel SSH.

Para configurar las redes permitidas tenemos el archivo context.xml dentro del directorio META-INF de la aplicación y la Valve RemoteAddrValve:

/var/lib/tomcat/webapps/manager/META-INF/context.xml

Podemos descomentar la configuración por defecto que limita el acceso a localhost:

<Context antiResourceLocking="false" privileged="true" >
<!--
Remove the comment markers from around the Valve below to limit access to
the manager application to clients connecting from localhost
-->
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
</Context>

También podríamos añadir segmentos privados:

<Context antiResourceLocking="false" privileged="true" >
<!--
Remove the comment markers from around the Valve below to limit access to
the manager application to clients connecting from localhost
-->
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192\.168\.1\.d+" />
</Context>

Con estos tips, vuestro Tomcat Manager estará más securizado.