Geekflare est soutenu par notre public. Nous pouvons gagner des commissions d'affiliation en achetant des liens sur ce site.
Partager sur:

Guide de durcissement et de sécurité Apache Tomcat

sécurité tomcat 1
Scanner de sécurité des applications Web Invicti – la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

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.

tomcat-part de marché
Source : Plombier

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.

en-tête-de-serveur-tomcat

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.
Tomcat-removed-server-header

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 utilisant vi
  • 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

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:

tomcat-http uniquement

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.

tomcat-default-404-page

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
tomcat-erreur-personnalisée

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.

Merci à nos commanditaires
Plus de bonnes lectures sur la sécurité
Alimentez votre entreprise
Certains des outils et services pour aider votre entreprise à se développer.
  • Invicti utilise Proof-Based Scanning™ pour vérifier automatiquement les vulnérabilités identifiées et générer des résultats exploitables en quelques heures seulement.
    Essayez Invicti
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, moteur de recherche et tout ce dont vous avez besoin pour collecter des données Web.
    Essayez Brightdata
  • Semrush est une solution de marketing numérique tout-en-un avec plus de 50 outils de référencement, de médias sociaux et de marketing de contenu.
    Essayez Semrush
  • Intruder est un scanner de vulnérabilités en ligne qui détecte les failles de cybersécurité de votre infrastructure, afin d'éviter des violations de données coûteuses.
    Essayez Intruder