Svantaggi nel proxy tramite porta invece di socket di dominio Unix?

Sto testando il deployment di Discourse su AlmaLinux 9 derivato da CentOS con SELinux abilitato e nginx esterno configurato.

Poiché il container basato su Ubuntu non conosce SELinux, ogni volta che avvio il container, sostituisce continuamente il socket di dominio Unix con un nuovo file non etichettato a livello di sicurezza, e nginx non è autorizzato a comunicare con esso finché non eseguo restorecon sul file per dargli un contesto di sicurezza a cui nginx è autorizzato ad accedere. Ovviamente, questa non è una soluzione di produzione.

Non voglio davvero eseguire semanage permissive -a httpd_t perché vorrei effettivamente sfruttare SELinux sull’unico servizio effettivamente esposto al mondo esterno. :smiling_face:

Funziona se faccio il proxy verso una porta di rete invece che verso un socket di dominio Unix:

  • setsebool -P httpd_can_network_connect 1
  • non usare templates/web.socketed.template.yml
  • expose: - "8008:80"
  • Nel nginx esterno, proxy_pass http://127.0.0.1:8008

Ci sono svantaggi particolari in questo? Dovrei cambiare qualche parametro come il limite di connessione in questa configurazione?

Scriverò questo in modo più dettagliato come documentazione dopo test più approfonditi e, se ci saranno ulteriori preoccupazioni, potrò includerle in ciò che scriverò.

2 Mi Piace

Finché blocchi le persone dall’accedere direttamente alla porta 8008 con il tuo metodo preferito, nessun problema.

3 Mi Piace

Grazie!

public (active)
  target: default
...
  services: dhcpv6-client http https ssh
  ports: 
  protocols: 
  forward: yes
  masquerade: yes
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

C’è una differenza di latenza, un socket è circa 3 volte più veloce di una porta di loopback locale.

Detto questo, stiamo parlando di una differenza di 4-5us qui, nel migliore dei casi.

3 Mi Piace

Dopo aver approfondito la questione, voglio assolutamente aggiungere proxy_set_header \"Connection\" \"\"; per disabilitare l’header Connection: close predefinito.