Apache Tomcat-herding og sikkerhetsveiledning

En praktisk guide for å herde og sikre Apache Tomcat Server med de beste praksisene.

Tomcat er en av de mest populære Servlet- og JSP Container-serverne. Den brukes av noen av følgende nettsteder med høy trafikk:

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

Tabellen nedenfor viser markedsposisjonen til Tomcat i Java-applikasjonsserveren.

Kilde: Plumbr

Teknisk sett kan du bruke Tomcat som en front-end-server for å betjene nettstedsforespørsler direkte. I et produksjonsmiljø kan det imidlertid være lurt å bruke noen webservere som Apache, Nginx som front-end for å rute forespørslene til Tomcat.

Å bruke en webserver til å håndtere forespørslene gir ytelses- og sikkerhetsfordeler. Hvis du bruker Apache HTTP som en front-end webserver, må du vurdere å sikre det også.

Å ha standard Tomcat-konfigurasjon kan avsløre sensitiv informasjon, noe som hjelper hackeren å forberede seg på et angrep på applikasjonen.

Følgende er testet på Tomcat 7.x, UNIX-miljø.

Publikum

Dette er designet for mellomvareadministrator, applikasjonsstøtte, systemanalytiker eller alle som jobber eller er ivrige etter å lære Tomcat-herding og sikkerhet.

God kjennskap til Tomcat & UNIX-kommandoen er obligatorisk.

Notater

Vi trenger et verktøy for å undersøke HTTP-hoder for verifisering. Det er to måter du kan gjøre dette på.

Hvis du tester Internett-vendt applikasjon, kan du bruke følgende HTTP Header-verktøy for å bekrefte implementeringen.

Og for en intranettapplikasjon kan du bruke Google Chrome, Firefox-utviklerverktøy.

Som en beste praksis må du ta en sikkerhetskopi av alle filer du er i ferd med å endre.

  Varsling er der materialdesign møter varsler på låseskjerm

Vi vil kalle Tomcat installasjonsmappe som $tomcat gjennom denne retningslinjen.

La oss gå gjennom herdings- og sikringsprosedyrene.

Fjern serverbanner

Å fjerne serverbanner fra HTTP Header er en av de første tingene å gjøre som herding.

Å ha et serverbanner avslører produktet og versjonen du bruker og fører til sårbarhet for informasjonslekkasje.

Som standard vil en side servert av Tomcat vises slik.

La oss skjule produkt- og versjonsdetaljene fra serveroverskriften.

  • Gå til mappen $tomcat/conf
  • Endre server.xml ved å bruke vi
  • Legg til følgende til koblingsporten
Server =” “

Eks: –

<Connector port="8080" protocol="HTTP/1.1" 
connectionTimeout="20000" 
Server =" "
redirectPort="8443" />
  • Lagre filen og start Tomcat på nytt. Nå, når du åpner en applikasjon, bør du se en tom verdi for Server-overskriften.

Starte Tomcat med en sikkerhetsbehandler

Security Manager beskytter deg mot en uklarert applet som kjører i nettleseren din.

Å kjøre Tomcat med en sikkerhetsansvarlig er bedre enn å kjøre uten en. Tomcat har utmerket dokumentasjon på Tomcat Security Manager.

Det som er bra med dette er at du ikke trenger å endre noen konfigurasjonsfil. Det er bare måten du kjører startup.sh-filen på.

Alt du trenger å gjøre er å starte tomcat med -sikkerhetsargument.

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

Aktiver SSL/TLS

Å betjene nettforespørsler over HTTPS er avgjørende for å beskytte data mellom klient og Tomcat. For å gjøre nettapplikasjonen din tilgjengelig via HTTPS, må du implementere SSL-sertifikat.

Forutsatt at du allerede har nøkkellager klar med sertifikatet, kan du legge til under linjen i server.xml-filen under koblingsportseksjonen.

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

Endre Keystore-filnavnet og passordet med ditt.

  Løs LG V10 Bootloop-problem

Hvis du trenger hjelp med nøkkellager- og CSR-prosessen, kan du se denne veiledningen.

Håndhev HTTPS

Dette gjelder bare når du har SSL aktivert. Hvis ikke, vil det bryte applikasjonen.

Når du har aktivert SSL, ville det være greit å tvinge omdirigering av alle HTTP-forespørsler til HTTPS for sikker kommunikasjon mellom brukeren til Tomcat-applikasjonsserveren.

  • Gå til mappen $tomcat/conf
  • Endre web.xml ved å bruke vi
  • Legg til følgende før syntaks
<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>
  • Lagre filen og start Tomcat på nytt

Det er mulig å stjele eller manipulere nettapplikasjonsøkt og informasjonskapsler uten å ha en sikker informasjonskapsel. Det er et flagg som injiseres i svarhodet.

Dette gjøres ved å legge til under linjen i session-config-delen av web.xml-filen

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

Skjermbilde for konfigurasjon:

Lagre filen og start Tomcat på nytt for å undersøke HTTP-svarhodet.

Kjør Tomcat fra ikke-privilegert konto

Det er bra å bruke en egen ikke-privilegert bruker for Tomcat. Ideen her er å beskytte andre tjenester som kjører i tilfelle noen konto blir kompromittert.

  • Opprett en UNIX-bruker, la oss si tomcat
useradd tomcat
  • Stopp Tomcat hvis du kjører
  • Endre $tomcat-eierskap til brukertomcat
chown -R tomcat:tomcat tomcat/

Start Tomcat og sørg for at den kjører med Tomcat-bruker

Fjern standard/uønskede programmer

Som standard kommer Tomcat med følgende nettapplikasjoner, som kanskje eller ikke er påkrevd i et produksjonsmiljø.

Du kan slette dem for å holde det rent og unngå kjent sikkerhetsrisiko med Tomcats standardapplikasjon.

  • ROOT – Standard velkomstside
  • Dokumenter – Tomcat-dokumentasjon
  • Eksempler – JSP og servlets for demonstrasjon
  • Leder, vertssjef – Tomcat-administrasjon

De er tilgjengelige under mappen $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]#

Endre SHUTDOWN-port og kommando

Som standard er tomcat konfigurert til å slås av på 8005-porten.

  Hvordan stille inn en timer på iPhone-kameraet

Vet du at du kan slå av tomcat-forekomsten ved å gjøre en telnet til IP:-port og gi SHUTDOWN-kommandoen?

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 #

Farlig!

Du skjønner, å ha standardkonfigurasjon fører til høy sikkerhetsrisiko.

Det anbefales å endre tomcat-avslutningsporten og standardkommandoen til noe uforutsigbart.

  • Endre følgende i server.xml
<Server port="8005" shutdown="SHUTDOWN">

8005 – Bytt til en annen ubrukt port

SHUTDOWN – Bytt til noe komplisert

Eks-

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

Erstatt standard 404, 403, 500 side

Å ha standardside for ikke funnet, forbudt, serverfeil avslører versjonsdetaljer.

La oss se på standard 404-siden.

For å redusere det kan du først opprette en generell feilside og konfigurere web.xml til å omdirigere til en generell feilside.

  • Gå til $tomcat/webapps/$application
  • Opprett en error.jsp-fil med vi-editor
<html>
<head> 
<title>Error Page</title>
</head>
<body> That's an error! </body>
</html>
  • Gå til mappen $tomcat/conf
  • Legg til følgende i web.xml-filen. Sørg for at du legger til før syntaks
<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>
  • Start tomcat-serveren på nytt for å teste den

Mye bedre!

Du kan også gjøre dette for java.lang.Exception. Dette vil hjelpe til med å ikke avsløre tomcat-versjonsinformasjon hvis noen java lang-unntak.

Bare legg til følgende i web.xml og start tomcat-serveren på nytt.

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

Jeg håper guiden ovenfor gir deg en idé om å sikre Tomcat. Hvis du ønsker å lære mer om Tomcat-administrasjon, så sjekk ut dette nettkurs.
Lær også hvordan du konfigurerer WAS til å slutte å spørre om passord under avslutning her.