Ръководство за защита и защита на Apache Tomcat

Практическо ръководство за укрепване и защита на сървъра Apache Tomcat с най-добрите практики.

Tomcat е един от най-популярните сървъри за сервлети и JSP контейнери. Използва се от някои от следните уебсайтове с голям трафик:

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

Графиката по-долу показва пазарната позиция на Tomcat в сървъра за приложения на Java.

Източник: Plumbr

Технически можете да използвате Tomcat като преден сървър за директно обслужване на заявки за сайтове. Въпреки това, в производствена среда, може да искате да използвате някои уеб сървъри като Apache, Nginx като преден край за насочване на заявките към Tomcat.

Използването на уеб сървър за обработка на заявките дава предимства за производителност и сигурност. Ако използвате Apache HTTP като преден уеб сървър, тогава трябва да обмислите защитата и на това.

Наличието на конфигурация по подразбиране на Tomcat може да разкрие чувствителна информация, което помага на хакера да се подготви за атака срещу приложението.

Следните са тествани на Tomcat 7.x, UNIX среда.

Публика

Това е предназначено за администратор на междинен софтуер, поддръжка на приложения, системен анализатор или всеки, който работи или желае да научи Tomcat Hardening and Security.

Доброто познаване на командата Tomcat & UNIX е задължително.

Бележки

Необходим ни е някакъв инструмент за проверка на HTTP заглавки за проверка. Има два начина да направите това.

Ако тествате приложение, обърнато към интернет, тогава можете да използвате следните инструменти за HTTP Header, за да проверите изпълнението.

А за интранет приложение можете да използвате инструментите за разработчици на Google Chrome, Firefox.

  Bit Rot: Как твърдите и SSD дисковете умират с течение на времето

Като най-добра практика, трябва да направите резервно копие на всеки файл, който ще модифицирате.

Ще наричаме папката за инсталиране на Tomcat като $tomcat в тези указания.

Нека да преминем през процедурите за втвърдяване и осигуряване.

Премахване на банера на сървъра

Премахването на банер на сървъра от HTTP заглавката е едно от първите неща, които трябва да направите като втвърдяване.

Наличието на сървърен банер разкрива продукта и версията, които използвате, и води до уязвимост при изтичане на информация.

По подразбиране страница, обслужвана от Tomcat, ще се покаже така.

Нека скрием подробностите за продукта и версията от заглавката на сървъра.

  • Отидете в папката $tomcat/conf
  • Променете server.xml с помощта на vi
  • Добавете следното към порта на конектора
Server =” “

Пример: –

<Connector port="8080" protocol="HTTP/1.1" 
connectionTimeout="20000" 
Server =" "
redirectPort="8443" />
  • Запазете файла и рестартирайте Tomcat. Сега, когато получите достъп до приложение, трябва да видите празна стойност за заглавката на сървъра.

Стартиране на Tomcat с мениджър за сигурност

Security Manager ви защитава от ненадежден аплет, работещ във вашия браузър.

Изпълнението на Tomcat с мениджър по сигурността е по-добро, отколкото без такъв. Tomcat има отлична документация за Tomcat Security Manager.

Хубавото на това е, че не е необходимо да променяте конфигурационен файл. Това е просто начинът, по който изпълнявате файла startup.sh.

Всичко, което трябва да направите, е да стартирате tomcat с –security аргумент.

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

Активирайте SSL/TLS

Обслужването на уеб заявки през HTTPS е от съществено значение за защита на данните между клиента и Tomcat. За да направите вашето уеб приложение достъпно през HTTPS, трябва да внедрите SSL сертификат.

Ако приемем, че вече имате готово хранилище за ключове със сертификата, можете да добавите ред по-долу във файла server.xml в секцията за порт на конектора.

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

Променете името и паролата на файла на Keystore с вашите.

  Как бързо да създадете своя собствена тема за браузър Chrome

Ако имате нужда от помощ с процеса на съхранение на ключове и CSR, вижте това ръководство.

Налагане на HTTPS

Това е приложимо само когато сте активирали SSL. Ако не, това ще прекъсне приложението.

След като сте активирали SSL, би било добре да пренасочите принудително всички HTTP заявки към HTTPS за сигурна комуникация между потребителя и Tomcat сървъра за приложения.

  • Отидете в папката $tomcat/conf
  • Променете web.xml с помощта на vi
  • Добавете следния синтаксис преди
<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>
  • Запазете файла и рестартирайте Tomcat

Възможно е да откраднете или манипулирате сесия на уеб приложение и бисквитки, без да имате защитена бисквитка. Това е флаг, който се инжектира в заглавката на отговора.

Това става чрез добавяне под реда в раздела session-config на файла web.xml

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

Екранна снимка на конфигурацията:

Запазете файла и рестартирайте Tomcat, за да прегледате заглавката на HTTP отговора.

Стартирайте Tomcat от непривилегирован акаунт

Добре е да използвате отделен непривилегирован потребител за Tomcat. Идеята тук е да се защитят други работещи услуги в случай на компрометиране на някой от акаунтите.

  • Създайте UNIX потребител, да кажем tomcat
useradd tomcat
  • Спрете котката, ако работи
  • Променете собствеността върху $tomcat на потребител tomcat
chown -R tomcat:tomcat tomcat/

Стартирайте Tomcat и се уверете, че работи с потребител tomcat

Премахнете стандартните/нежеланите приложения

По подразбиране Tomcat идва със следните уеб приложения, които могат или не са необходими в производствена среда.

Можете да ги изтриете, за да ги поддържате чисти и да избегнете всеки известен риск за сигурността с приложението по подразбиране Tomcat.

  • ROOT – Страница за добре дошли по подразбиране
  • Документи – Tomcat документация
  • Примери – JSP и сървлети за демонстрация
  • Мениджър, хост-мениджър – Tomcat администрация
  Как да промените търсачката по подразбиране в Chrome

Те са достъпни в папка $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]#

Променете порта и командата SHUTDOWN

По подразбиране tomcat е конфигуриран да се изключва на 8005 порт.

Знаете ли, че можете да изключите екземпляра на tomcat, като направите telnet към IP: порт и издадете команда 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 #

опасно!

Виждате ли, наличието на конфигурация по подразбиране води до висок риск за сигурността.

Препоръчително е да промените порта за изключване на tomcat и командата по подразбиране на нещо непредвидимо.

  • Променете следното в server.xml
<Server port="8005" shutdown="SHUTDOWN">

8005 – Промяна на друг неизползван порт

ИЗКЛЮЧВАНЕ – Променете към нещо сложно

бивш

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

Замяна на страницата по подразбиране 404, 403, 500

Наличието на страница по подразбиране за ненамерено, забранено, сървърна грешка разкрива подробности за версията.

Нека да разгледаме страницата 404 по подразбиране.

За да смекчите, можете първо да създадете страница за обща грешка и да конфигурирате web.xml да пренасочва към страница за обща грешка.

  • Отидете на $tomcat/webapps/$application
  • Създайте файл error.jsp с помощта на vi редактор
<html>
<head> 
<title>Error Page</title>
</head>
<body> That's an error! </body>
</html>
  • Отидете в папката $tomcat/conf
  • Добавете следното във файла web.xml. Уверете се, че сте добавили синтаксис преди
<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>
  • Рестартирайте tomcat сървъра, за да го тествате

Много по-добре!

Можете да направите това и за java.lang.Exception. Това ще помогне да не се излага информация за версията на tomcat, ако има изключение на java lang.

Просто добавете следното в web.xml и рестартирайте tomcat сървъра.

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

Надявам се, че горното ръководство ви дава представа за защитата на Tomcat. Ако искате да научите повече за администрацията на Tomcat, вижте това онлайн курс.
Освен това научете как да конфигурирате WAS да спре да иска парола по време на изключване тук.