Назад | Перейти на главную страницу

Ведение журнала Apache в разные файлы по коду ответа

У меня есть веб-сервер apache, который настроен так, чтобы разрешать доступ через сертификат клиента только нескольким людям. Я не могу заблокировать по IP, потому что держатели сертификатов потенциально могут подключаться откуда угодно.

В настоящее время Apache возвращает 403 любому, кто не представляет действительный сертификат или пытается получить доступ к недопустимому URL-адресу, но, поскольку на компьютере нет ограничений ACL, он часто сканируется на наличие уязвимостей. Эти сканирования вызывают довольно много шума в журналах.

Есть ли способ войти в другой файл на основе кода ответа? Можно ли отправить все журналы для запросов, которые приводят к 403 в другой файл?

Вы можете заставить Apache передать настраиваемый журнал сценарию. Так, например, измените запись CustomLog в vhost на:

CustomLog "|/path/to/script"

У вас может быть сценарий, который делает что-то вроде:

#!/usr/bin/perl
while ($log = <STDIN>) {
    if ($log =~ /403/) {
        open(LOG, '>>/path/to/403log');
        print LOG $log;
        close(LOG);
    } else {
        open(LOG, '>>/path/to/mainlog');
        print $log LOG;
        close(LOG);
    }
}

Приведенный выше сценарий не тестировался, но он должен дать вам представление о том, что вы можете сделать.