Apache Tomcat Hardening and Security Guide

Praktický průvodce posílením a zabezpečením serveru Apache Tomcat Server s osvědčenými postupy.

Tomcat je jedním z nejpopulárnějších serverů Servlet a JSP Container. Používají jej některé z následujících webů s vysokou návštěvností:

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

Níže uvedený graf ukazuje tržní pozici Tomcatu na aplikačním serveru Java.

Zdroj: Plumbr

Technicky můžete Tomcat použít jako front-end server pro přímé obsluhování požadavků webu. V produkčním prostředí však možná budete chtít použít některé webové servery jako Apache, Nginx jako front-end pro směrování požadavků na Tomcat.

Použití webového serveru ke zpracování požadavků přináší výhody výkonu a zabezpečení. Pokud používáte Apache HTTP jako front-end webový server, musíte také zvážit zabezpečení.

Výchozí konfigurace Tomcatu může odhalit citlivé informace, což hackerům pomáhá připravit se na útok na aplikaci.

Následující jsou testovány na Tomcat 7.x, prostředí UNIX.

Publikum

Toto je určeno pro správce middlewaru, aplikační podporu, systémové analytiky nebo kohokoli, kdo pracuje nebo se chce naučit Tomcat Hardening a zabezpečení.

Dobrá znalost příkazů Tomcat a UNIX je povinná.

Poznámky

Potřebujeme nějaký nástroj k ověření HTTP hlaviček. Můžete to udělat dvěma způsoby.

Pokud testujete aplikaci orientovanou na internet, můžete k ověření implementace použít následující nástroje záhlaví HTTP.

A pro intranetovou aplikaci můžete použít vývojářské nástroje Google Chrome a Firefox.

Nejlepším postupem je vytvořit zálohu jakéhokoli souboru, který se chystáte upravit.

  8 nejlepších testerů předmětu e-mailu, které lze použít před odesláním bulletinů

Instalační složku Tomcat budeme v těchto pokynech nazývat $tomcat.

Pojďme si projít postupy kalení a zajištění.

Odebrat banner serveru

Odstranění banneru serveru z hlavičky HTTP je jednou z prvních věcí, které je třeba udělat jako zpevnění.

Banner serveru odhaluje produkt a verzi, kterou používáte, a vede k zranitelnosti úniku informací.

Ve výchozím nastavení se stránka obsluhovaná Tomcatem zobrazí takto.

Pojďme skrýt podrobnosti o produktu a verzi z hlavičky Server.

  • Přejděte do složky $tomcat/conf
  • Upravte server.xml pomocí vi
  • Přidejte následující do portu konektoru
Server =” “

Příklad: –

<Connector port="8080" protocol="HTTP/1.1" 
connectionTimeout="20000" 
Server =" "
redirectPort="8443" />
  • Uložte soubor a restartujte Tomcat. Nyní, když přistupujete k aplikaci, měli byste vidět prázdnou hodnotu pro hlavičku serveru.

Spuštění Tomcatu pomocí Správce zabezpečení

Security Manager vás chrání před nedůvěryhodným apletem spuštěným ve vašem prohlížeči.

Spuštění Tomcatu se správcem zabezpečení je lepší než běh bez něj. Tomcat má vynikající dokumentaci Správce zabezpečení Tomcat.

Dobrá věc na tom je, že nemusíte měnit žádný konfigurační soubor. Je to jen způsob, jakým spustíte soubor startup.sh.

Jediné, co musíte udělat, je začít kocoura s argumentem –bezpečnost.

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

Povolit SSL/TLS

Poskytování webových požadavků přes HTTPS je nezbytné pro ochranu dat mezi klientem a Tomcatem. Aby byla vaše webová aplikace přístupná přes HTTPS, musíte implementovat SSL certifikát.

Za předpokladu, že již máte úložiště klíčů připraveno s certifikátem, můžete přidat níže řádek v souboru server.xml v sekci Port konektoru.

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

Změňte název souboru úložiště klíčů a heslo podle svého.

  Je to bezpečné a legální?

Pokud potřebujete pomoc s procesem úložiště klíčů a CSR, podívejte se na tuto příručku.

Vynutit HTTPS

To platí pouze v případě, že máte povoleno SSL. Pokud ne, aplikace se přeruší.

Jakmile povolíte SSL, bylo by dobré vynutit přesměrování všech požadavků HTTP na HTTPS pro zabezpečenou komunikaci mezi uživatelem a aplikačním serverem Tomcat.

  • Přejděte do složky $tomcat/conf
  • Upravte web.xml pomocí vi
  • Přidejte následující před syntaxi
<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>
  • Uložte soubor a restartujte Tomcat

Je možné ukrást nebo manipulovat relaci webové aplikace a soubory cookie, aniž byste měli zabezpečený soubor cookie. Je to příznak, který je vložen do hlavičky odpovědi.

To se provede přidáním pod řádek v sekci session-config souboru web.xml

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

Snímek obrazovky konfigurace:

Uložte soubor a restartujte Tomcat, abyste prozkoumali hlavičku HTTP odpovědi.

Spusťte Tomcat z neprivilegovaného účtu

Pro Tomcat je dobré použít samostatného neprivilegovaného uživatele. Smyslem je chránit ostatní běžící služby v případě kompromitace některého z účtů.

  • Vytvořte uživatele UNIX, řekněme kocourka
useradd tomcat
  • Zastavte Tomcat, pokud běží
  • Změnit vlastnictví $tomcat na uživatele kocour
chown -R tomcat:tomcat tomcat/

Spusťte Tomcat a ujistěte se, že běží s uživatelem Tomcat

Odstraňte výchozí/nežádoucí aplikace

Ve výchozím nastavení je Tomcat dodáván s následujícími webovými aplikacemi, které mohou nebo nemusí být vyžadovány v produkčním prostředí.

Můžete je odstranit, abyste je udrželi v čistotě a předešli jakémukoli známému bezpečnostnímu riziku s výchozí aplikací Tomcat.

  • ROOT – Výchozí uvítací stránka
  • Dokumenty – Dokumentace Tomcat
  • Příklady – JSP a servlety pro demonstraci
  • Manažer, host-manager – správa Tomcat

Jsou k dispozici ve složce $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]#

Změňte port a příkaz VYPNUTÍ

Ve výchozím nastavení je Tomcat nakonfigurován tak, aby se vypínal na portu 8005.

  Jak vypnout nebo přizpůsobit oznámení Xbox One

Víte, že instanci tomcat můžete vypnout provedením telnetu na IP: port a zadáním příkazu 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 #

Nebezpečný!

Jak vidíte, výchozí konfigurace vede k vysokému bezpečnostnímu riziku.

Doporučuje se změnit port vypnutí tomcat a výchozí příkaz na něco nepředvídatelného.

  • Upravte následující v server.xml
<Server port="8005" shutdown="SHUTDOWN">

8005 – Změňte na jiný nepoužívaný port

VYPNUTÍ – Změna na něco složitého

ex-

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

Nahradit výchozí stránku 404, 403, 500

Výchozí stránka pro nenalezenou, zakázanou chybu serveru odhaluje podrobnosti o verzi.

Podívejme se na výchozí stránku 404.

Pro zmírnění můžete nejprve vytvořit obecnou chybovou stránku a nakonfigurovat web.xml tak, aby přesměroval na obecnou chybovou stránku.

  • Přejděte na $tomcat/webapps/$application
  • Vytvořte soubor error.jsp pomocí editoru vi
<html>
<head> 
<title>Error Page</title>
</head>
<body> That's an error! </body>
</html>
  • Přejděte do složky $tomcat/conf
  • Přidejte následující do souboru web.xml. Ujistěte se, že jste přidali před syntaxi
<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>
  • Restartujte server tomcat a otestujte jej

Mnohem lepší!

Můžete to udělat i pro java.lang.Exception. To vám pomůže při neodhalování informací o verzi kocourků v případě jakékoli výjimky jazyka Java.

Stačí přidat následující do web.xml a restartovat server tomcat.

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

Doufám, že výše uvedený průvodce vám poskytne představu o zabezpečení Tomcata. Pokud se chcete dozvědět více o správě Tomcat, podívejte se na toto online kurz.
Zde se také dozvíte, jak nakonfigurovat WAS tak, aby při vypínání přestal vyžadovat heslo.