Apache Tomcat-hærdning og sikkerhedsvejledning

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ø.

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.

  15 Python-projekter for begyndere at øve og lære

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.

  Sikker, kun visning, selvdestruerende fildeling

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

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.

  Sådan installeres og bruges Teams Add-in til Outlook

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.