Вопрос или проблема
Я установил Tomcat на Centos7 в Google Cloud. Tomcat работает, но я не могу получить доступ к странице менеджера Tomcat.
Мой /opt/tomcat/conf/tomcat-users.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--
Лицензировано Фондом Apache Software (ASF) на основе одного или нескольких
соглашений о лицензировании участников. Смотрите файл NOTICE, предоставленный вместе с
этой работой для дополнительной информации о праве собственности на авторские права.
ASF лицензирует этот файл для вас в соответствии с лицензией Apache, версия 2.0
(далее - "Лицензия"); вы не можете использовать этот файл, кроме как в соответствии с
Лицензией. Вы можете получить копию Лицензии по адресу
http://www.apache.org/licenses/LICENSE-2.0
Если это не требуется действующим законодательством или не согласовано в письменной форме,
программное обеспечение, распространяемое в соответствии с Лицензией, предоставляется на
условиях "КАК ЕСТЬ", БЕЗ ГАРАНТИЙ И УСЛОВИЙ ЛЮБОГО РОДА, явно или подразумеваемо.
Смотрите Лицензию для получения информации о том, какие права и
ограничения применяются в соответствии с Лицензией.
-->
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<!--
По умолчанию ни один пользователь не включён в роль "manager-gui", необходимую
для работы веб-приложения "/manager/html". Если вы хотите использовать это приложение,
вам необходимо определить такого пользователя - имя пользователя и пароль произвольные.
Внутренние роли менеджера Tomcat:
- manager-gui - позволяет доступ к HTML GUI и страницам состояния
- manager-script - позволяет доступ к HTTP API и страницам состояния
- manager-jmx - позволяет доступ к JMX прокси и страницам состояния
- manager-status - позволяет доступ только к страницам состояния
Пользователи ниже заключены в комментарий и поэтому игнорируются. Если вы
хотите настроить одного или нескольких из этих пользователей для использования с веб-приложением менеджера,
не забудьте удалить <!.. ..>, который их окружает. Вам
также нужно будет установить пароли на что-то подходящее.
-->
<!--
<user username="admin" password="<must-be-changed>" roles="manager-gui"/>
<user username="robot" password="<must-be-changed>" roles="manager-script"/>
-->
<!--
Входные данные примеров пользователей и ролей ниже предназначены для использования с
веб-приложением примеров. Они заключены в комментарий и, таким образом, игнорируются,
при чтении этого файла. Если вы хотите настроить этих пользователей для использования с
веб-приложением примеров, не забудьте удалить <!.. ..>, который их окружает.
Вам также нужно будет установить пароли на что-то подходящее.
-->
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="admin" password="notmyrealpassword" roles="admin-gui,manager-gui"/>
</tomcat-users>
/opt/tomcat/webapps/manager/META-INF/context.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--
Лицензировано Фондом Apache Software (ASF) на основе одного или нескольких
соглашений о лицензировании участников. Смотрите файл NOTICE, предоставленный вместе с
этой работой для дополнительной информации о праве собственности на авторские права.
ASF лицензирует этот файл для вас в соответствии с лицензией Apache, версия 2.0
(далее - "Лицензия"); вы не можете использовать этот файл, кроме как в соответствии с
Лицензией. Вы можете получить копию Лицензии по адресу
http://www.apache.org/licenses/LICENSE-2.0
Если это не требуется действующим законодательством или не согласовано в письменной форме,
программное обеспечение, распространяемое в соответствии с Лицензией, предоставляется на
условиях "КАК ЕСТЬ", БЕЗ ГАРАНТИЙ И УСЛОВИЙ ЛЮБОГО РОДА, явно или подразумеваемо.
Смотрите Лицензию для получения информации о том, какие права и
ограничения применяются в соответствии с Лицензией.
-->
<Context antiResourceLocking="false" privileged="true" >
<CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
sameSiteCookies="strict" />
<!--
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
<!-- <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/> -->
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192.168.0.*" />
</Context>
/opt/tomcat/webapps/host-manager/META-INF/context.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--
Лицензировано Фондом Apache Software (ASF) на основе одного или нескольких
соглашений о лицензировании участников. Смотрите файл NOTICE, предоставленный вместе с
этой работой для дополнительной информации о праве собственности на авторские права.
ASF лицензирует этот файл для вас в соответствии с лицензией Apache, версия 2.0
(далее - "Лицензия"); вы не можете использовать этот файл, кроме как в соответствии с
Лицензией. Вы можете получить копию Лицензии по адресу
http://www.apache.org/licenses/LICENSE-2.0
Если это не требуется действующим законодательством или не согласовано в письменной форме,
программное обеспечение, распространяемое в соответствии с Лицензией, предоставляется на
условиях "КАК ЕСТЬ", БЕЗ ГАРАНТИЙ И УСЛОВИЙ ЛЮБОГО РОДА, явно или подразумеваемо.
Смотрите Лицензию для получения информации о том, какие права и
ограничения применяются в соответствии с Лицензией.
-->
<Context antiResourceLocking="false" privileged="true" >
<CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
sameSiteCookies="strict" />
<!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
<!-- <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/> -->
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192.168.0.*" />
</Context>
Попробуйте закомментировать предпоследнюю строку. Просто переместите “–>” на 2 строки ниже.
<!– Менеджер sessionAttributeValueClassNameFilter=”java.lang.(?:Boolean|Integer|Long|Number|String)|org.apache.catalina.filters.CsrfPreventionFilter$LruCache(?:$1)?|java.util.(?:Linked)?HashMap”/> <Valve className=”org.apache.catalina.valves.RemoteAddrValve” allow=”127.\d+.\d+.\d+|::1|0:0:0:0:0:0:0:1|192.168.0.*” />
–>
Если вы настроили какие-либо области в tomcat/conf/server.xml, попробуйте без них. Удачи!
При развертывании .war часто появляется ‘403 Доступ запрещен’, следующее может быть для вашего справки!
Я использую Ubuntu 22.04, Tomcat9, директории, вероятно, отличаются от ваших, но могут быть с тем же именем конфигурационного файла!
1. Установите разрешённые IP для доступа к менеджеру Tomcat9:
sudo vim /etc/tomcat9/Catalina/localhost/manager.xml
добавьте<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="ваши разрешенные IP здесь" denyStatus="404"/>
это вступит в силу, как только вы
сохраняете и выходите без перезапуска Tomcat9.2. sudo vim /usr/share/tomcat9-admin/manager/META-INF/context.xml
добавьте ваши разрешенные IP в
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1"
например.
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|10\.10\.10\.\d+"
Надеюсь, это будет полезно!
Ответ или решение
Ошибка "403 Access Denied" при попытке доступа к странице управления Tomcat может быть вызвана несколькими факторами, связанными с конфигурацией безопасности и правами доступа. В этом ответе вы найдете подробное руководство по устранению этой проблемы на сервере Tomcat, установленных на CentOS 7 в Google Cloud.
Шаг 1: Проверьте файл конфигурации пользователей
Вы предоставили фрагмент файла tomcat-users.xml
, который содержит информацию о пользователях и ролях:
<tomcat-users xmlns="http://tomcat.apache.org/xml" ... >
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="admin" password="notmyrealpassword" roles="admin-gui,manager-gui"/>
</tomcat-users>
Важно убедиться, что у вас правильно настроены пользователи с соответствующими ролями для доступа к странице управления. Проверьте следующее:
-
Убедитесь, что комментарии удалены: В вашем примере часть строк закомментирована. Убедитесь, что строки, определяющие пользователей и их роли, не закомментированы.
-
Проверьте учетные данные: Убедитесь, что вы используете правильные учетные данные (имя пользователя и пароль) при входе на страницу управления.
Шаг 2: Настройка context.xml
для менеджера
Файлы context.xml
, находящиеся в manager/META-INF/
и host-manager/META-INF/
, содержат настройки доступа. В вашем случае вы добавили в context.xml
следующие строки:
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192.168.0.*" />
Эта строка определяет, какие IP-адреса могут получить доступ к управлению. Чтобы решить проблему с доступом, убедитесь, что:
-
Ваш IP-адрес добавлен в разрешенные значения: Если вы подключаетесь к серверу с другого IP-адреса, добавьте его в разрешенные адреса. Например:
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|YOUR.IP.ADDRESS.HERE" />
-
Отключите ограничения, если это необходимо: Если вы только тестируете доступ, можно временно заменить строку
allow
наallow=".*"
, чтобы разрешить доступ с любого IP (не рекомендуется в продуктивной среде).
Шаг 3: Перезапустите Tomcat
После внесения изменений в конфигурационные файлы необходимо перезапустить Tomcat для применения изменений:
sudo systemctl restart tomcat
Шаг 4: Проверьте настройки брандмауэра
Если вы все еще получаете ошибку "403 Access Denied", убедитесь, что брандмауэр вашего сервера (например, firewalld
на CentOS) настроен правильно и не блокирует доступ. Используйте следующие команды для проверки и изменения настроек брандмауэра:
sudo firewall-cmd --list-all
Если необходимо, откройте порты, используя:
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
Дополнительные советы
-
Использование VPC и приватных IP-адресов: Если ваш сервер находится в окружении, подобном Google Cloud, и вы используете VPC, убедитесь, что у вас правильные правила сетевого доступа на уровне VPC.
-
Логи Tomcat: Проверьте логи Tomcat (обычно в
/opt/tomcat/logs/
) для получения более детальной информации о проблеме. Логcatalina.out
может содержать полезную информацию.
Заключение
Следуя этим шагам, вы сможете устранить проблему с ошибкой "403 Access Denied" при попытке доступа к странице управления Tomcat. Обязательно всегда применяйте необходимые меры безопасности, чтобы защитить ваш сервер от несанкционированного доступа.