Доступ запрещён и код 403 - кто отдал отказ
Посетитель видит «403 Forbidden» или «Доступ запрещён» вместо страницы сайта, файла или раздела управления. Отказ приходит с двух разных уровней, и путать их нельзя: запрет ставит либо веб-сервер, либо сама платформа. Разбираем причины по убыванию частоты, начиная с того, кто именно этот отказ выдал.
С чего начать
Смотрим, кто именно отдал отказ:
curl -sI https://example.com/zakrytyy-razdel/ | head -4 # код ответа и строка Servercurl -s https://example.com/zakrytyy-razdel/ | head -20 # тело ответа: чей это шаблон# подвал с именем и версией сервера означает отказ веб-сервера# отказ в шаблоне сайта означает, что запрос дошёл до платформыПроверка делит причины ровно пополам и сразу снимает главный вопрос разбора. Веб-сервер печатает собственную страницу, где в подвале стоят его имя и версия. Платформа отвечает уже из PHP и почти всегда рисует отказ шаблоном сайта.
Сверяем ответ с журналами веб-сервера:
grep -iE 'forbidden|denied' /var/log/nginx/error.log | tail -20grep -i 'Forbidden' /var/log/httpd/error_log | tail -20# «access forbidden by rule» - сработало правило запрета в конфиге# «directory index of ... is forbidden» - нет индексного файла в каталогеЗапись в журнале веб-сервера закрывает вопрос об авторе отказа окончательно. Пустой журнал при коде 403 означает, что запрос дошёл до обработчика PHP. Тогда причину ищем в настройках платформы, а не в конфигах сервера.
Ищем подброшенные файлы запретов:
find /home/bitrix/www -name '.htaccess' -newermt '-30 days' -lsgrep -rn 'Deny from all' /home/bitrix/www/*/.htaccess 2>/dev/null# файл .htaccess в каждом разделе сайта - это след взлома, а не поставкаФайлы запретов внутри разделов проекта поставка не создаёт: их кладёт взломщик. Признак характерный, и разбор в этом случае переходит от отказа к чистке сайта.
Снимаем самоблокировку по адресу:
ls /home/bitrix/www/bitrix/modules/ | grep ipcheck_disable # имя берут из настроекtouch /home/bitrix/www/bitrix/modules/ipcheck_disable_0123456789abcdef0123456789abcdef# пустой файл-флажок снимает ограничение доступа в админку по адресу# после входа удаляем свой адрес из стоп-листа и сам файл-флажокФайл-флажок готовят заранее, ещё до включения ограничения по адресу, и его имя записывают. Без него самоблокировка снимается только правкой базы либо доступом к файлам сервера.
Сверяем права на файлы раздела:
stat -c '%U:%G %a %n' /home/bitrix/www/upload/ /home/bitrix/www/index.phpgrep -m1 '^user' /etc/nginx/nginx.conf # рабочий пользователь веб-сервера# штатные права: файлы 0644, каталоги 0755, владелец - пользователь сайтаПрава проверяют вместе с именем пользователя, от которого запущен веб-сервер. Каталог с правами 0755 у чужого владельца всё равно даст отказ на чтение.
Причины
-
Запрет в правилах веб-сервера или закрытый листинг каталога примерно 27% случаев
ПризнакСтраницу рисует сам веб-сервер, его имя и версия видны в подвале ответа.
ПроверкаЧитаем журнал веб-сервера: там пишется и правило запрета, и закрытый листинг каталога.
Что делатьУбираем лишнее правило запрета, а каталогу без листинга возвращаем его индексный файл.
-
Адрес посетителя попал в стоп-лист проактивной защиты примерно 22% случаев
ПризнакСайт не пускает с одного адреса, а с телефона открывается сразу.
ПроверкаСмотрим стоп-лист и журнал вторжений: там записан адрес и повод для блокировки.
Что делатьУдаляем адрес из стоп-листа и смотрим, какое правило фильтра дало это срабатывание.
-
Включено ограничение доступа в админку по адресу примерно 18% случаев
ПризнакПубличная часть работает, а раздел управления отдаёт отказ с любой страницы.
ПроверкаПроверяем список разрешённых адресов в настройках защиты административной части и свой текущий адрес.
Что делатьСнимаем ограничение заранее подготовленным файлом-флажком в каталоге модулей, затем правим список адресов.
-
Домен не указан в списке хостов проактивной защиты примерно 14% случаев
ПризнакПо основному имени сайт работает, а по адресу сервера отказывает.
ПроверкаОткрываем журнал вторжений и ищем событие об ограничении по имени хоста запроса.
Что делатьДобавляем все рабочие домены сайтов, включая вариант с www, на страницу хостов.
-
Права на файл или каталог закрыты от процесса веб-сервера примерно 11% случаев
ПризнакОтказ приходит на отдельные файлы: картинки, стили и скрипты раздела управления.
ПроверкаСверяем права и владельца: файлы 0644, каталоги 0755, владелец - пользователь сайта.
Что делатьВозвращаем штатные права и владельца, а в конфиге сервера сверяем имя рабочего пользователя.
-
Платформа закрыла раздел файловыми правами примерно 8% случаев
ПризнакОтказ нарисован шаблоном сайта, и приходит он только части групп пользователей.
ПроверкаИщем файл прав в этом разделе и смотрим права групп на его путь.
Что делатьПравим права раздела в управлении структурой сайта либо прямо в файле прав.
Частые вопросы
Почему Битрикс не пускает на некоторые страницы админки?
Чаще всего в разделах лежат подброшенные файлы запретов, закрывающие выполнение PHP. Это типичный след взлома: проект сверяют с эталоном поставки, чистят и закрывают уязвимость, через которую файлы попали на сервер.
Сменили адрес сервера, и сайт стал отдавать Forbidden Access denied. Что смотреть?
Список хостов проактивной защиты и ограничение доступа в админку по адресу. После переезда старые настройки перестают совпадать с новыми именами и адресами, и запрос блокируется ещё до отрисовки страницы.
Как вернуть себе доступ, если защита забанила администратора?
Создают пустой файл-флажок с именем ipcheck_disable и набором из 32 символов в каталоге модулей. Имя берут из настроек защиты. После входа удаляют свой адрес из стоп-листа и сразу удаляют сам файл-флажок.
Почему сайт открывается по имени, а по адресу сервера и с www отдаёт Forbidden?
На странице «Хосты/домены» указан только один домен, а остальные имена считаются недопустимыми. В журнал вторжений при этом пишется событие об ограничении по хосту. Добавляют все рабочие домены сайтов.
Можно ли заменить статичную страницу 403 на свою?
Страницу отказа рисует веб-сервер, поэтому её меняют в конфиге сервера, а не в шаблоне сайта. В веб-окружении Битрикса это отдельный статичный файл, общий для всех сайтов пула.
Смежное
- Ошибки сервера и базы - оглавление подтемы
- Ошибки 500 и 502: где искать причину - когда сервер отвечает другим кодом
- Белая страница вместо сайта: разбор причин - когда вместо отказа приходит пустое тело
- Отладка на боевом сайте: журналы, режим ошибок, поиск виновника - какие журналы читать по порядку
- Права на файлы и папки: файловая система и права структуры - права процесса и права платформы
- Заголовки безопасности и доступ в админку - как настроено ограничение по адресу
- Проактивный фильтр: уровни защиты, исключения, ложные срабатывания - откуда берутся записи в стоп-листе
- Сайт взломан: признаки, разбор и порядок действий - когда файлы запретов подброшены
- Забыт пароль и потерян доступ в админку - если отказ приходит на самом входе
- Инфраструктура и эксплуатация - устройство серверной части целиком