Cómo asegurar un servidor Matrix en casa sin autenticación de proxy
El usuario desea que Matrix funcione con sus aplicaciones nativas, pero su entorno actual usa NetBird y CrowdSec con autenticación de proxy. La solución implica túneles TLS y controles de acceso a nivel de IP.
Cómo asegurar un servidor Matrix en casa sin autenticación de proxy
El usuario /u/Fragrant_Climate7357 necesita que su servidor Matrix sea accesible a través de las aplicaciones nativas, por lo que no puede usar autenticación de proxy. Su configuración actual incluye un VPS NetBird que expone los servicios externos y CrowdSec para la defensa contra ataques.
Estrategia recomendada
- TLS terminación en el VPS: Configura Nginx o Traefik como terminador TLS en el VPS NetBird. El certificado TLS se genera con Let’s Encrypt y se actualiza automáticamente.
- IP whitelisting: En la capa de red, permite solo el rango de IPs de la casa (por ejemplo, 203.0.113.0/24) a acceder al puerto 8448 (o 8443 si se usa el estándar Matrix). CrowdSec ya está manejando los ataques, pero la whitelist reduce el vector de entrada.
- Reverse proxy con
proxy_set_header: Asegúrate de que el proxy pase los encabezadosX-Forwarded-ForyX-Forwarded-Protopara que el servidor Matrix pueda detectar que la petición viene de HTTPS. - Autenticación interna: Desactiva la autenticación de proxy en la configuración de Matrix. En su lugar, habilita la autenticación de usuario basada en tokens que las aplicaciones nativas ya usan.
- Segmentación de la red: Si el VPS NetBird está conectado a una red pública, crea una VLAN aislada para el tráfico de Matrix. Esto evita que un atacante que logre comprometer otro servicio alcance el servidor Matrix.
Implementación rápida
# En el VPS NetBird
sudo apt install nginx
sudo ln -s /etc/nginx/sites-available/matrix /etc/nginx/sites-enabled/
# matrix.conf
server {
listen 443 ssl;
server_name matrix.tu-dominio.com;
ssl_certificate /etc/letsencrypt/live/matrix.tu-dominio.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/matrix.tu-dominio.com/privkey.pem;
location / {
proxy_pass https://192.168.1.10:8448;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto https;
}
}
Con esta configuración, el tráfico llega cifrado al VPS, se filtra por IP, y se pasa directamente al servidor Matrix sin autenticación de proxy.
Por qué importa
Los clientes de Matrix, como Element, requieren una conexión TLS válida para funcionar sin problemas. El uso de un proxy con autenticación intermedia rompe la cadena de confianza y obliga a los clientes a desactivar la seguridad. Al mover la autenticación a nivel de aplicación y mantener la capa TLS en el borde, garantizas una experiencia de usuario segura y sin interrupciones.


