novembre 22, 2017

Alfresco tips & tricks – #13 Errore CSRF Filter su login Share con Apache mod_proxy e SSLEngine on

Nella versione 4.1 di Alfresco è stato introdotto su Share un filtro CSRF per prevenire attacchi di tipo Cross-Site Request Forgery. Se viene utilizzato un web server Apache come front end HTTPS verso Share, potrebbe essere necessario effettuare delle modifiche sulle configurazioni di default del filtro CSRF su Share. In questo articolo ho riportato due possibili soluzioni. Di seguito una tipica configurazione per accedere a Share in VirtualHost su Apache con mod_proxy e direttiva SSLEngine.

Apache SSL VirtualHost

Possibile errore Login Share

SOLUZIONE 1 – Impostare il FQDN su referer e origin

Step1. Copiare la definizione “CSRFPolicy” config di default dal file:
TOMCAT_HOME/webapps/share/WEB-INF/classes/alfresco/share-security-config.xml
nel file:
TOMCAT_HOME/shared/classes/alfresco/web-extension/share-config-custom.xml

Step 2. Aggiungere l’attributo replace=”true” sul config “CSRFPolicy

Step 3. Impostare le proprietà referer e origin con il FQDN (https) usato per il VirtualHost

SOLUZIONE 2 – Disabilitare il CSRF Token Filter

Decommentare il config “CSRFPolicy” in:
TOMCAT_HOME/shared/classes/alfresco/web-extension/share-config-custom.xml

2 Comments

  1. Roberto

    Ciao Giuseppe,
    innanzittutto complimenti per gli ottimi consigli/configurazioni su questo sito.
    Volevo chiederti un consiglio.
    Sto implementando una nuova istanza di alfresco 5.0.d su cloud (amazon).
    considerazioni:
    1) vorrei mettere un reverse proxy direttamente esposto su internet e la macchina alfresco non esposta per sicurezza, per questo basta apache reverse_proxy (yum install mod_ssl) , corretto?
    2) avrei bisogno di abilitare https su alfresco share, di default é abilitata, basta modificare alfresco global properties, però il mio dubbio riguarda il certificato da acquistare (per rimuovere quel fastidioso messaggio del browser che dice che il sito non é attendibile – comprando un ssl certificate ed installandolo su alfresco il problema si risolverebbe, ma non so come fare a fare ciò (installazione intendo); come installare su alfresco un certificato pubblico acquistato regolermente???
    3) Posso fare il modo che all’avvio di alfresco sia caricata solamente l’istanza Share e non quella di Alfresco? (noi useremmo solo share)
    Grazie mille

    Reply
  2. Giuseppe Urso

    Ciao Roberto,

    cerco di darti qualche info utile.

    1) Per una configurazione minimale (solo HTTP) di Apache in modalità proxy/reverse non hai bisogno di mod_ssl che ti serve solo nel caso volessi abilitare connessioni sicure via TLS. Nel tuo caso potresti bloccare con iptables l’accesso pubblico HTTP sulla porta 8080 di Alfresco e aprire il traffico solo sulla 80. In questo modo ti basta configurare un proxy/reverse HTTP o AJP su Apache e gestire il tuo portale con un unico front-end web che inoltra le richieste direttamente verso Share. Ho scritto qualcosa in passato dai un’occhiata qui:

    http://www.giuseppeurso.eu/configurare-piu-siti-sullo-stesso-web-server-apache-direttiva-virtualhost/

    2) Per il discorso fatto in precedenza, se Apache e Alfresco sono in esecuzione sulla stessa macchina, non hai bisogno di TLS su Alfresco (che comunque è abilitato di default sulla porta 8443). Puoi sempre usare Apache come unico front-end in modalità proxy/reverse HTTP o AJP. Se invece hai bisogno anche di un front-end HTTPS, sarà sufficiente configurare solo Apache con il tuo certificato SSL trusted acquistato da un provider di servizi come GeoTrust o RapidSSLOnline. Dai un’occhiata a questa guida con RapidSSLOnline:

    http://www.giuseppeurso.eu/come-rinnovare-un-certificato-ssl-wildcard-con-rapidsslonline/

    3) Assolutamente NO, poichè il vero cuore pulsante di Alfresco è proprio Alfresco.
    Share è solo una webapp che serve a presentare il Content Repository e tutte le sue funzionalità di gestione documentale. Dai un’occhiata al wiki per un approfondimento sulla sua architettura:

    https://wiki.alfresco.com/wiki/Alfresco_Repository_Architecture

    Giuseppe

    Reply

Leave a Reply

Your email address will not be published.