Ошибка 403 при доступе к веб-сайту извне

Вопрос или проблема

Мне было поручено предоставить определенному IP доступ к одному из наших сайтов WordPress для разработчиков, который изначально был настроен только для внутреннего доступа.

Я уже настроил переадресацию портов, однако при доступе к сайту извне я получаю ошибку 403, доступ запрещен. Папка www настроена с правами 755, так что теоретически я бы думал, что у нас будет доступ, однако на практике это не работает. Я очень новичок в Linux, так что прошу вас проявить терпение, но если вам нужно, чтобы я опубликовал какие-либо конфигурационные файлы для диагностики моей проблемы, пожалуйста, дайте знать.

etc\apache2\sites-enabled\000-default.conf

    <VirtualHost *:80>
    # Директива ServerName устанавливает схему запроса, имя хоста и порт, которые
    # сервер использует для самопознания. Это используется при создании
    # редиректов URL. В контексте виртуальных хостов ServerName
    # указывает, какое имя хоста должно появиться в заголовке Host: запроса, чтобы
    # соответствовать этому виртуальному хосту. Для виртуального хоста по умолчанию (этого файла) это
    # значение не является решающим, так как оно используется как последний
    # хост в любом случае. Тем не менее, вы должны установить его для любого последующего виртуального хоста явно.
    #ServerName www.example.com

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    # Доступные уровни журналирования: trace8, ..., trace1, debug, info, notice, warn,
    # error, crit, alert, emerg.
    # Также возможно настроить уровень журналирования для конкретных
    # модулей, например.
    #LogLevel info ssl:warn

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    # Для большинства конфигурационных файлов из conf-available/, которые
    # включены или отключены на глобальном уровне, можно
    # включить строку только для одного конкретного виртуального хоста. Например, следующая
    # строка включает конфигурацию CGI только для этого хоста
    # после того, как она была глобально отключена с помощью "a2disconf".
    #Include conf-available/serve-cgi-bin.conf

</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

ИЗМЕНЕНИЕ #1
Как было запрошено, вот фрагмент журналов доступа:
https://pastebin.com/8zDEkR32 (не смог опубликовать напрямую здесь из-за менее 10 сообщений на сайте, поэтому не могу опубликовать более 5 или около того URL в одном сообщении)
196.52.84.52 — один из внешних IP, с которого я пытаюсь получить доступ к веб-серверу.

ИЗМЕНЕНИЕ #2
Только что заметил это в error.log
https://pastebin.com/z3M9EgqA

Если сайт работает в внутренней сети, вам нужно проверить несколько вещей.

  1. Проверьте ваши iptables, возможно, внешний IP-адрес заблокирован.

  2. Возможно, конфигурация apache2 по умолчанию разрешает доступ только из внутренней сети.

Для проблемы #1 вы можете позволить внешнему IP-адресу получить доступ к серверу на порту 80.

Для проблемы #2 вы можете попробовать добавить некоторый дополнительный код после DocumentRoot /var/www/html.

DocumentRoot /var/www/html
<Directory />
    Allow from all
</Directory>

Я нашел проблему. Поскольку я только недавно присоединился к этой организации, все мои настройки были по умолчанию в моем FTP-клиенте. После того как я заметил, что “Показать скрытые файлы” было отключено, я не смог увидеть файл .htaccess. После открытия файла стало очевидно, что мне нужно добавить запись здесь, чтобы разрешить доступ к сайту.

Ответ или решение

Ошибка 403, с которой вы столкнулись при доступе к веб-сайту извне, указывает на то, что доступ к ресурсу запрещён. Эта проблема может возникнуть по ряду причин. Рассмотрим их подробно, а также пути решения.

1. Проверка конфигурации Apache

Ваша конфигурация Apache имеет важные элементы, которые мы должны проверить. Например, ваш файл конфигурации 000-default.conf выглядит следующим образом:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Первое, что стоит проверить, это наличие ограничений доступа. Убедитесь, что нет директив Require all denied или подобного рода, которые могли бы ограничивать доступ извне. Добавьте следующие строки после DocumentRoot, чтобы разрешить доступ всем:

<Directory /var/www/html>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

2. Проверка файла .htaccess

Как вы и определили, важно проверить наличие и содержимое файла .htaccess. Если этот файл запрещает доступ, он может вызвать ошибку 403. Откройте файл .htaccess в директории /var/www/html и убедитесь, что там нет запрещающих записей. Если вы обнаружите записи вроде Deny from all, необходимо изменить их на:

Allow from all

или удалить эти записи вовсе.

3. Проверка прав доступа к файлам и папкам

Несмотря на то что права доступа к папке установлены на 755, важно проверить, что владелец файла и группа также настроены корректно. Если сервер Apache работает от пользователя www-data, как обычно в Ubuntu, убедитесь, что www-data является владельцем каталогов и файлов:

sudo chown -R www-data:www-data /var/www/html

4. Проверка настроек брандмауэра

Проверьте, не блокирует ли ваш брандмауэр доступ извне. Используйте следующую команду для проверки правил iptables:

sudo iptables -L -n

Если вы видите, что access на порт 80 блокируется, вы можете разрешить доступ:

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

5. Логи Apache

Логи могут дать больше информации о причине ошибки. Разделите их для дальнейшего анализа. Ошибки, указанные в error.log, могут дать вам дополнительную информацию о причинах отказа в доступе.

6. Перезапуск сервера

После всех изменений не забудьте перезапустить Apache, чтобы применить новые настройки:

sudo systemctl restart apache2

Заключение

Сложив все вышеперечисленные действия вместе, вы должны устранить проблему с ошибкой 403 и позволить доступ указанному внешнему IP к вашему WordPress сайту. Если проблема всё ещё сохраняется, не стесняйтесь делиться логами и конфигурациями для дальнейшей диагностики. Помните, что безопасная настройка и контроль доступа являются ключевыми элементами для поддержания интегритета вашего веб-сайта.

Оцените материал
Добавить комментарий

Капча загружается...