FAQ

Безопасность Apache Tomcat

Уберем информации о сервере

Самым простым способом повышения безопасности сервера 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.

Включите 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-сертификатом.

Не запускайте Tomcat от имени пользователя Root

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

Это позволит вам защитить систему в случае взлома службы Tomcat.

Создайте пользователя для запуска службы Tomcat.

sudo useradd -m -U -d /home/tomcat -s $(which false) tomcat

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

chown -R tomcat:tomcat /home/tomcat

Используйте Security Manager

Хорошей практикой является запускать сервер Apache Tomcat с помощью 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.

Удалите нежелательные приложения

Apache Tomcat поставляется с эксплуатируемыми вариантами приложений по умолчанию.

Лучшая мера по митигации рисков – удалить их из каталога webapps.

Вы можете удалить такие приложения, как:

  • ROOT – страница Tomcat по умолчанию
  • Docs – документация Tomcat
  • Examples – Сервлеты для тестирования

Изменение процедуры выключения 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=“8005” shutdown=“SHUTDOWN”>

Если вы хотите сохранить команду shutdown, измените порт и команду по умолчанию.

Например:

<Server port="5800" shutdown="KILLME">

Добавьте флаги Secure и HttpOnly

Злоумышленники также могут манипулировать cookies и сессиями установленных приложений.

Чтобы решить эту проблему, отредактируйте файл web.xml и добавьте следующие записи в блок session-config.<cookie-config>

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