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ø.
Innholdsfortegnelse
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.
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.
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
Legg til Secure & HttpOnly-flagg til informasjonskapsel
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.
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.