¿Cómo puedo ayudar a mitigar log4j a través de haproxy en Enterprise Linux?
Basado en este post, haproxy ha proporcionado reglas de acl de mitigación que se pueden utilizar para ayudar a combatir las solicitudes de ataque log4j que se están reenviando a las aplicaciones log4j afectadas.
Al leer algunos de los comentarios de los usuarios, me di cuenta de que muchos sistemas Enterprise Linux Haproxy podrían estar ejecutando una versión antigua de haproxy 1.5 que no tiene la directiva option http-buffer-request
. Esta directiva es fundamental para cualquier CVE que estés tratando de mitigar, especialmente si esta es tu única opción hasta que puedas actualizar las aplicaciones afectadas.
¿Cuál es la forma más sencilla de actualizar y a qué versión?
Respondiendo a mi propia pregunta…
Se requiere haproxy 1.6, sin embargo, RH proporciona haproxy 1.8 desde el repositorio RHSCL.
Asegúrate de que estos repositorios estén activos en el sistema e instala haproxy 1.8.
subscription-manager repos --enable=rhel-7-server-optional-rpms --enable=rhel-7-server-rpms --enable=rhel-server-rhscl-7-rpms
yum install -y rh-haproxy18.x86_64
Copia la configuración actual al archivo de configuración 1.8 y realiza una prueba rápida de configuración.
cat /etc/haproxy/haproxy.cfg > /etc/opt/rh/rh-haproxy18/haproxy/haproxy.cfg
/opt/rh/rh-haproxy18/root/usr/sbin/haproxy -c -V -f /etc/opt/rh/rh-haproxy18/haproxy/haproxy.cfg
^ Corrige cualquier advertencia o error de alerta. En mi experiencia, esto se debe principalmente al orden de las directivas o a las cadenas de puertos en tus servicios backend. Esto es relativamente fácil de buscar en Internet y corregir.
nano /etc/opt/rh/rh-haproxy18/haproxy/haproxy.cfg
Agrega las reglas de ACl, utiliza nombres únicos si estás utilizando más de un listener/frontend en la configuración para evitar superposiciones.
systemctl disable --now haproxy && systemctl enable --now rh-haproxy18-haproxy
yum remove -y haproxy && yum install -y rh-haproxy18-haproxy-syspaths.x86_64
^ El paquete rh-haproxy18-haproxy-syspaths.x86_64
reemplaza el nombre del servicio haproxy, por lo que no es necesario actualizar los scripts de systemctl ni incluso keepalived si lo estás utilizando para monitorear el servicio haproxy
.
Utilizo esto dentro de keepalived, que funciona antes y después.
killall -0 haproxy
davy.ai
Actualice Haproxy a la versión 1.6 o superior
Para mitigar la vulnerabilidad log4j, se requiere la versión 1.6 o superior de Haproxy. Sin embargo, muchos sistemas Haproxy de Enterprise Linux podrían estar utilizando una versión más antigua de Haproxy, como la 1.5, que no tiene la directiva
option http-buffer-request
.La forma más fácil de actualizar Haproxy es utilizando el repositorio RH Software Collections (RHSCL). Los siguientes pasos se pueden seguir para actualizar a la versión 1.8 de Haproxy, que está disponible en el repositorio RHSCL:
systemctl disable –now haproxy && systemctl enable –now rh-haproxy18-haproxy
yum remove -y haproxy && yum install -y rh-haproxy18-haproxy-syspaths.x86_64
“`
El paquete
rh-haproxy18-haproxy-syspaths.x86_64
reemplaza el nombre del servicio haproxy, por lo que no es necesario actualizar los scripts de systemctl ni incluso keepalived si lo está utilizando para monitorear el serviciohaproxy
.También es recomendable incluir
killall -0 haproxy
en su script keepalived, lo cual funcionará antes y después de la actualización.