Un guide pratique pour renforcer et sécuriser Apache Tomcat Server avec les meilleures pratiques.
Tomcat est l'un des serveurs de servlets et conteneurs JSP les plus populaires. Il est utilisé par certains des sites Web à fort trafic suivants:
- LinkedIn.com
- Dailymail.co.uk
- Comcast.net
- Wallmart.com
- Reuters.com
- Meetup.com
- Webs.com
Le graphique ci-dessous montre la position de marché de Tomcat sur le serveur d'applications Java.

Techniquement, vous pouvez utiliser Tomcat comme serveur frontal pour répondre directement aux demandes de site. Cependant, dans un environnement de production, vous souhaiterez peut-être utiliser certains serveurs Web comme Apache, Nginx comme front-end pour acheminer les requêtes vers le Tomcat.
Utiliser un serveur Web pour gérer les demandes donne performant et sécurité avantages. Si vous utilisez Apache HTTP comme serveur Web frontal, vous devez prendre en compte sécuriser cela aussi.
La configuration par défaut de Tomcat peut exposer des informations sensibles, ce qui aide le pirate à se préparer à une attaque contre l'application.
Les éléments suivants sont testés sur Tomcat 7.x, environnement UNIX.
Audience
Ceci est conçu pour l'administrateur middleware, le support d'application, l'analyste système ou toute personne travaillant ou désireuse d'apprendre Tomcat Hardening and Security.
Bonne connaissance de Tomcat & Commande UNIX est obligatoire.
Notes
Nous avons besoin d'un outil pour examiner les en-têtes HTTP à des fins de vérification. Vous pouvez le faire de deux manières.
Si test Face à Internet application, vous pouvez utiliser les outils d'en-tête HTTP suivants pour vérifier l'implémentation.
Et pour un Application intranet, vous pouvez utiliser Google Chrome, les outils de développement Firefox.
En tant que meilleure pratique, vous devez prendre un sauvegarde de tout fichier que vous êtes sur le point de modifier.
Nous appellerons le dossier d'installation Tomcat comme $ tomcat tout au long de ces lignes directrices.
Passons en revue les procédures de durcissement et de sécurisation.
Remove Server Banner
La suppression de la bannière du serveur de l'en-tête HTTP est l'une des premières choses à faire pour renforcer.
Le fait d'avoir une bannière de serveur expose le produit et la version que vous utilisez et entraîne une vulnérabilité de fuite d'informations.
Par défaut, une page servie par Tomcat s'affichera comme ceci.

Masquons les détails du produit et de la version dans l'en-tête du serveur.
- Allez dans le dossier $ tomcat / conf
- Modifiez server.xml à l'aide de vi
- Ajouter un suivi à
Connector port
Server =” “
Ex: -
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
Server =" "
redirectPort="8443" />
- Enregistrez le fichier et redémarrez le Tomcat. Désormais, lorsque vous accédez à une application, vous devriez voir une valeur vide pour l'en-tête Serveur.

Starting Tomcat with a Security Manager
Security Manager vous protège contre une applet non approuvée exécutée dans votre navigateur.
Exécuter Tomcat avec un gestionnaire de sécurité est mieux que de fonctionner sans un. Tomcat a une excellente documentation sur Gestionnaire de sécurité Tomcat.
La bonne chose à ce sujet est que vous n'avez pas besoin de changer de fichier de configuration. C'est juste la façon dont tu exécutes startup.sh
fichier.
Tout ce que vous avez à faire est de commencer Tomcat avec –security
argument.
[root@geekflare bin]# ./startup.sh -security
Using CATALINA_BASE: /opt/tomcat
Using CATALINA_HOME: /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
Using Security Manager
Tomcat started.
[root@geekflare bin]#
Enable SSL/TLS
Servir les requêtes Web via HTTPS est essentiel pour protéger les données entre le client et Tomcat. Afin de rendre votre application Web accessible via HTTPS, vous devez implémenter un certificat SSL.
En supposant que vous avez déjà le keystore prêt avec le certificat, vous pouvez ajouter la ligne ci-dessous dans server.
xml sous Connector port
.
SSLEnabled="true" scheme="https" keystoreFile="ssl/bloggerflare.jks" keystorePass="chandan" clientAuth="false" sslProtocol="TLS"
Changez le nom et le mot de passe du fichier Keystore avec le vôtre.
Si vous avez besoin d'aide avec le processus de stockage de clés et de CSR, reportez-vous à ce guide.
Enforce HTTPS
Ceci n'est applicable que lorsque SSL est activé. Sinon, cela cassera l'application.
Une fois que vous avez activé SSL, il serait bon de forcer la redirection de toutes les requêtes HTTP vers HTTPS pour une communication sécurisée entre l'utilisateur et le serveur d'applications Tomcat.
- Allez dans le dossier $ tomcat / conf
- modifier
web.xml
en utilisantvi
- Ajouter le suivi avant
</web-app>
syntaxe
<security-constraint>
<web-resource-collection>
<web-resource-name>Protected Context</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
- Enregistrez le fichier et redémarrez le Tomcat
Add Secure & HttpOnly flag to Cookie
Il est possible de voler ou de manipuler la session de l'application Web et les cookies sans avoir de cookie sécurisé. C'est un drapeau qui est injecté dans l'en-tête de la réponse.
Cela se fait en ajoutant sous la ligne dans session-config
section du fichier web.xml
<cookie-config>
<http-only>true</http-only>
<secure>true</secure>
</cookie-config>
Capture d'écran de configuration:

Enregistrez le fichier et redémarrez Tomcat pour examiner l'en-tête de la réponse HTTP.
Run Tomcat from non-privileged Account
Il est bon d'utiliser un utilisateur non privilégié distinct pour Tomcat. L'idée ici est de protéger les autres services en cours d'exécution en cas de compromission d'un compte.
- Créez un utilisateur UNIX, disons tomcat
useradd tomcat
- Arrêtez le Tomcat s'il est en cours d'exécution
- Changer la propriété de $ tomcat en utilisateur tomcat
chown -R tomcat:tomcat tomcat/
Démarrez le Tomcat et assurez-vous qu'il fonctionne avec l'utilisateur Tomcat
Remove default/unwanted Applications
Par défaut, Tomcat est fourni avec les applications Web suivantes, qui peuvent être requises ou non dans un environnement de production.
Vous pouvez les supprimer pour le garder propre et éviter tout risque de sécurité connu avec l'application par défaut de Tomcat.
- ROOT - Page d'accueil par défaut
- Documents - Documentation Tomcat
- Exemples - JSP et servlets pour la démonstration
- Manager, host-manager - Administration Tomcat
Ils sont disponibles dans le dossier $ tomcat / webapps
[root@geekflare webapps]# ls -lt
drwxr-xr-x 14 tomcat tomcat 4096 Sep 29 15:26 docs
drwxr-xr-x 7 tomcat tomcat 4096 Sep 29 15:26 examples
drwxr-xr-x 5 tomcat tomcat 4096 Sep 29 15:26 host-manager
drwxr-xr-x 5 tomcat tomcat 4096 Sep 29 15:26 manager
drwxr-xr-x 3 tomcat tomcat 4096 Sep 29 15:26 ROOT
[root@geekflare webapps]#
Change SHUTDOWN port and Command
Par défaut, tomcat est configuré pour être arrêté sur le port 8005.
Savez-vous que vous pouvez arrêter l'instance tomcat en effectuant un telnet vers IP: port et en émettant la commande SHUTDOWN?
Chandans # telnet localhost 8005
Trying ::1... telnet:
connect to address ::1:
Connection refused Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
SHUTDOWN Connection closed by foreign host.
Chandans #
Dangereux!
Vous voyez, avoir une configuration par défaut entraîne un risque de sécurité élevé.
Il est recommandé de changer le port d'arrêt tomcat et la commande par défaut en quelque chose d'imprévisible.
- Modifiez ce qui suit dans server.xml
<Server port="8005" shutdown="SHUTDOWN">
8005 - Passer à un autre port inutilisé
SHUTDOWN - Passez à quelque chose de compliqué
Ex-
<Server port="8867" shutdown="NOTGONNAGUESS">
Replace default 404, 403, 500 page
Avoir la page par défaut pour les erreurs de serveur non trouvées, interdites, expose les détails de la version.
Regardons la page 404 par défaut.

Pour atténuer, vous pouvez d'abord créer une page d'erreur générale et configurer web.xml pour rediriger vers une page d'erreur générale.
- Accédez à $ tomcat / webapps / $ application
- Créez un fichier error.jsp en utilisant
vi
éditeur
Page d'erreur C'est une erreur!
- Allez dans le dossier $ tomcat / conf
- Ajoutez ce qui suit dans le fichier web.xml. Assurez-vous d'ajouter avant
</web-app>
syntaxe
404 /error.jsp 403 /error.jsp 500 /error.jsp
- Redémarrez le serveur tomcat pour le tester

Beaucoup mieux!
Vous pouvez le faire pour java.lang.Exception
ainsi que. Cela aidera à ne pas exposer les informations de version de tomcat en cas d'exception de langage Java.
Ajoutez simplement le suivi dans web.xml
et redémarrez le serveur tomcat.
java.lang.Exception /error.jsp
J'espère que le guide ci-dessus vous donne une idée de la sécurisation de Tomcat. Si vous souhaitez en savoir plus sur l'administration de Tomcat, consultez ceci Cours en ligne.
Aussi, apprenez à configurer WAS pour qu'il arrête de demander le mot de passe lors de l'arrêt ici.