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.


