Как удалить порты в WordPress для блокировки внешних запросов

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

Почему важно контролировать порты в WordPress? Безопасность и нагрузка

Открытые порты — это потенциальные двери в ваш сервер. Многие атаки на сайты WordPress проводятся именно через уязвимости в сетевых соединениях, особенно если сайт работает на общем хостинге с минимальной защитой. Контроль портов помогает:

  • Уменьшить поверхность атаки;
  • Ограничить исходящие соединения только доверенными сервисами;
  • Снизить вероятность DDoS-атак, связанных с лишними открытыми портами;
  • Оптимизировать работу сайта, убрав ненужные внешние запросы.

Часто плагины или темы создают свои запросы к API на определённых портах, которые по умолчанию открыты. Иногда эти порты не нужны и их можно безопасно отключить.

Как проверить, какие порты использует WordPress: диагностика и анализ внешних запросов

Чтобы понять, какие порты задействованы, используйте несколько инструментов и методов:

  • WP-CLI: команда wp cron event list покажет задачи, которые могут делать запросы;
  • Плагины для анализа запросов: например, Query Monitor или Debug Bar, которые фиксируют HTTP-запросы и их параметры;
  • Логи сервера: в них вы увидите исходящие соединения и порты, если включена соответствующая логика;
  • Использование PHP-функций: можно добавить временный код для логирования запросов, сделанных через wp_remote_get/post и другие сетевые функции.

Пример кода для логирования исходящих запросов WordPress (добавьте в functions.php вашей темы):

add_filter('http_api_debug', 'wpsolution_log_http_requests', 10, 5);
function wpsolution_log_http_requests($response, $type, $class, $args, $url) {
    error_log("HTTP request to: " . $url . " | Response code: " . wp_remote_retrieve_response_code($response));
    return $response;
}

Этот фильтр запишет в error_log все HTTP-запросы, включая адреса и коды ответов, что поможет понять, какие порты используются.

Как удалить или заблокировать порты в WordPress: практические методы

WordPress не управляет портами напрямую — это задача сервера и его сетевой настройки. Однако с помощью настроек PHP, плагинов и конфигурации сервера можно ограничить доступ к портам:

1. Отключение внешних HTTP-запросов через фильтр

Если нужно полностью запретить внешние запросы, можно использовать фильтр pre_http_request. Например:

add_filter('pre_http_request', 'wpsolution_block_external_requests', 10, 3);
function wpsolution_block_external_requests($preempt, $args, $url) {
    $allowed_hosts = ['api.wordpress.org', 'your-trusted-domain.com'];
    $host = parse_url($url, PHP_URL_HOST);
    if (!in_array($host, $allowed_hosts)) {
        return new WP_Error('blocked', 'Внешние запросы к этому хосту запрещены');
    }
    return false; // разрешить запрос
}

Этот код разрешит запросы только к указанным доменам и заблокирует остальные, включая все порты, кроме стандартного 80/443.

2. Использование плагина Clearfy Pro для блокировки ненужных запросов

Плагин Clearfy Pro позволяет отключить запросы к внешним сервисам и API, которые часто используют нестандартные порты. В настройках можно отключить:

  • Heartbeat API;
  • Автоматические обновления;
  • Запросы пингов;
  • Реклама и трекеры.

Это снизит количество исходящих соединений и уменьшит риск уязвимостей.

3. Настройка firewall на сервере (iptables, ufw) для блокировки портов

На уровне сервера можно заблокировать порты, которые не должны использоваться WordPress. Например, в Linux с ufw:

sudo ufw deny 8080
sudo ufw deny 3306
sudo ufw deny 21

Важно разрешить порты 80 и 443 для веб-сервера, а все остальные закрыть, если они не используются. Это надежный способ защитить сайт от нежелательных входящих и исходящих соединений.

Примеры: блокировка запросов к нестандартным портам через PHP

Если вам нужно заблокировать в WordPress запросы к определённым портам, можно расширить фильтр pre_http_request следующим образом:

add_filter('pre_http_request', 'wpsolution_block_ports', 10, 3);
function wpsolution_block_ports($preempt, $args, $url) {
    $parsed_url = parse_url($url);
    if (isset($parsed_url['port'])) {
        $blocked_ports = [8080, 3306, 21];
        if (in_array($parsed_url['port'], $blocked_ports)) {
            return new WP_Error('blocked_port', 'Запросы к порту ' . $parsed_url['port'] . ' заблокированы');
        }
    }
    return false; // разрешить запрос
}

Этот код позволит блокировать именно те порты, которые вы считаете нежелательными для исходящих запросов, тем самым повышая безопасность.

Рекомендации по безопасности и мониторингу портов в WordPress

Для комплексной защиты сайта используйте следующие подходы:

  • Регулярно проверяйте установленные плагины и темы на предмет внешних запросов;
  • Используйте специализированные плагины для безопасности, например, Wordfence или iThemes Security;
  • Настраивайте firewall на уровне сервера и хостинга;
  • Внедряйте логирование и мониторинг HTTP-запросов;
  • Используйте сервисы типа WPRemark для анализа качества и безопасности контента и запросов.

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

Автоматическое удаление отзывов в WooCommerce после их модерации
22.05.2026
Как использовать WPRemark для анализа качества контента в WordPress
16.02.2026
Как сделать адаптивные изображения в WordPress
20.02.2026
Как создать автоматический импорт постов из RSS в WordPress
10.03.2026
Создание собственных типов записей (Custom Post Types) в WordPress с примерами кода
31.01.2026