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

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

Зачем нужен сбор логов входа в WordPress: безопасность и аналитика

Логи входа позволяют:

  • Отслеживать успешные и неуспешные попытки авторизации;
  • Выявлять подозрительные IP-адреса, с которых происходят атаки;
  • Анализировать поведение пользователей и администраторов;
  • Получать уведомления о подозрительных действиях;
  • Автоматизировать отчётность для команды безопасности.

Без автоматизации администратору приходится просматривать журналы вручную, что сложно и непрактично на больших сайтах. Автоматизация избавляет от рутинной работы и повышает эффективность защиты.

Использование плагинов для сбора и анализа логов входа

Существует несколько популярных плагинов для ведения логов авторизаций:

  • WP Security Audit Log — один из самых мощных инструментов, который фиксирует множество типов событий, включая входы, выходы, изменения ролей и т.д. Позволяет настроить уведомления по email и экспорт отчётов.
  • Simple Login Log — лёгкий плагин для записи логов входа и выхода, с возможностью просмотра в админке.
  • Activity Log — универсальный плагин для журналирования действий пользователей, включая авторизации.

Для автоматизации отчетов и интеграции с внешними системами можно использовать WP Security Audit Log, так как он поддерживает расширенные настройки и API.

Пример настройки уведомлений в WP Security Audit Log

После установки и активации плагина перейдите в Настройки > WP Security Audit Log > Email Notifications и включите отправку уведомлений о входах с новых IP. Это позволит автоматически получать письма при подозрительной активности.

Создание собственного решения для сбора логов входа в WordPress через код

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

Создание таблицы для хранения логов

function wplogin_create_login_log_table() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'wplogin_login_logs';
    $charset_collate = $wpdb->get_charset_collate();

    $sql = "CREATE TABLE IF NOT EXISTS $table_name (
        id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
        user_login VARCHAR(60) NOT NULL,
        user_id BIGINT(20) UNSIGNED NOT NULL,
        login_time DATETIME NOT NULL,
        ip_address VARCHAR(100) NOT NULL,
        user_agent TEXT NOT NULL,
        PRIMARY KEY  (id)
    ) $charset_collate;";

    require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
    dbDelta($sql);
}
register_activation_hook(__FILE__, 'wplogin_create_login_log_table');

Этот код создаёт таблицу для хранения логов с информацией о логине, ID пользователя, времени, IP и агенте пользователя.

Запись лога при успешном входе

function wplogin_log_user_login($user_login, $user) {
    global $wpdb;
    $table_name = $wpdb->prefix . 'wplogin_login_logs';

    $wpdb->insert(
        $table_name,
        [
            'user_login' => $user_login,
            'user_id' => $user->ID,
            'login_time' => current_time('mysql'),
            'ip_address' => wplogin_get_user_ip(),
            'user_agent' => isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''
        ]
    );
}
add_action('wp_login', 'wplogin_log_user_login', 10, 2);

function wplogin_get_user_ip() {
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
        return $_SERVER['HTTP_CLIENT_IP'];
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        return explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])[0];
    } else {
        return $_SERVER['REMOTE_ADDR'];
    }
}

Этот хук фиксирует успешные входы, сохраняя данные в базу.

Автоматизация отправки отчетов о логах входа

Для регулярного анализа полезно автоматизировать отправку отчётов. Ниже пример кода, который раз в сутки собирает логи за последние 24 часа и отправляет их на email администратора.

function wplogin_send_daily_login_report() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'wplogin_login_logs';

    $yesterday = date('Y-m-d H:i:s', strtotime('-1 day'));

    $results = $wpdb->get_results($wpdb->prepare(
        "SELECT user_login, login_time, ip_address FROM $table_name WHERE login_time >= %s ORDER BY login_time DESC",
        $yesterday
    ));

    if (empty($results)) return;

    $message = "Отчёт о входах за последние 24 часа:\n\n";
    foreach ($results as $row) {
        $message .= sprintf("Пользователь: %s | Время: %s | IP: %s\n", $row->user_login, $row->login_time, $row->ip_address);
    }

    wp_mail(get_option('admin_email'), 'Ежедневный отчёт входов', $message);
}

if (!wp_next_scheduled('wplogin_daily_login_report')) {
    wp_schedule_event(time(), 'daily', 'wplogin_daily_login_report');
}
add_action('wplogin_daily_login_report', 'wplogin_send_daily_login_report');

Этот код добавляет планировщик задач WP-Cron, который ежедневно отправляет письмо с логами.

Интеграция с плагином Clearfy Pro для улучшенной безопасности

Если вы используете Clearfy Pro, там есть расширенные возможности по логированию и анализу безопасности, включая отчёты по входам и защите от ботов. Clearfy Pro позволяет в пару кликов настроить сбор данных и интегрировать их с внешними системами мониторинга.

Как просматривать логи входа и использовать данные

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

function wplogin_add_admin_page() {
    add_menu_page('Логи входа', 'Логи входа', 'manage_options', 'wplogin-login-logs', 'wplogin_render_admin_page');
}
add_action('admin_menu', 'wplogin_add_admin_page');

function wplogin_render_admin_page() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'wplogin_login_logs';
    $logs = $wpdb->get_results("SELECT * FROM $table_name ORDER BY login_time DESC LIMIT 50");

    echo '<h1>Последние 50 логов входа</h1>';
    echo '<table style="width:100%; border-collapse: collapse;" border="1">';
    echo '<tr><th>Пользователь</th><th>Время</th><th>IP</th><th>User Agent</th></tr>';
    foreach ($logs as $log) {
        echo '<tr>';
        echo '<td>' . esc_html($log->user_login) . '</td>';
        echo '<td>' . esc_html($log->login_time) . '</td>';
        echo '<td>' . esc_html($log->ip_address) . '</td>';
        echo '<td>' . esc_html($log->user_agent) . '</td>';
        echo '</tr>';
    }
    echo '</table>';
}

Это позволит быстро анализировать данные прямо из админки без прямого доступа к базе.

Заключение

Автоматизация сбора и анализа логов входа в WordPress — это не только удобство, но и важный элемент безопасности. Использование готовых плагинов, таких как WP Security Audit Log, или написание собственного кода позволит получать исчерпывающую информацию о попытках авторизации и своевременно реагировать на угрозы. Настройка автоматических отчётов дополнительно упростит мониторинг. Не забывайте интегрировать эти решения с другими инструментами безопасности, например, Clearfy Pro, чтобы получить максимальную защиту вашего сайта.

Как отключить вход для неактивных пользователей в WordPress
06.03.2026
Как защитить WordPress от Brute Force атак с помощью Limit Login Attempts
20.01.2026
Как создать свой плагин для изменения формы входа в WordPress
03.12.2025
Как установить ограничения на число попыток входа в WordPress без сторонних плагинов
28.01.2026
Как автоматизировать удаление блокировок входов Limit Login Attempts в WordPress
06.06.2026

wp-login.php - это страница входа в системе управления вордпресс. Если Вы хотите изменить внешний вид страницы входа - читайте здесь. Если вам нужно защитить админку - подробный мануал. Вы можете установить плагин Clearfy, в котором есть функция защиты админки и страницы входа.