Apache Tomcat Ghid de întărire și securitate

Publicat: 2015-02-14

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.

cota-piață-tomcat
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.

  • Verificator antet HTTP
  • Țintă de hacker

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

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.

tomcat-server-header

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 Connector port
 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.
tomcat-removed-server-header

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ă despre Tomcat Security Manager.

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 .

 [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]#

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 server. xml din secțiunea Connector port .

 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.

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 </web-app>
 <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

Adăugați marcajul Secure & HttpOnly la Cookie

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:

doar tomcat-http

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

Sunt disponibile în folderul $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]#

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.

tomcat-default-404-page

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>
<cap> 
<title>Pagină de eroare</title>
</cap>
<body> Este o eroare! </corp>
</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 </web-app> sintaxa
 <pagina-eroare> 
<error-code>404</error-code> 
<location>/error.jsp</location>
</error-page>
<pagina-eroare> 
<error-code>403</error-code> 
<location>/error.jsp</location>
</error-page>
<pagina-eroare> 
<error-code>500</error-code> 
<location>/error.jsp</location>
</error-page>
  • Reporniți serverul Tomcat pentru a-l testa
tomcat-custom-error

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.

 <pagina-eroare> 
<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 acest curs online.
De asemenea, aflați aici cum să configurați WAS pentru a nu mai solicita parola în timpul închiderii.