Installare Apache Tomcat in sicurezza su CentOS


Data di pubblicazione:

Aggiornato:


Articoli > Installare Apache Tomcat in sicurezza su CentOS

2026 stato e uso sicuro

Conclusione: Scegli una famiglia Tomcat supportata e compatibile JDK prima, quindi eseguila come utente non-login dedicato sotto un'unità controllata. Mantenere la configurazione e le applicazioni distribuite separate da binari immutabili e esporre solo l'architettura del connettore di cui hai bisogno.

Cosa imparerai

  • Come compatibilità Java, fonte di installazione, identità del servizio, proprietà dei file, registri e ordine di avvio si adattano insieme.
  • Perché le bandiere GC non devono essere copiate senza misure.
  • Come distinguere il layout originale del pacchetto CentOS 7 da una distribuzione supportata corrente.

Destinatari: Gli amministratori di Linux mantengono o migrano un servizio Tomcat.

Nota di aggiornamento (2026): Il passthrough sottostante riflette un vecchio pacchetto CentOS 7/Tomcat e include opzioni JVM che possono essere rimosse o inappropriate sul Java attuale. Tomcat 7 è end-of-life; verificare la matrice di versione ufficiale, utilizzare un ramo supportato, e rivedere l'unità di servizio e le autorizzazioni esatto prima dell'uso di produzione.

Nota di sicurezza: i comandi e gli esempi di configurazione dell'articolo originale non sono stati rieseguiti in un ambiente di produzione moderno. Prima di applicarli, verifica versioni supportate, backup, controlli di accesso e procedura di rollback in un ambiente di prova isolato.

Fonti primarie ufficiali

Panoramica

Questa è la procedura di configurazione iniziale necessaria per installare e avviare Tomcat su CentOS. Le informazioni si basano sull'ipotesi di utilizzo di CentOS7.

Consultare le informazioni sul collegamento ad Apache e sulla modifica della destinazione dell'output di log.

Le versioni sono le seguenti.

Versione CentOS7.6 (1810)
Versione Apache2.4.6
Versione di Tomcat7.0.76
Versione Java.OpenJDK 1.8.0_272 64bit

Indice dei contenuti

  1. installare
  2. impostazione di base
  3. sintesi

1. installare

Questa sezione descrive la configurazione di Tomcat dall'installazione all'avvio.

1-1. Installazione di Tomcat

Eseguire l'installazione di Tomcat con il comando yum. Eseguire il lavoro come utente root.

[username@hostname ~]$ su -
[root@hostname ~]# yum -y install tomcat

2. impostazione di base

Questa sezione descrive la configurazione di Tomcat dall'installazione all'avvio. Il file "/usr/share/tomcat" viene creato da yum come descritto in precedenza.

Qui si trovano i collegamenti di scelta rapida, come le cartelle per i file di configurazione e così via, che possono essere modificati.

2-1. Impostazioni del percorso di Tomcat

In altre parole, in Windows è la procedura di impostazione delle variabili d'ambiente.

Questo non è necessario se il file tomcat.conf contiene l'impostazione "CATALINA_HOME="/usr/share/tomcat"".

Controllare '/usr/share/tomcat/conf/tomcat.conf'.

Se manca "CATALINA_HOME="/usr/share/tomcat"", aggiungerlo con la seguente procedura.

[root@hostname ~]# vi /etc/profile

Aggiungere alla fine quanto segue.

profile


CATALINA_HOME=/usr/share/tomcat
export CATALINA_HOME

Questo completa la specificazione delle variabili d'ambiente di Tomcat.

Sono necessarie anche le impostazioni di Java per l'esecuzione di Tomcat; pertanto, se non sono state effettuate le impostazioni del percorso di Java, fare riferimento a quanto segue per le impostazioni.

Installare Java su CentOS e impostare i percorsi

Può essere installato anche eseguendo "yum install java-1.8.0-openjdk".

2-2. controllo bootstrap

Verificare che Tomcat si avvii.

Se si installa Tomcat con yum, non c'è l'html per la home page di Tomcat, quindi installare prima l'html.

[root@hostname ~]# yum -y install tomcat-webapps

Quindi attivare il firewall. Il numero di porta predefinito per Tomcat è 8080, quindi aprire la porta 8080.

[root@hostname ~]# firewall-cmd --permanent --zone=public --add-port=8080/tcp
[root@hostname ~]# firewall-cmd --reload
[root@hostname ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client http https ssh
  ports: 8080/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Se è scritto "porte: 8080/tcp", è tutto a posto. Avviare Tomcat.

[root@hostname ~]# tomcat start

Accesso tramite browser. Nel mio caso, l'indirizzo IP del server è 192.168.50.10, quindi accedo a "http://192.168.50.10:8080/".

Se viene visualizzata la seguente pagina è tutto ok

Schermata superiore di Tomcat

Poiché l'avvio è stato confermato con successo, Tomcat viene arrestato.

[root@hostname ~]# tomcat stop

2-3. Impostazioni di collegamento di Apache e Tomcat Nota: Quando Apache e Tomcat sono collegati.

Impostare questa opzione se si desidera che Apache e Tomcat lavorino insieme. Tomcat può funzionare come server web senza Apache, ma ci sono vantaggi nel lavorare con Apache per una serie di ragioni, come l'utilità della funzione modulo di Apache e la capacità di accelerare la risposta dei contenuti statici.

Vedere di seguito le istruzioni per l'installazione di Apache.

Installare Apache HTTP Server in sicurezza su CentOS

Di seguito viene descritta la procedura per modificare la configurazione sul lato Apache. Questa è una configurazione per passare le richieste che arrivano ad Apache a Tomcat.

La descrizione presuppone che esista un file di configurazione di Apache in '/etc/httpd/'.

[root@hostname ~]# vi /etc/httpd/conf/httpd.conf

Aggiungete la seguente dichiarazione alla fine di "httpd.conf".

httpd.conf


<Location / >
  ProxyPass ajp://localhost:8009/
  Order allow,deny
  Allow from all
</Location>

Come prerequisito, è necessario abilitare i seguenti moduli, se non già abilitati. (decommentare #).

• LoadModule proxy_module modules/mod_proxy.so

• LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

Avviare Apache (riavviare se già avviato) e Tomcat.

[root@hostname ~]# apachectl stop
[root@hostname ~]# apachectl start
[root@hostname ~]# tomcat start

Accesso tramite browser. Nel mio caso, l'indirizzo IP del server è 192.168.50.10, quindi accedo a "http://192.168.50.10/".

Se viene visualizzata la seguente pagina è tutto ok

Schermata superiore di Tomcat

Poiché l'avvio è stato confermato con successo, Tomcat viene arrestato.

[root@hostname ~]# tomcat stop

Il diagramma mostra i seguenti accessi.

Diagramma di accesso a Tomcat

Per inciso, l'unico passo precedente era accessibile come segue.

Diagramma di accesso a Tomcat

2-4. Configurazione dei registri java heap e gc.

L'heap di Java è la memoria di Java e i log di gc sono log sulla memoria di Java.

Java utilizza per l'elaborazione un quantitativo di memoria predefinito, impostato come heap. Entrambi sono impostati come opzioni nel comando di avvio di Java. Questo è impostato in "tomcat.conf".

[root@hostname ~]# vi /usr/share/tomcat/conf/tomcat.conf

Alla fine di questa sezione sono state aggiunte le seguenti informazioni.

CATALINA_OPTS="-server -XX:MaxMetaspaceSize=256m -XX:MetaspaceSize=256m -Xmx256m -Xms256m -Xloggc:/var/log/tomcat/gc.log -XX:+PrintGCDetails"

Avviare Tomcat ed eseguire il comando ps per vedere i valori impostati (-server -XX:MaxMetaspaceSize=256m -XX:MetaspaceSize=256m -Xmx256m -Xms256m -Xloggc:/var/log/tomcat/gc.log -XX :+PrintGCDetails) è visualizzato, è OK.

[root@hostname ~]# tomcat start
[root@hostname ~]# ps aux | grep java
/usr/lib/jvm/jre/bin/java -Djavax.sql.DataSource.Factory=org.apache.commons.dbcp.BasicDataSourceFactory -server -XX:MaxMetaspaceSize=256m -XX:MetaspaceSize=256m -Xmx256m -Xms256m -Xloggc:/var/log/tomcat/gc.log -XX:+PrintGCDetails -classpath /usr/share/tomcat/bin/bootstrap.jar:/usr/share/tomcat/bin/tomcat-juli.jar:/usr/share/java/commons-daemon.jar -Dcatalina.base=/usr/share/tomcat -Dcatalina.home=/usr/share/tomcat -Djava.endorsed.dirs= -Djava.io.tmpdir=/var/cache/tomcat/temp -Djava.util.logging.config.file=/usr/share/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager org.apache.catalina.startup.Bootstrap start

La configurazione di cui sopra avvia Tomcat con 256M di memoria. Al di sopra di 256 M, l'impostazione è impostata per non utilizzare la memoria.

Per quanto riguarda il log di gc, è impostato per creare un file di log in "/var/log/tomcat/" con "gc.log".

La creazione della directory "/var/log/tomcat/" avviene nei seguenti passaggi.

2-5. Modifica delle impostazioni di registrazione

Creare una directory di log e modificare il percorso di output del log per Tomcat. Le impostazioni relative alla registrazione si trovano in '/usr/share/tomcat/conf/logging.properties' e '/usr/share/tomcat/conf/server.xml'.

Di seguito è riportata la creazione della directory.

[root@hostname ~]# mkdir /var/log/tomcat
[root@hostname ~]# chmod 755 /var/log/tomcat

Creare una directory e impostare i permessi a 755. (Tomcat può scrivere i log, ma gli altri utenti hanno solo permessi di sola lettura)

Quindi modificare 'logging.properties'.

[root@hostname ~]# vi /usr/share/tomcat/conf/logging.properties

Modificare come segue.

1catalina.org.apache.juli.FileHandler.level = FINE
1catalina.org.apache.juli.FileHandler.directory = /var/log/tomcat
1catalina.org.apache.juli.FileHandler.prefix = catalina.

2localhost.org.apache.juli.FileHandler.level = FINE
2localhost.org.apache.juli.FileHandler.directory = /var/log/tomcat
2localhost.org.apache.juli.FileHandler.prefix = localhost.

3manager.org.apache.juli.FileHandler.level = FINE
3manager.org.apache.juli.FileHandler.directory = /var/log/tomcat
3manager.org.apache.juli.FileHandler.prefix = manager.

4host-manager.org.apache.juli.FileHandler.level = FINE
4host-manager.org.apache.juli.FileHandler.directory = /var/log/tomcat
4host-manager.org.apache.juli.FileHandler.prefix = host-manager.


Quindi modificare 'server.xml'.

[root@hostname ~]# vi /usr/share/tomcat/conf/server.xml

Modificare come segue.

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="/var/log/tomcat"

prefix="localhost_access" suffix=".txt"
pattern="combined" />

2-6. Impostazione dell'avvio automatico

Infine, anche se non è obbligatorio, è difficile avviare il server a ogni riavvio, quindi è stata inserita un'impostazione per cui Tomcat si avvia automaticamente all'avvio del server.

Si noti che questa procedura si riferisce a CentOS7, quindi se si utilizza qualcosa di diverso da CentOS7, è necessario utilizzare il comando Service.

[root@hostname ~]# systemctl enable tomcat
[root@hostname ~]# systemctl is-enabled tomcat
enabled
[root@hostname ~]# systemctl list-unit-files --type=service | grep tomcat
tomcat.service                                enabled
[root@hostname ~]# systemctl daemon-reload

2-7. Impostazioni di trasmissione della posta

Si tratta di un'impostazione non necessaria se non si utilizza Tomcat per inviare e-mail. Se state implementando un processo di invio di e-mail in Java, fate riferimento alla configurazione.

Per prima cosa, aggiungete un barattolo. Posizionare il seguente jar sotto la lib di tomcat (/usr/share/tomcat/lib/) e far coincidere i permessi con quelli delle altre lib.

• javax.activation-1.2.0.jar

• javax.mail.jar

Modificare 'context.xml'.

[root@hostname ~]# vi /usr/share/tomcat/conf/context.xml

Aggiungere quanto segue alla fine di context.xml.

<Context>
    <Resource name="mail/Session" auth="Container"
              type="javax.mail.Session"
              />
</Context>


3. sintesi

Abbiamo descritto la configurazione iniziale richiesta al momento dell'installazione di Tomcat.

Tomcat funziona fondamentalmente in una certa misura con le impostazioni predefinite, ma se si vuole effettivamente personalizzarlo, è utile in seguito impostare la destinazione dell'output di log e i comandi di avvio automatico.

■INFORMATION

Articoli


■PROFILE

Profilo


■Contatti

Contatti