Praktisk veiledning for å sikre Apache Tomcat-serveren
Tomcat er en svært utbredt server for Servlet- og JSP-containere. Den brukes av mange populære nettsteder, inkludert:
- LinkedIn.com
- Dailymail.co.uk
- Comcast.net
- Wallmart.com
- Reuters.com
- Meetup.com
- Webs.com
Tabellen nedenfor illustrerer Tomcats posisjon i markedet for Java-applikasjonsservere.
Kilde: Plumbr
I utgangspunktet kan Tomcat fungere som en front-end server for å håndtere direkte forespørsler om nettsider. I et produksjonsmiljø er det imidlertid ofte mer fordelaktig å bruke webservere som Apache eller Nginx som front-end for å dirigere forespørsler til Tomcat.
Denne tilnærmingen gir både ytelsesforbedringer og økt sikkerhet. Hvis du velger å bruke Apache HTTP som front-end webserver, er det viktig å også sørge for sikkerheten til denne.
Standardkonfigurasjonen av Tomcat kan potensielt avsløre sensitiv informasjon, noe som kan gi en angriper muligheten til å forberede seg på et angrep mot applikasjonen.
De følgende trinnene er testet på Tomcat 7.x i et UNIX-miljø.
Målgruppe
Denne veiledningen er rettet mot mellomvareadministratorer, applikasjonsstøttepersonell, systemanalytikere, og alle som er interessert i eller jobber med herding og sikkerhet av Tomcat.
Det kreves god forståelse av Tomcat og UNIX-kommandoer.
Merknader
Vi trenger et verktøy for å inspisere HTTP-hoder for verifikasjon. Dette kan gjøres på to måter:
For internett-vendte applikasjoner kan du bruke HTTP Header-verktøy for å bekrefte implementeringen.
For interne applikasjoner kan utviklerverktøy i Google Chrome eller Firefox benyttes.
Det anbefales sterkt å ta sikkerhetskopi av alle filer før de endres.
I denne veiledningen refererer vi til Tomcats installasjonsmappe som $tomcat.
La oss gå gjennom prosedyrene for herding og sikring.
Fjern serverbanner
En av de første tiltakene for herding er å fjerne serverbanneret fra HTTP-hoder.
Et serverbanner avslører hvilken programvare og versjon du bruker, noe som kan føre til informasjonslekkasjer.
Som standard vil en side servert av Tomcat vise informasjon som dette:
Vi skal skjule produkt- og versjonsdetaljene fra serveroverskriften.
- Naviger til mappen $tomcat/conf
- Rediger server.xml ved hjelp av vi
- Legg til følgende i koblingsporten
Server =” “
Eksempel:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" Server =" " redirectPort="8443" />
- Lagre filen og start Tomcat på nytt. Nå skal serveroverskriften vise en tom verdi når du åpner en applikasjon.
Start Tomcat med en sikkerhetsbehandler
En sikkerhetsbehandler beskytter deg mot usikre appletter som kjører i nettleseren din.
Det er bedre å kjøre Tomcat med en sikkerhetsbehandler enn uten. Tomcat har utmerket dokumentasjon om Tomcat Security Manager.
Det beste er at du ikke trenger å endre noen konfigurasjonsfiler, bare måten du kjører startup.sh-filen på.
Du må bare starte Tomcat med argumentet -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]#
Aktiver SSL/TLS
Det er essensielt å håndtere webforespørsler over HTTPS for å beskytte data mellom klienten og Tomcat. For å gjøre webapplikasjonen tilgjengelig via HTTPS, må du implementere et SSL-sertifikat.
Forutsatt at du har en nøkkellager klar med sertifikatet, legg til følgende linje i server.xml-filen under koblingsportseksjonen:
SSLEnabled="true" scheme="https" keystoreFile="ssl/bloggerflare.jks" keystorePass="chandan" clientAuth="false" sslProtocol="TLS"
Endre filnavnet til nøkkellageret og passordet med dine egne verdier.
Hvis du trenger hjelp med nøkkellager- og CSR-prosessen, kan du se denne veiledningen.
Tving HTTPS
Dette er bare relevant når SSL er aktivert. Hvis ikke, vil det forstyrre applikasjonen.
Etter at SSL er aktivert, er det lurt å omdirigere alle HTTP-forespørsler til HTTPS for å sikre sikker kommunikasjon mellom brukeren og Tomcat-applikasjonsserveren.
- Naviger til mappen $tomcat/conf
- Rediger web.xml ved hjelp av vi
- Legg til følgende før syntaksen </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>
- Lagre filen og start Tomcat på nytt.
Legg til Secure & HttpOnly-flagg til informasjonskapsel
Uten en sikker informasjonskapsel er det mulig å stjele eller manipulere nettapplikasjonsøkter og informasjonskapsler. Dette gjøres ved å injisere et flagg i svarhodet.
Dette gjøres ved å legge til følgende linje 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 å inspisere HTTP-svarhodet.
Kjør Tomcat fra en ikke-privilegert konto
Det er best å bruke en egen, ikke-privilegert bruker for Tomcat. Dette beskytter andre tjenester i tilfelle en konto skulle bli kompromittert.
- Opprett en UNIX-bruker, for eksempel «tomcat»
useradd tomcat
- Stopp Tomcat hvis den kjører.
- Endre eierskapet til $tomcat til brukeren tomcat.
chown -R tomcat:tomcat tomcat/
Start Tomcat og sørg for at den kjører med Tomcat-brukeren.
Fjern standard/uønskede applikasjoner
Som standard leveres Tomcat med følgende webapplikasjoner, som kanskje ikke er nødvendig i et produksjonsmiljø:
Du kan slette dem for å rydde opp og unngå kjente sikkerhetsrisikoer knyttet til Tomcats standardapplikasjoner.
- ROOT – Standard velkomstside
- docs – Tomcat-dokumentasjon
- examples – JSP og servlets for demonstrasjon
- manager, host-manager – Tomcat-administrasjon
De finnes i 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å port 8005.
Visste du at du kan slå av Tomcat-instansen ved å bruke telnet mot IP-adresse og port, og gi kommandoen 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 #
Dette er farlig!
Standardkonfigurasjonen kan føre til høy sikkerhetsrisiko.
Det anbefales å endre Tomcats avslutningsport og standardkommando til noe uforutsigbart.
- Endre følgende i server.xml
<Server port="8005" shutdown="SHUTDOWN">
8005 – Endre til en annen, ubrukt port.
SHUTDOWN – Endre til noe mer komplekst.
Eksempel:
<Server port="8867" shutdown="NOTGONNAGUESS">
Erstatt standard 404, 403 og 500 sider
Standard feilsider for «ikke funnet», «forbudt» og «serverfeil» kan avsløre versjonsinformasjon.
La oss se på standard 404-siden:
For å redusere informasjonslekkasje, kan du opprette en generell feilside og konfigurere web.xml til å omdirigere til denne siden.
- Naviger til $tomcat/webapps/$application
- Opprett en error.jsp-fil med vi-editoren.
<html> <head> <title>Feilside</title> </head> <body> Det oppstod en feil! </body> </html>
- Naviger til mappen $tomcat/conf
- Legg til følgende i web.xml-filen. Sørg for at du legger til før </web-app> syntaksen.
<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 dette.
Mye bedre!
Du kan også gjøre dette for java.lang.Exception. Dette vil hindre at Tomcat-versjonsinformasjon avsløres ved eventuelle unntak i Java.
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 denne veiledningen har gitt deg en forståelse for hvordan du kan sikre Tomcat. Hvis du ønsker å lære mer om Tomcat-administrasjon, kan du sjekke ut dette nettkurset.
Du kan også lære hvordan du konfigurerer WAS til å slutte å spørre om passord ved avslutning her.