Apache Tomcat – это бесплатный сервер приложений Java с открытым исходным кодом, который поставляется с невероятной функциональностью из коробки.
И хотя безопасность Apache Tomcat значительно улучшилась за прошедшие годы, это не означает, что ее нельзя улучшить.
В этом руководстве мы рассмотрим различные способы защиты сервера Apache Tomcat.
Методы, обсуждаемые в этом руководстве, лучше всего подходят для продакшена, так как во время разработки они могут вам понадобиться, а могут и не понадобиться.
1 – Уберем информации о сервере
Простым способом повышения безопасности сервера Apache Tomcat является удаление баннера сервера из HTTP-ответа.
Если флаг будет раскрыт, он может выдать версию Tomcat, которую вы используете, что облегчает сбор информации о сервере и известных эксплойтах.
В последних версиях Tomcat (Tomcat 8 и выше) баннер сервера отключен по умолчанию.
Однако если вы используете более старую версию Tomcat, вам, возможно, придется сделать это вручную.
Отредактируйте файл server.xml в директории conf каталога установки Tomcat.
Найдите блок Connector Port и удалите запись server
До:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" server="<value>" redirectPort="8443" />
После:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
Сохраните файл и перезапустите службу Apache Tomcat.
2 – Включите SSL/TLS
SSL позволяет передавать данные между сервером и клиентом по протоколу HTTPS.
Чтобы использовать SSL в Tomcat, тем самым повышая безопасность, отредактируйте файл server.xml и директиву SSLEnabled в Connector port таким образом:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" SSLEnabled="true" scheme="https" keystoreFile="conf/key.jks" keystorePass="password" clientAuth="false" sslProtocol="TLS" redirectPort="8443" />
Приведенная выше запись предполагает, что у вас есть Keystore с SSL-сертификатом.
3 – Не запускайте Tomcat от имени пользователя Root
Никогда не запускайте Tomcat от имени привилегированного пользователя.
Это позволит вам защитить систему в случае взлома службы Tomcat.
Создайте пользователя для запуска службы Tomcat.
sudo useradd -m -U -d /home/tomcat -s $(which false) tomcat
Наконец, измените право собственности на созданного пользователя tomcat.
chown -R tomcat:tomcat /home/tomcat
4 – Используйте Security Manager
./startup.sh -security
To do this, use the catalina script with the –security flag. Using CATALINA_BASE: /home/debian/apache-tomcat-10.0.10 Using CATALINA_HOME: /home/debian/apache-tomcat-10.0.10 Using CATALINA_TMPDIR: /home/debian/apache-tomcat-10.0.10/temp Using JRE_HOME: /usr Using CLASSPATH: /home/debian/apache-tomcat-10.0.10/bin/bootstrap.jar:/home/debian/apache-tomcat-10.0.10/bin/tomcat-juli.jar Using CATALINA_OPTS: Using Security Manager Tomcat started.
5 – Удалите нежелательные приложения
Apache Tomcat поставляется с эксплуатируемыми вариантами приложений по умолчанию.
Лучшая мера по митигации рисков – удалить их из каталога webapps.
Вы можете удалить такие приложения, как:
- ROOT – страница Tomcat по умолчанию
- Docs – документация Tomcat
- Examples – Сервлеты для тестирования
6 – Изменение процедуры выключения Tomcat
Еще одним способом защиты Tomcat является изменение процедуры выключения.
Это поможет предотвратить отключение служб Tomcat злоумышленниками.
Tomcat можно выключить, используя порт 8005 через telnet и отправив команду shutdown:
$ telnet localhost 8005
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
shutdown
Connection closed by foreign host.
Чтобы исправить это, отредактируйте файл server.xml и удалите следующий блок.
<Server port="5800" shutdown="KILLME">
7 – Добавьте флаги Secure и HttpOnly
Злоумышленники также могут манипулировать cookies и сессиями установленных приложений.
Чтобы решить эту проблему, отредактируйте файл web.xml и добавьте следующие записи в блок session-config.<cookie-config>
<http-only>true</http-only> <secure>true</secure> </cookie-config>
Заключение
В этой статье были описаны некоторые необходимые настройки, которые вы можете внести в Apache Tomcat для повышения безопасности.
Обратите внимание, что рассмотренные методы являются лишь некоторыми из множества мер, которые вы можете предпринять для защиты Tomcat.
см. также:
- Скрипт Bash для автоматического обновления SSL-сертификата Letsencrypt на Tomcat
- Как реализовать HTTP2 в Tomcat👨⚕️
- 🔐 Типы сертификатов SSL / TLS – Руководство для начинающих