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.
Table of Contents
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.
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.
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
Přidejte do souboru cookie příznak Secure & HttpOnly
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.
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.