Skip to main content
  1. Concetti/

Reverse Proxy

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

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

Collegato a
#

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

Related