PROXY INVERS PER XARXA DE SERVIDORS

Seguretat i Centralització: Configuració de Proxy Invers amb Nginx i SSL

Per garantir la seguretat de la xarxa de servidors del nostre institut (10.0.130.0/24) i oferir un punt d’accés únic i xifrat des de l’exterior, s’ha implementat un Proxy Invers amb Nginx.

Aquesta peça de la infraestructura s’encarrega de recollir les peticions dels clients externs (com els administradors des de les aules d’SMX), xifrar la comunicació mitjançant HTTPS (Port 443) i redirigir-les de manera transparent cap als serveis interns: el servidor de Zabbix Web i el nostre propi Dashboard del NOC.

Pas 1: Rol del Proxy Invers a l’arquitectura del NOC

El proxy invers és l’únic element exposat de la xarxa de servidors. El seu funcionament es basa en els següents principis de disseny:

  • Xifrat SSL/TLS: Tota la comunicació que viatja per les aules de l’institut es xifra per evitar la intercepció de credencials de Zabbix o de l’API.

  • Redirecció de ports: L’usuari només necessita recordar la IP del Proxy, accedint als serveis mitjançant rutes intuïtives (subdirectoris):

    • https://IP-PROXY/zabbix -> Redirigeix internament al Zabbix Web.

    • https://IP-PROXY/noc -> Redirigeix internament al nostre Dashboard d’alertes en FastAPI (Port 8000).

Pas 2: Creació del Certificat de Seguretat SSL Auto-signat

Com que el projecte es desenvolupa dins de la xarxa interna de l’institut i utilitzem la resolució de noms interna del laboratori, hem generat el nostre propi certificat SSL segur de tipus X.509 vàlid per a un any associat al nostre domini local smx.lan mitjançant l’eina OpenSSL:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
  -keyout /etc/ssl/private/proxy.key \
  -out /etc/ssl/certs/proxy.crt

Paràmetres introduïts durant la generació:

  • Country Name (2 letter code): ES

  • State or Province Name: Catalunya

  • Locality Name: Barcelona

  • Organization Name: Institut NOC

  • Common Name (CN): smx.lan (El domini local del nostre laboratori)

Pas 3: Configuració de Nginx per a la redirecció de serveis

Es crea un fitxer de configuració de bloc de servidor dins de la ruta de Nginx per definir les regles d’encaminament i enllaçar els nostres certificats de seguretat associats al nou domini:

sudo nano /etc/nginx/sites-available/proxy-servidors

El contingut d’aquest fitxer està dissenyat per assegurar la persistència del protocol HTTPS i mapejar correctament els fons de pantalla, fulls d’estil (CSS) i scripts (JS) de Zabbix i l’API sota el nom de domini smx.lan:

# Redirecció automàtica de HTTP a HTTPS per a tot el tràfic entrant
server {
    listen 80;
    server_name smx.lan www.smx.lan;
    return 301 https://$host$request_uri;
}

# Servidor principal sota HTTPS
server {
    listen 443 ssl;
    server_name smx.lan www.smx.lan;

    # Certificats SSL associats generats al Pas 2
    ssl_certificate     /etc/ssl/certs/proxy.crt;
    ssl_certificate_key /etc/ssl/private/proxy.key;

    # Configuració de seguretat SSL bàsica
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    # 1. Redirecció cap a la interfície de Zabbix
    location /zabbix {
        proxy_pass [http://10.0.130.101/zabbix](http://10.0.130.101/zabbix); # IP interna de Zabbix Server
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded-for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    # 2. Redirecció cap al nostre Dashboard NOC (FastAPI)
    location /noc {
        proxy_pass [http://10.0.130.102:8000/](http://10.0.130.102:8000/); # IP i port del Dashboard FastAPI
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded-for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Pas 4: Activació de la seguretat i arrencada del servei

Un cop escrit el fitxer, l’enllacem a la carpeta de llocs habilitats per a la seva execució i validem que la sintaxi no contingui cap error tipogràfic:

# Activar el lloc a Nginx
sudo ln -s /etc/nginx/sites-available/proxy-servidors /etc/nginx/sites-enabled/

# Validar que la configuració és 100% correcta
sudo nginx -t

Si la terminal respon amb el missatge de confirmació “syntax is ok / test is successful”, reiniciem el servei de Nginx per fer efectius els canvis:

sudo systemctl restart nginx

Pas 5: Validació de Seguretat des dels navegadors clients

Per provar que tota la configuració és correcta, primer assegurem que el nostre equip client sap qui és smx.lan. En cas de no tenir un servidor DNS actiu a l’aula, afegim l’associació de dominis al nostre fitxer de hosts del client:

# Exeemple d'edició en Linux/macOS a /etc/hosts (o C:\Windows\System32\drivers\etc\hosts a Windows)
172.25.199.103  smx.lan

Un cop mapejat, accedim al nostre navegador:

  1. Test de Redirecció Forçosa: Entrem a http://smx.lan/zabbix. El navegador ens ha de redirigir a l’instant cap a la URL segura https://smx.lan/zabbix.

  2. Acceptació del Certificat: Com que el nostre certificat és auto-signat de laboratori i s’emet per al domini smx.lan, el navegador web mostrarà una advertència de seguretat indicant que l’entitat certificadora és desconeguda. Això és normal; fem clic a “Avançat” i “Acceptar el risc i continuar”.

  3. Comprovació de rutes: Verifiquem que Zabbix es visualitza correctament a /zabbix i que el nostre Dashboard asíncron carrega completament l’estructura HTML, la topologia radial de xarxa i els comptadors d’alertes en temps real a la ruta /noc.