En praktisk guide til at hærde og sikre Apache Tomcat Server med den bedste praksis.
Tomcat er en af de mest populære Servlet- og JSP Container-servere. Det bruges af nogle af følgende websteder med høj trafik:
- LinkedIn.com
- Dailymail.co.uk
- Comcast.net
- Wallmart.com
- Reuters.com
- Meetup.com
- Webs.com
Nedenstående diagram viser Tomcats markedsposition på Java-applikationsserveren.
Kilde: Plumbr
Teknisk set kan du bruge Tomcat som en front-end-server til at betjene webstedsanmodninger direkte. Men i et produktionsmiljø vil du måske bruge nogle webservere som Apache, Nginx som front-end til at dirigere anmodningerne til Tomcat.
Brug af en webserver til at håndtere anmodningerne giver ydeevne og sikkerhedsfordele. Hvis du bruger Apache HTTP som en front-end webserver, så skal du også overveje at sikre det.
At have standard Tomcat-konfiguration kan afsløre følsomme oplysninger, hvilket hjælper hackeren med at forberede sig på et angreb på applikationen.
Følgende er testet på Tomcat 7.x, UNIX-miljø.
Indholdsfortegnelse
Publikum
Dette er designet til Middleware-administratorer, applikationssupport, systemanalytiker eller alle, der arbejder eller er ivrige efter at lære Tomcat-hærdning og sikkerhed.
Godt kendskab til Tomcat & UNIX kommando er obligatorisk.
Noter
Vi har brug for et eller andet værktøj til at undersøge HTTP-headere til verifikation. Der er to måder, du kan gøre dette på.
Hvis du tester internetvendt applikation, kan du bruge følgende HTTP Header-værktøjer til at bekræfte implementeringen.
Og til en intranetapplikation kan du bruge Google Chrome, Firefox-udviklerværktøjer.
Som en bedste praksis skal du tage en sikkerhedskopi af enhver fil, du er ved at ændre.
Vi vil kalde Tomcat-installationsmappen som $tomcat i hele denne retningslinjer.
Lad os gennemgå hærdnings- og sikringsprocedurerne.
Fjern serverbanner
Fjernelse af serverbanner fra HTTP Header er en af de første ting at gøre som hærdning.
At have et serverbanner afslører det produkt og den version, du bruger, og det fører til sårbarhed over for informationslækage.
Som standard vil en side, der serveres af Tomcat, blive vist sådan.
Lad os skjule produkt- og versionsdetaljerne fra serveroverskriften.
- Gå til mappen $tomcat/conf
- Rediger server.xml ved at bruge vi
- Tilføj følgende til stikport
Server =” “
Eks: –
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" Server =" " redirectPort="8443" />
- Gem filen og genstart Tomcat. Nu, når du får adgang til et program, bør du se en tom værdi for Server-headeren.
Starter Tomcat med en sikkerhedsmanager
Security Manager beskytter dig mod en upålidelig applet, der kører i din browser.
At køre Tomcat med en sikkerhedsmanager er bedre end at køre uden en. Tomcat har fremragende dokumentation på Tomcat Security Manager.
Det gode ved dette er, at du ikke behøver at ændre nogen konfigurationsfil. Det er bare den måde, du udfører startup.sh-filen på.
Alt du skal gøre er at starte tomcat med -sikkerhedsargument.
[[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
Servering af webanmodninger over HTTPS er afgørende for at beskytte data mellem klient og Tomcat. For at gøre din webapplikation tilgængelig via HTTPS, skal du implementere SSL-certifikat.
Hvis du antager, at du allerede har keystore klar med certifikatet, kan du tilføje linjen nedenfor i server.xml-filen under Connector-portsektionen.
SSLEnabled="true" scheme="https" keystoreFile="ssl/bloggerflare.jks" keystorePass="chandan" clientAuth="false" sslProtocol="TLS"
Skift Keystore filnavn og adgangskode med dit.
Hvis du har brug for hjælp til nøglelageret og CSR-processen, så se denne vejledning.
Gennemtving HTTPS
Dette gælder kun, når du har SSL aktiveret. Hvis ikke, vil det bryde applikationen.
Når du har aktiveret SSL, ville det være godt at tvinge omdirigering af alle HTTP-anmodninger til HTTPS for sikker kommunikation mellem brugeren og Tomcat-applikationsserveren.
- Gå til mappen $tomcat/conf
- Rediger web.xml ved at bruge vi
- Tilføj 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>
- Gem filen og genstart Tomcat
Tilføj Secure & HttpOnly-flag til Cookie
Det er muligt at stjæle eller manipulere webapplikationssession og cookies uden at have en sikker cookie. Det er et flag, som er injiceret i svarhovedet.
Dette gøres ved at tilføje under linjen i session-config-sektionen af web.xml-filen
<cookie-config> <http-only>true</http-only> <secure>true</secure> </cookie-config>
Konfigurationsskærmbillede:
Gem filen og genstart Tomcat for at undersøge HTTP-svarets header.
Kør Tomcat fra ikke-privilegeret konto
Det er godt at bruge en separat ikke-privilegeret bruger til Tomcat. Ideen her er at beskytte andre tjenester, der kører i tilfælde af, at en konto bliver kompromitteret.
- Opret en UNIX-bruger, lad os sige tomcat
useradd tomcat
- Stop Tomcat, hvis du kører
- Skift $tomcat ejerskab til bruger tomcat
chown -R tomcat:tomcat tomcat/
Start Tomcat og sørg for, at den kører med Tomcat-bruger
Fjern standard/uønskede programmer
Som standard kommer Tomcat med følgende webapplikationer, som muligvis er nødvendige i et produktionsmiljø.
Du kan slette dem for at holde det rent og undgå enhver kendt sikkerhedsrisiko med Tomcats standardapplikation.
- ROOT – Standard velkomstside
- Docs – Tomcat-dokumentation
- Eksempler – JSP og servlets til demonstration
- Manager, host-manager – Tomcat administration
De er tilgængelige 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]#
Skift SHUTDOWN-port og kommando
Som standard er tomcat konfigureret til at blive lukket ned på 8005-porten.
Ved du, at du kan lukke tomcat-forekomsten ned ved at lave en telnet til IP:-port og udstede 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 #
Farligt!
Du kan se, at have en standardkonfiguration fører til høj sikkerhedsrisiko.
Det anbefales at ændre tomcat shutdown-port og standardkommando til noget uforudsigeligt.
- Rediger følgende i server.xml
<Server port="8005" shutdown="SHUTDOWN">
8005 – Skift til en anden ubrugt port
SHUTDOWN – Skift til noget kompliceret
Eks-
<Server port="8867" shutdown="NOTGONNAGUESS">
Erstat standard 404, 403, 500 side
At have standardside for ikke fundet, forbudt, serverfejl afslører versionsdetaljer.
Lad os se på standard 404-siden.
For at afbøde kan du først oprette en generel fejlside og konfigurere web.xml til at omdirigere til en generel fejlside.
- Gå til $tomcat/webapps/$application
- Opret en error.jsp fil ved hjælp af vi editor
<html> <head> <title>Error Page</title> </head> <body> That's an error! </body> </html>
- Gå til mappen $tomcat/conf
- Tilføj følgende i web.xml-filen. Sørg for at tilføje 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>
- Genstart tomcat-serveren for at teste den
Meget bedre!
Du kan også gøre dette til java.lang.Exception. Dette vil hjælpe med ikke at afsløre oplysninger om tomcat-version, hvis der er nogen java lang undtagelse.
Tilføj blot følgende i web.xml og genstart tomcat-serveren.
<error-page> <exception-type>java.lang.Exception</exception-type> <location>/error.jsp</location> </error-page>
Jeg håber, at ovenstående guide giver dig en idé om at sikre Tomcat. Hvis du ønsker at lære mere om Tomcat-administration, så tjek dette online kursus.
Lær også, hvordan du konfigurerer WAS til at stoppe med at bede om adgangskode under nedlukning her.