Skip to main content
  1. Concetti/

Reverse Proxy

·3 mins
Alessio Barnini
Author
Alessio Barnini
Table of Contents

Cosa fa
#

Server intermediario che accetta richieste esterne e le instrada ai server interni corretti. A differenza di un proxy forward (che proteggeil client), il reverse proxy protegge e nasconde l'infrastruttura server.


Proxy forward vs Reverse proxy
#

Il nome "reverse" indica che la direzione di protezione e' invertita:

graph LR
    subgraph Proxy Forward
        C1[Client] -->|nasconde il client| P1[Proxy] --> S1[Internet]
    end
    subgraph Reverse Proxy
        I[Internet] -->|nasconde i server| RP[Reverse Proxy] --> S2[Server interno]
    end

Lettura diagramma: Due subgraph che mostrano la differenza di direzione. Proxy Forward (sopra): il Client usa il proxy per nascondersi verso Internet — protegge il client. Reverse Proxy (sotto): Internet arriva al Reverse Proxy che nasconde i server interni — protegge i server. La freccia e' invertita: forward proxy guarda verso l'esterno, reverse proxy guarda verso l'interno.


Come funziona — flusso completo
#

graph LR
    User[Utente Internet] -->|HTTPS 443| RP[Reverse Proxy]
    RP -->|routing interno| C1[Chatwoot :3000]
    RP -->|routing interno| C2[n8n :5678]
    RP -->|routing interno| C3[Portainer :9000]
    subgraph Rete interna — non esposta
        C1
        C2
        C3
    end

Lettura diagramma: Il reverse proxy come unico punto di ingresso. L'utente arriva sempre su HTTPS porta 443 al Reverse Proxy. Il Proxy instrada internamente verso i servizi giusti: Chatwoot sulla 3000, n8n sulla 5678, Portainer sulla 9000. I tre servizi sono dentro il subgraph "Rete interna non esposta": nessuna porta e' raggiungibile dall'esterno direttamente.

L'utente vede solo il reverse proxy. Non sa quanti server ci sono dietro, su quali porte girano, o che tecnologia usano.


Perche' e' importante per Blue Team
#

Il reverse proxy e' il primo punto di contatto con internet — tutto il traffico passa da li'. Questo lo rende il posto ideale per:

Nascondere l'infrastruttura — l'attaccante vede solo un IP e una porta. Non conosce la struttura interna, le porte dei servizi, o le versioni software.

Terminazione SSL — il certificato HTTPS e' gestito in un solo punto. I servizi interni comunicano in HTTP semplice sulla rete privata. Monitorare la scadenza dei certificati diventa triviale.

Centralizzazione dei log — tutti gli accessi passano dal proxy. Un solo posto dove cercare tentativi di attacco, brute force, scan.

Rate limiting e blocco IP — un attacco brute force viene rilevato e bloccato al proxy prima di toccare l'applicazione. Strumenti come CrowdSec o Fail2Ban leggono i log del proxy e bannano gli IP a livello di firewall.


Scenario Reale
#

Un attaccante tenta brute force su chat.example.it.

sequenceDiagram
    participant A as Attaccante
    participant RP as Reverse Proxy
    participant F as Fail2Ban
    participant App as Chatwoot

    A->>RP: POST /auth/sign_in (tentativo 1)
    RP->>App: forwarda la richiesta
    App->>RP: 401 Unauthorized
    A->>RP: POST /auth/sign_in (tentativo 2..N)
    RP->>F: log: troppi 401 dallo stesso IP
    F->>RP: ban IP attaccante
    A->>RP: POST /auth/sign_in (tentativo N+1)
    RP->>A: 403 Forbidden — Chatwoot non viene mai contattato

Lettura diagramma: Brute force mitigato a livello proxy. L'attaccante fa i tentativi POST sul login. Il Reverse Proxy li forwarda a Chatwoot e riceve 401. Dopo N tentativi, il proxy scrive nel log e Fail2Ban legge il pattern. Fail2Ban banna l'IP a livello proxy. Al tentativo N+1, il Reverse Proxy risponde 403 direttamente senza mai contattare Chatwoot. Il ban e' efficace al bordo della rete.


Collegato a
#

  • log — categoria
  • traefik — implementazione pratica del concetto
  • docker — contesto in cui e' deployato

Related