Безопасность 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" />
После:
Сохраните файл и перезапустите службу 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.
Наконец, измените право собственности на созданного пользователя tomcat.
Используйте Security Manager¶
Хорошей практикой является запускать сервер Apache Tomcat с помощью security manager.
Это предотвращает запуск недоверенных апплетов в браузере.
Ниже приведен пример вывода:
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 и удалите следующий блок.
Если вы хотите сохранить команду shutdown, измените порт и команду по умолчанию.
Например:
Добавьте флаги Secure и HttpOnly¶
Злоумышленники также могут манипулировать cookies и сессиями установленных приложений.
Чтобы решить эту проблему, отредактируйте файл web.xml и добавьте следующие записи в блок session-config.