Aller au contenu principal

Tomcat — Serveur Java

Apache Tomcat est un conteneur de servlets Java (implémentation de référence des spécifications Jakarta Servlet/JSP), utilisé pour déployer des applications web Java packagées en WAR. C'est l'un des deux standards historiques du domaine avec Jetty, plus lourd mais très répandu en entreprise.

Installation

sudo apt install tomcat10 # paquet distro, ou installation manuelle depuis tomcat.apache.org
sudo systemctl enable --now tomcat10

Fichiers de configuration

FichierRôle
/etc/tomcat10/server.xmlConfiguration principale : connecteurs réseau, hôtes virtuels
/etc/tomcat10/web.xmlConfiguration par défaut des applications déployées
/etc/tomcat10/tomcat-users.xmlUtilisateurs pour l'interface de management (Manager App)
/var/lib/tomcat10/webapps/Répertoire de déploiement des fichiers .war

Commandes utiles

CommandeFonction
systemctl start/restart/status tomcat10Gestion du service
journalctl -u tomcat10Logs systemd
catalina.sh versionVersion et infos Java utilisées

Exemple de configuration

Connecteur HTTP dans server.xml (typiquement derrière un reverse proxy) :

<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
address="127.0.0.1" />

Lier le connecteur sur 127.0.0.1 empêche l'accès direct depuis l'extérieur — le trafic passe obligatoirement par le reverse proxy.

Sécurisation

  • Supprimer ou protéger les applications par défaut livrées avec Tomcat (/manager, /host-manager, /examples, /docs) — cibles classiques de scan automatisé.
  • Restreindre tomcat-users.xml à des comptes forts, et limiter l'accès au Manager App par IP (RemoteAddrValve).
  • Lier les connecteurs en local (127.0.0.1) et exposer uniquement via un reverse proxy TLS.
  • Exécuter sous un utilisateur dédié non privilégié, jamais root.
  • Maintenir la version de Tomcat et du JDK à jour (CVE régulières sur le parsing de requêtes/AJP — l'attaque Ghostcat en 2020 ciblait précisément un connecteur AJP mal exposé).

Logs & dépannage

  • /var/log/tomcat10/catalina.out — logs principaux (stdout/stderr du process).
  • /var/log/tomcat10/localhost_access_log.*.txt — logs d'accès HTTP.
  • journalctl -u tomcat10 -f si géré par systemd.
  • Un déploiement WAR qui échoue silencieusement se diagnostique dans catalina.out, pas dans les logs du reverse proxy.

Voir aussi

  • Jetty — alternative plus légère à Tomcat pour le même usage
  • nginx — reverse proxy typique devant Tomcat