Hoy estaba revisando un log de Apache en busca de una serie de eventos anormales que detecté con Grafana, y me topé con una tonelada de entradas producidas por collectd:

[root@centos ~]# less /var/log/httpd/access_log
localhost - - [11/Nov/2018:03:48:47 -0300] "GET /apache_status?auto HTTP/1.1" 200 299 "-" "collectd/5.8.0"
localhost - - [11/Nov/2018:03:48:56 -0300] "GET /apache_status?auto HTTP/1.1" 200 299 "-" "collectd/5.8.0"
localhost - - [11/Nov/2018:03:49:06 -0300] "GET /apache_status?auto HTTP/1.1" 200 299 "-" "collectd/5.8.0"
localhost - - [11/Nov/2018:03:49:16 -0300] "GET /apache_status?auto HTTP/1.1" 200 299 "-" "collectd/5.8.0"
localhost - - [11/Nov/2018:03:49:26 -0300] "GET /apache_status?auto HTTP/1.1" 200 299 "-" "collectd/5.8.0"
localhost - - [11/Nov/2018:03:49:36 -0300] "GET /apache_status?auto HTTP/1.1" 200 299 "-" "collectd/5.8.0"
localhost - - [11/Nov/2018:03:49:46 -0300] "GET /apache_status?auto HTTP/1.1" 200 299 "-" "collectd/5.8.0"
localhost - - [11/Nov/2018:03:49:56 -0300] "GET /apache_status?auto HTTP/1.1" 200 299 "-" "collectd/5.8.0"
localhost - - [11/Nov/2018:03:50:06 -0300] "GET /apache_status?auto HTTP/1.1" 200 299 "-" "collectd/5.8.0"
localhost - - [11/Nov/2018:03:50:16 -0300] "GET /apache_status?auto HTTP/1.1" 200 299 "-" "collectd/5.8.0"
localhost - - [11/Nov/2018:03:50:26 -0300] "GET /apache_status?auto HTTP/1.1" 200 299 "-" "collectd/5.8.0"
localhost - - [11/Nov/2018:03:50:36 -0300] "GET /apache_status?auto HTTP/1.1" 200 299 "-" "collectd/5.8.0"
localhost - - [11/Nov/2018:03:50:46 -0300] "GET /apache_status?auto HTTP/1.1" 200 299 "-" "collectd/5.8.0"
localhost - - [11/Nov/2018:03:50:56 -0300] "GET /apache_status?auto HTTP/1.1" 200 299 "-" "collectd/5.8.0"
localhost - - [11/Nov/2018:03:51:06 -0300] "GET /apache_status?auto HTTP/1.1" 200 299 "-" "collectd/5.8.0"
localhost - - [11/Nov/2018:03:51:16 -0300] "GET /apache_status?auto HTTP/1.1" 200 299 "-" "collectd/5.8.0"
localhost - - [11/Nov/2018:03:51:26 -0300] "GET /apache_status?auto HTTP/1.1" 200 299 "-" "collectd/5.8.0"
localhost - - [11/Nov/2018:03:51:36 -0300] "GET /apache_status?auto HTTP/1.1" 200 299 "-" "collectd/5.8.0"
localhost - - [11/Nov/2018:03:51:46 -0300] "GET /apache_status?auto HTTP/1.1" 200 299 "-" "collectd/5.8.0"
localhost - - [11/Nov/2018:03:51:56 -0300] "GET /apache_status?auto HTTP/1.1" 200 299 "-" "collectd/5.8.0"
localhost - - [11/Nov/2018:03:52:06 -0300] "GET /apache_status?auto HTTP/1.1" 200 299 "-" "collectd/5.8.0"
localhost - - [11/Nov/2018:03:52:16 -0300] "GET /apache_status?auto HTTP/1.1" 200 299 "-" "collectd/5.8.0"
localhost - - [11/Nov/2018:03:52:26 -0300] "GET /apache_status?auto HTTP/1.1" 200 299 "-" "collectd/5.8.0"
localhost - - [11/Nov/2018:03:52:36 -0300] "GET /apache_status?auto HTTP/1.1" 200 299 "-" "collectd/5.8.0"
localhost - - [11/Nov/2018:03:52:46 -0300] "GET /apache_status?auto HTTP/1.1" 200 299 "-" "collectd/5.8.0"
localhost - - [11/Nov/2018:03:52:56 -0300] "GET /apache_status?auto HTTP/1.1" 200 299 "-" "collectd/5.8.0"
localhost - - [11/Nov/2018:03:53:06 -0300] "GET /apache_status?auto HTTP/1.1" 200 299 "-" "collectd/5.8.0"
localhost - - [11/Nov/2018:03:53:16 -0300] "GET /apache_status?auto HTTP/1.1" 200 299 "-" "collectd/5.8.0"

Veamos cómo configurar Apache para que no registre en el log los accesos desde localhost.



A fin de evitar registrar accesos desde localhost, se puede recurrir al módulo de Apache setenvif. Este módulo permite setear variables de entorno basándose en las características de cada solicitud (request), que luego podrán ser utilizadas por otras directivas. En este caso de uso voy a setear una variable de entorno si la solicitud ocurre desde localhost, que luego será utilizada por la directiva CustomLog que se encarga de definir el log de accesos de Apache.

Para el ejemplo se trata de un servidor CentOS, pero la configuración es similar para cualquier otra distribución, sólo se debe agregar una simple línea en el archivo de configuración de Apache:

[root@centos ~]# nano /etc/httpd/conf/httpd.conf

Primero verificar que el módulo setenvif esté siendo cargado por la configuración:

LoadModule setenvif_module modules/mod_setenvif.so

Si no está presente esta línea, o está comentada, será necesario agregarla.

Luego, localizar la configuración del log de accesos. Por defecto, CentOS utiliza la siguiente configuración de log de accesos:

#
# For a single logfile with access, agent, and referer information
# (Combined Logfile Format), use the following directive:
#
CustomLog logs/access_log combined

Cambiar por la siguiente configuración:

SetEnvIf Remote_Addr "127.0.0.1" nologuear
CustomLog logs/access_log combined env=!nologuear

De esta forma se ignoran (no se registran en el log) todas las solicitudes que tienen seteada la variable de entorno "nologuear".

Para que funcione correctamente se debe utilizar una dirección IP (en este caso "127.0.0.1") en lugar del nombre de host (no utilizar "localhost" para comparar la variable Remote_Addr).

Finalmente reiniciar o recargar Apache:

[root@centos ~]# service httpd reload

Adiós basura en el log de Apache.

Referencias


Tal vez pueda interesarte


Compartí este artículo