Ghid de întărire și securitate Apache Tomcat

Un ghid practic pentru consolidarea și securizarea serverului Apache Tomcat cu cele mai bune practici.

Tomcat este unul dintre cele mai populare servere Servlet și JSP Container. Este folosit de unele dintre următoarele site-uri web cu trafic ridicat:

  • LinkedIn.com
  • Dailymail.co.uk
  • Comcast.net
  • Wallmart.com
  • Reuters.com
  • Meetup.com
  • Webs.com

Graficul de mai jos arată poziția pe piață a Tomcat pe serverul de aplicații Java.

Sursa: Plumbr

Din punct de vedere tehnic, puteți utiliza Tomcat ca server front-end pentru a servi direct solicitările site-ului. Cu toate acestea, într-un mediu de producție, este posibil să doriți să utilizați unele servere web precum Apache, Nginx ca front-end pentru a direcționa cererile către Tomcat.

Utilizarea unui server web pentru a gestiona cererile oferă avantaje de performanță și securitate. Dacă utilizați Apache HTTP ca server web front-end, atunci trebuie să luați în considerare și asigurarea acestuia.

Având configurația implicită Tomcat poate expune informații sensibile, ceea ce îl ajută pe hacker să se pregătească pentru un atac asupra aplicației.

Următoarele sunt testate pe Tomcat 7.x, mediu UNIX.

Public

Acesta este conceput pentru Administrator Middleware, Suport de aplicații, Analist de sistem sau oricine lucrează sau dornic să învețe Tomcat Hardening and Security.

Cunoașterea bună a comenzilor Tomcat și UNIX este obligatorie.

Note

Avem nevoie de un instrument pentru a examina antetele HTTP pentru verificare. Există două moduri în care puteți face acest lucru.

Dacă testați o aplicație orientată spre Internet, puteți utiliza următoarele instrumente de antet HTTP pentru a verifica implementarea.

Și pentru o aplicație Intranet, puteți utiliza Google Chrome, instrumentele de dezvoltare Firefox.

  Obțineți căutarea și selecția rapidă a folderelor atunci când salvați un marcaj [Chrome]

Ca cea mai bună practică, trebuie să faceți o copie de rezervă a oricărui fișier pe care urmează să îl modificați.

Vom numi folderul de instalare Tomcat ca $tomcat pe tot parcursul acestui ghid.

Să trecem prin procedurile de întărire și securizare.

Eliminați bannerul serverului

Eliminarea bannerului serverului din antetul HTTP este unul dintre primele lucruri de făcut ca întărire.

Dacă aveți un banner pe server, expune produsul și versiunea pe care o utilizați și duce la vulnerabilitate la scurgerea de informații.

În mod implicit, o pagină deservită de Tomcat se va afișa astfel.

Să ascundem detaliile despre produs și versiune din antetul Server.

  • Accesați folderul $tomcat/conf
  • Modificați server.xml utilizând vi
  • Adăugați următoarele la portul conector
Server =” “

Ex: –

<Connector port="8080" protocol="HTTP/1.1" 
connectionTimeout="20000" 
Server =" "
redirectPort="8443" />
  • Salvați fișierul și reporniți Tomcat-ul. Acum, când accesați o aplicație, ar trebui să vedeți o valoare goală pentru antetul Server.

Pornirea Tomcat cu un manager de securitate

Security Manager vă protejează de un applet neîncrezat care rulează în browser.

Este mai bine să rulați Tomcat cu un manager de securitate decât să rulați fără unul. Tomcat are o documentație excelentă Manager de securitate Tomcat.

Lucrul bun despre acest lucru este că nu trebuie să schimbați niciun fișier de configurare. Este doar modul în care executați fișierul startup.sh.

Tot ce trebuie să faceți este să începeți tomcat cu argumentul –security.

[[email protected] 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.
[[email protected] bin]#

Activați SSL/TLS

Servirea cererilor web prin HTTPS este esențială pentru a proteja datele dintre client și Tomcat. Pentru a face aplicația dvs. web accesibilă prin HTTPS, trebuie să implementați certificatul SSL.

Presupunând că aveți deja depozitul de chei pregătit cu certificatul, puteți adăuga linia de mai jos în fișierul server.xml din secțiunea Port conector.

SSLEnabled="true" scheme="https" keystoreFile="ssl/bloggerflare.jks" keystorePass="chandan" clientAuth="false" sslProtocol="TLS"

Schimbați numele fișierului Keystore și parola cu ale dvs.

  Cum să găsiți rețete în Căutarea de imagini Google

Dacă aveți nevoie de ajutor cu procesul de depozit de chei și CSR, consultați acest ghid.

Implementați HTTPS

Acest lucru se aplică numai când ați activat SSL. Dacă nu, va rupe aplicația.

Odată ce ați activat SSL, ar fi bine să forțați redirecționarea tuturor solicitărilor HTTP către HTTPS pentru o comunicare sigură între utilizator și serverul de aplicații Tomcat.

  • Accesați folderul $tomcat/conf
  • Modificați web.xml utilizând vi
  • Adăugați următoarele înainte de sintaxa
<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>
  • Salvați fișierul și reporniți Tomcat-ul

Este posibil să furați sau să manipulați sesiunea aplicației web și cookie-urile fără a avea un cookie securizat. Este un steag care este injectat în antetul răspunsului.

Acest lucru se face prin adăugarea sub linia din secțiunea session-config a fișierului web.xml

<cookie-config>
<http-only>true</http-only>
<secure>true</secure>
</cookie-config>

Captură de ecran de configurare:

Salvați fișierul și reporniți Tomcat pentru a examina antetul răspunsului HTTP.

Rulați Tomcat dintr-un cont neprivilegiat

Este bine să folosiți un utilizator separat, fără privilegii, pentru Tomcat. Ideea aici este de a proteja alte servicii care rulează în cazul în care vreun cont este compromis.

  • Creați un utilizator UNIX, să spunem tomcat
useradd tomcat
  • Opriți Tomcatul dacă rulați
  • Schimbați proprietatea $tomcat în utilizatorul tomcat
chown -R tomcat:tomcat tomcat/

Porniți Tomcat și asigurați-vă că rulează cu utilizatorul Tomcat

Eliminați aplicațiile implicite/nedorite

În mod implicit, Tomcat vine cu următoarele aplicații web, care pot fi sau nu necesare într-un mediu de producție.

Le puteți șterge pentru a-l păstra curat și pentru a evita orice risc de securitate cunoscut cu aplicația implicită Tomcat.

  • ROOT – Pagina de întâmpinare implicită
  • Documente – documentație Tomcat
  • Exemple – JSP și servlet-uri pentru demonstrație
  • Manager, host-manager – administrare Tomcat
  8 cele mai bune instrumente de documentare a proceselor pentru a eficientiza procesul de afaceri

Sunt disponibile în folderul $tomcat/webapps

[[email protected] 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
[[email protected] webapps]#

Schimbați portul SHUTDOWN și comanda

În mod implicit, tomcat este configurat să fie oprit pe portul 8005.

Știți că puteți închide instanța tomcat făcând un telnet la IP: port și lansând comanda 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 #

Periculos!

Vedeți, configurația implicită duce la un risc ridicat de securitate.

Este recomandat să schimbați portul de închidere Tomcat și comanda implicită la ceva imprevizibil.

  • Modificați următoarele în server.xml
<Server port="8005" shutdown="SHUTDOWN">

8005 – Schimbați la alt port nefolosit

OPRIRE – Schimbați la ceva complicat

ex-

<Server port="8867" shutdown="NOTGONNAGUESS">

Înlocuiți pagina implicită 404, 403, 500

Având o pagină implicită pentru eroarea serverului negăsită, interzisă, expune detaliile versiunii.

Să ne uităm la pagina implicită 404.

Pentru a reduce, mai întâi puteți crea o pagină de eroare generală și configura web.xml pentru a redirecționa către o pagină de eroare generală.

  • Accesați $tomcat/webapps/$application
  • Creați un fișier error.jsp folosind editorul vi
<html>
<head> 
<title>Error Page</title>
</head>
<body> That's an error! </body>
</html>
  • Accesați folderul $tomcat/conf
  • Adăugați următoarele în fișierul web.xml. Asigurați-vă că adăugați înainte de sintaxa
<error-page> 
<error-code>404</error-code> 
<location>/error.jsp</location>
</error-page>
<error-page> 
<error-code>403</error-code> 
<location>/error.jsp</location>
</error-page>
<error-page> 
<error-code>500</error-code> 
<location>/error.jsp</location>
</error-page>
  • Reporniți serverul Tomcat pentru a-l testa

Mult mai bine!

Puteți face acest lucru și pentru java.lang.Exception. Acest lucru vă va ajuta să nu expuneți informațiile despre versiunea tomcat în cazul în care există o excepție java lang.

Doar adăugați următoarele în web.xml și reporniți serverul Tomcat.

<error-page> 
<exception-type>java.lang.Exception</exception-type> 
<location>/error.jsp</location>
</error-page>

Sper că ghidul de mai sus vă oferă o idee despre securizarea Tomcat. Dacă doriți să aflați mai multe despre administrarea Tomcat, consultați aceasta curs online.
De asemenea, aflați aici cum să configurați WAS pentru a nu mai solicita parola în timpul închiderii.