“error 403 acceso denegado” y haproxy

403man

“error 403 acceso denegado”, cuando usamos haproxy en nuestra infraestructura, y como resolverlo. También explicaré un poco de teoría sobre direcciones IP.



¿Por qué nos da “error 403 acceso denegado”?

Una de las ventajas de usar haproxy, es proteger el acceso a los servidores que tenemos detrás de él.
Tenemos la posibilidad de crear listas de acceso (ACL), que nos permite realizar un filtrado por dirección IP.
Podemos crear listas con IP denegadas (DENY) o permitidas (ALLOW). Cuando una IP no se encuentra permitida en la lista de acceso, el haproxy nos devuelve “error 403 acceso denegado”.


Diferencia entre IP privada e IP pública

Es importante distinguirlas, para poder habilitar la IP correcta en nuestras listas de acceso.

IP privada

Cuando nos conectamos a una red privada, nuestro dispositivo (PC, notebook, tablet, smartphone), recibe un número identificador, es decir una dirección IP privada, que nos permite acceder a los recursos de la red local (por ejemplo, una impresora de red, o un disco externo en red).
En una red pequeña u hogareña, por lo general, estas ip comienzan con 192.168.0.x.
Ejemplo:

DISPOSITIVOIP
PC192.168.0.24
IMPRESORA192.168.0.100
DISCO EXTERNO192.168.0.86

En una oficina, las direcciones pueden comenzar con otros números, pero la IP de una pc, se parece a la IP de la pc a continuación.
Ejemplo:

DISPOSITIVOIP
PC 110.20.1.20
PC 210.20.1.36
PC 310.20.1.64
💡 Nota: Los administradores de sistemas, pueden elegir segmentar la red por piso de oficinas, por tipo de conexión(PC con cable, Notebook con wifi), por sector (Contabilidad, RRHH, Legales,etc), según sea necesario para asegurar que cada dispositivo tenga una ip disponible y según como se quiera proteger la red.
Cada red creada tiene su propio grupo de direcciones IP.

IP pública

La IP pública es aquella que nos da nuestro proveedor de internet, y nos sirve para acceder a las páginas web, chat, videollamadas, y otros servicios que se encuentran ahí.

Todos los aparatos de nuestra red local comparten esa IP pública, y es el router quien se encarga de dirigir los datos entre internet y nuestros dispositivos.

Al ser internet una red más grande, nuestra ip pública se ve como un número más aleatorio, por ejemplo 186.20.153.180.

Podemos ver este número IP visitando una página como: https://www.whatismyip.com/es/


Configuración de listas de acceso en haproxy

En el archivo haproxy.cfg, vamos a enfocarnos en este momento, en la parte de los frontend.
Vamos a tipear un par de líneas:

acl miclientevip src 186.22.163.128

acl otrosclientes src -f /etc/haproxy/listados/otrosclientes.txt

http-request deny if {hdr(host) -i "miweb.midominio.com.ar" } !miclientevip !otrosclientes !{ src 192.168.0.0/24}

use_backend servidoresweb if {hdr(host) -i "miweb.midominio.com.ar" }

Paso a explicar línea por línea.
1 Lista de acceso, un nombre identificador, una ip pública de origen.
2 Otra lista de acceso, otro identificador, y la ruta a un archivo de texto. Este archivo debe contener una lista de ips que yo necesito habilitar.

3 Regla de denegación de acceso.
La regla dice, si alguien envía una solicitud a miweb.midominio.com.ar y NO es miclientevip, y NO pertenece al listado otrosclientes, y NO viene de mi red local, entonces el haproxy contesta error 403.
El símbolo ! sirve para negar.

4 La solicitud se dirige al backend servidoresweb si pasa por los filtros anteriores y la url es miweb.midominio.com.ar

NOTA: El archivo /etc/haproxy/listados/otrosclientes.txt puede contener direcciones ip o rangos en formato CIDR:

142.250.31.100
151.101.65.164
23.215.0.38/29

A tener en cuenta al trabajar con haproxy

– Hay que prestar atención que si tenemos nuestras direcciones web publicadas en el puerto 80 (HTTP) y el 443 (HTTPS), debemos duplicar nuestra configuración de ACLS y reglas en ambos frontend.
– Es mejor tener registrado en un archivo de texto, las ips permitidas vinculadas con el nombre del cliente. Esto nos permitirá saber quién puede estar causando una sobrecarga de solicitudes.
– En cada servidor de backend (IIS, APACHE, NGINX, o DOCKER), debe haber una regla de firewall que permita el tráfico desde la ip local del haproxy.


Buscando el “error 403 acceso denegado”, en el archivo log

El haproxy genera un archivo de log en la ruta /var/log/haproxy.log

Cuando nos encontremos con un error 403, debemos buscar la ip de origen de la solicitud con este comando. No muestra errores pasados, sino los que ocurran posteriormente a la ejecución del comando:

tail -f /var/log/haproxy.log | grep 403

Conclusión al “error 403 acceso denegado”

Ahora que podemos distinguir entre direcciones IP, cuando tengamos que permitir un acceso a nuestro haproxy desde la red local, habilitaremos una IP privada. En cambio, si debemos habilitar el acceso desde un lugar en internet, habilitaremos la IP pública.


🏷️ # # # # # # #

Dejá un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio