Безопасность 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>