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
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
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




