Ведение логов входа в 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, чтобы получить максимальную защиту вашего сайта.