Lista di controllo sicurezza

Questa sezione descrive vari passaggi da seguire per garantire che l’installazione AEM sia sicura quando distribuita. La lista di controllo deve essere applicata dall’alto verso il basso.

NOTA

Nella fase di sviluppo sono disponibili alcune considerazioni sulla sicurezza aggiuntive.

Principali misure di sicurezza

Eseguire AEM in modalità pronta per la produzione

Per ulteriori informazioni, consulta Esecuzione AEM in modalità pronta per la produzione.

Abilita HTTPS per la sicurezza del livello di trasporto

Per disporre di un’istanza sicura, è obbligatorio abilitare il livello di trasporto HTTPS sia sulle istanze di authoring che di pubblicazione.

NOTA

Per ulteriori informazioni, consulta la sezione Abilitazione di HTTP su SSL .

Installare gli hotfix di sicurezza

Assicurati di aver installato gli Hotfix di sicurezza più recenti forniti da Adobe.

Modificare le password predefinite per gli account di amministrazione della console AEM e OSGi

L'Adobe consiglia vivamente di modificare dopo l'installazione la password per gli account AEM admin con privilegi (su tutte le istanze).

Tali account includono:

  • L'account AEM admin

    Dopo aver cambiato la password per l'account amministratore AEM, dovrai usare la nuova password quando accedi a CRX.

  • Password admin per la console Web OSGi

    Questa modifica verrà applicata anche all’account amministratore utilizzato per accedere alla console Web, quindi dovrai usare la stessa password per accedervi.

Questi due account utilizzano credenziali separate e dispongono di una password distinta e sicura per ciascuno di essi è fondamentale per una distribuzione sicura.

Modifica della password dell'amministratore AEM

La password per l'account amministratore AEM può essere modificata tramite la console Operazioni Granite - Utenti .

Qui puoi modificare l'account admin e modificare la password.

NOTA

La modifica dell’account amministratore comporta anche la modifica dell’account della console Web OSGi. Dopo aver cambiato l'account amministratore, devi quindi cambiare l'account OSGi in qualcosa di diverso.

Importanza della modifica della password della console Web OSGi

Oltre all'account AEM admin, la mancata modifica della password predefinita per la console Web OSGi può portare a:

  • Esposizione del server con una password predefinita durante l'avvio e lo spegnimento (che può richiedere minuti per i server di grandi dimensioni);
  • Esposizione del server quando l'archivio è inattivo/riavvio del bundle - e OSGI è in esecuzione.

Per ulteriori informazioni sulla modifica della password della console Web, consulta Modifica della password dell’amministratore della console Web OSGi di seguito.

Modifica della password dell’amministratore della console Web OSGi

È inoltre necessario modificare la password utilizzata per accedere alla console Web. A questo scopo, configura le seguenti proprietà della Console di gestione Apache Felix OSGi:

Nome utente e password, le credenziali per l'accesso alla console di gestione Web Apache Felix stessa.
La password deve essere modificata dopo l’installazione iniziale per garantire la sicurezza dell’istanza.

Per effettuare questo collegamento:

  1. Passa alla console Web all’indirizzo <server>:<port>/system/console/configMgr.

  2. Passa a ​ Apache Felix OSGi Management Console e modifica il nome utente e la password.

    chlimage_1-166

  3. Fai clic su Salva.

Implementare un gestore di errori personalizzato

Adobe consiglia di definire pagine personalizzate del gestore di errori, in particolare per i codici di risposta HTTP 404 e 500, al fine di impedire la divulgazione delle informazioni.

NOTA

Per ulteriori informazioni, consulta l'articolo della knowledge base Come creare script personalizzati o gestori di errori .

Elenco di controllo completo della sicurezza del dispatcher

AEM Dispatcher è un elemento critico dell’infrastruttura. L'Adobe consiglia vivamente di completare la lista di controllo della sicurezza del dispatcher.

ATTENZIONE

Utilizzando Dispatcher è necessario disabilitare il selettore ".form".

Passaggi di verifica

Configurare gli utenti di replica e trasporto

Un'installazione standard di AEM specifica admin come utente per le credenziali di trasporto all'interno dei agenti di replica predefiniti. Inoltre, l'utente amministratore viene utilizzato per avviare la replica sul sistema di authoring.

Per motivi di sicurezza, è opportuno modificare entrambe le opzioni per riflettere il caso d’uso specifico in questione, tenendo presenti i due aspetti seguenti:

  • L' utente di trasporto non deve essere l'utente amministratore. Piuttosto, imposta un utente sul sistema di pubblicazione che dispone solo dei diritti di accesso alle parti rilevanti del sistema di pubblicazione e utilizza le credenziali dell'utente per il trasporto.

    Puoi iniziare dall'utente destinatario della replica in bundle e configurare i diritti di accesso di questo utente in modo che corrispondano alla tua situazione

  • Anche l' utente di replica o ID utente agente non deve essere l'utente amministratore, ma un utente che può visualizzare solo il contenuto che deve essere replicato. L’utente di replica viene utilizzato per raccogliere il contenuto da replicare sul sistema dell’autore prima che venga inviato all’editore.

Controlla i controlli di stato della sicurezza del dashboard delle operazioni

AEM 6 introduce il nuovo dashboard delle operazioni, volto ad aiutare gli operatori del sistema a risolvere i problemi e monitorare lo stato di un'istanza.

Il dashboard viene fornito anche con una raccolta di controlli di integrità della sicurezza. È consigliabile controllare lo stato di tutti i controlli di integrità della sicurezza prima di iniziare a lavorare con l'istanza di produzione. Per ulteriori informazioni, consulta la documentazione del dashboard delle operazioni.

Controlla se il contenuto di esempio è presente

Tutti i contenuti e gli utenti di esempio (ad esempio il progetto Geometrixx e i relativi componenti) devono essere disinstallati ed eliminati completamente in un sistema produttivo prima di renderlo accessibile al pubblico.

NOTA

Le applicazioni We.Retail di esempio vengono rimosse se questa istanza è in esecuzione in Modalità pronta per la produzione. Se, per qualsiasi motivo, non è così, è possibile disinstallare il contenuto di esempio andando a Gestione pacchetti, quindi cercare e disinstallare tutti i pacchetti We.Retail. Per ulteriori informazioni, consulta Come lavorare con i pacchetti.

Controlla se i bundle di sviluppo CRX sono presenti

Questi bundle OSGi di sviluppo devono essere disinstallati sia sui sistemi produttivi di authoring che di pubblicazione prima di renderli accessibili.

  • Supporto Adobe CRXDE (com.adobe.granite.crxde-support)
  • Adobe Granite CRX Explorer (com.adobe.granite.crx-explorer)
  • Adobe Granite CRXDE Lite (com.adobe.granite.crxde-lite)

Controlla se il bundle di sviluppo Sling è presente

Il AEM Developer Tools per Eclipse implementa l'installazione del supporto per gli strumenti Sling di Apache (org.apache.sling.tooling.support.install).

Questo bundle OSGi deve essere disinstallato sui sistemi produttivi di authoring e pubblicazione prima di renderli accessibili.

Protect contro la falsificazione delle richieste intersito

Quadro di riferimento per la protezione del CSRF

AEM 6.1 viene fornito con un meccanismo che aiuta a proteggere dagli attacchi di Forgery di richieste intersito, denominato CSRF Protection Framework. Per ulteriori informazioni su come usarlo, consulta la documentazione.

Filtro Sling Referrer

Per risolvere problemi di sicurezza noti con Cross-Site Request Forgery (CSRF) in CRX WebDAV e Apache Sling è necessario aggiungere configurazioni per il filtro Referrer per utilizzarlo.

Il servizio filtro referrer è un servizio OSGi che consente di configurare:

  • quali metodi http devono essere filtrati

  • se è consentita un'intestazione referrer vuota

  • e un elenco di server da consentire oltre all'host del server.

    Per impostazione predefinita, nell’elenco sono presenti tutte le varianti di localhost e i nomi host correnti a cui è associato il server.

Per configurare il servizio filtro referrer:

  1. Apri la console Apache Felix (Configurazioni) all'indirizzo:

    https://<server>:<port_number>/system/console/configMgr

  2. Accedi come admin.

  3. Nel menu Configurazioni, seleziona:

    Apache Sling Referrer Filter

  4. Nel campo Allow Hosts , immetti tutti gli host consentiti come referrer. Ogni voce deve essere del modulo

    <protocol>://<server>:<port>

    Esempio:

    • https://allowed.server:80 consente tutte le richieste da questo server con la porta specificata.
    • Se desideri anche consentire le richieste https, devi immettere una seconda riga.
    • Se consenti tutte le porte da quel server, puoi utilizzare 0 come numero di porta.
  5. Seleziona il campo Allow Empty per consentire intestazioni di referente vuote o mancanti.

    ATTENZIONE

    Si consiglia di fornire un referente quando si utilizzano strumenti della riga di comando come cURL invece di consentire un valore vuoto, in quanto potrebbe esporre il sistema ad attacchi CSRF.

  6. Modifica i metodi che questo filtro deve utilizzare per i controlli con il campo Filter Methods .

  7. Fai clic su Salva per salvare le modifiche.

Impostazioni OSGI

Alcune impostazioni OSGI sono impostate per impostazione predefinita per consentire un debug più semplice dell'applicazione. Queste devono essere modificate nelle istanze produttive di pubblicazione e authoring per evitare che le informazioni interne vengano divulgate al pubblico.

NOTA

Tutte le impostazioni seguenti, ad eccezione di Day CQ WCM Debug Filter, sono automaticamente coperte dalla Modalità pronta per la produzione. Per questo motivo, consigliamo di rivedere tutte le impostazioni prima di distribuire l’istanza in un ambiente produttivo.

Per ciascuno dei servizi seguenti è necessario modificare le impostazioni specificate:

  • Adobe Granite HTML Library Manager:

    • abilita Minify (per rimuovere CRLF e caratteri di spazio vuoto).
    • abilita Gzip (per consentire l'gzip dei file e l'accesso con una richiesta).
    • disattiva Debug
    • disattiva Timing
  • Filtro di debug Day CQ WCM:

    • deseleziona Abilita
  • Filtro WCM Day CQ:

    • solo per la pubblicazione, imposta Modalità WCM su "disabilitata"
  • Gestore Java Script Apache Sling:

    • disattiva Genera informazioni di debug
  • Gestore script JSP Apache Sling:

    • disattiva Genera informazioni di debug
    • disattiva Contenuto mappato

Per ulteriori dettagli, consulta Impostazioni di configurazione OSGi.

Quando si lavora con AEM esistono diversi metodi per gestire le impostazioni di configurazione di tali servizi; per ulteriori dettagli e pratiche consigliate, consulta Configurazione di OSGi .

Ulteriori letture

Riduzione degli attacchi di tipo DoS (Denial of Service)

Un attacco Denial of Service (DoS) è un tentativo di rendere la risorsa di un computer indisponibile per gli utenti a cui è destinata. Questo viene spesso fatto sovraccaricando la risorsa; ad esempio:

  • Con un flusso di richieste da una fonte esterna.

  • Con una richiesta di più informazioni di quelle che il sistema può consegnare correttamente.

    Ad esempio, una rappresentazione JSON dell’intero archivio.

  • Richiedendo una pagina di contenuto con un numero illimitato di URL, l’URL può includere un handle, alcuni selettori, un’estensione e un suffisso, ciascuno dei quali può essere modificato.

    Ad esempio, .../en.html può essere richiesto anche come:

    • .../en.ExtensionDosAttack
    • .../en.SelectorDosAttack.html
    • .../en.html/SuffixDosAttack

    Tutte le varianti valide (ad esempio, restituire una risposta 200 e sono configurate per la memorizzazione nella cache) verranno memorizzate nella cache dal dispatcher, in modo da ottenere un file system completo e nessun servizio per ulteriori richieste.

Ci sono molti punti di configurazione per prevenire tali attacchi, qui discutiamo solo di quelli direttamente collegati a AEM.

Configurazione di Sling per impedire il DoS

Sling è incentrato sul contenuto. Ciò significa che l’elaborazione è incentrata sul contenuto, in quanto ogni richiesta (HTTP) viene mappata sul contenuto sotto forma di una risorsa JCR (un nodo di archivio):

  • Il primo target è la risorsa (nodo JCR) che contiene il contenuto.
  • In secondo luogo, il renderer, o script, si trova dalle proprietà della risorsa in combinazione con alcune parti della richiesta (ad esempio selettori e/o estensione).
NOTA

Questa sezione viene descritta più dettagliatamente in Elaborazione delle richieste Sling.

Questo approccio rende Sling molto potente e molto flessibile, ma come sempre è la flessibilità che deve essere gestita con attenzione.

Per evitare l'uso improprio di DoS è possibile:

  1. Incorporare controlli a livello di applicazione; a causa del numero di varianti possibili, una configurazione predefinita non è fattibile.

    Nella tua applicazione devi:

    • Controlla i selettori nell'applicazione, in modo che solo serva i selettori espliciti necessari e restituisca 404 per tutti gli altri.
    • Impedisci l’output di un numero illimitato di nodi di contenuto.
  2. Controlla la configurazione dei moduli di rendering predefiniti, che possono essere un’area problematica.

    • In particolare, il modulo di rendering JSON che può trasmettere la struttura ad albero su più livelli.

      Ad esempio, la richiesta:

      http://localhost:4502/.json

      potrebbe scaricare l’intero archivio in una rappresentazione JSON. Questo causerebbe gravi problemi al server. Per questo motivo Sling imposta un limite al numero di risultati massimi. Per limitare la profondità del rendering JSON, puoi impostare il valore per:

      Risultati massimi JSON ( json.maximumresults)

      nella configurazione del Servlet Apache Sling GET. Quando questo limite viene superato, il rendering viene compresso. Il valore predefinito per Sling in AEM è 1000.

    • Come misura preventiva, disattiva gli altri render predefiniti (HTML, testo normale, XML). Di nuovo configurando il Servlet Apache Sling GET.

    ATTENZIONE

    Non disabilitare il renderer JSON, è necessario per il normale funzionamento di AEM.

  3. Utilizza un firewall per filtrare l’accesso all’istanza.

    • L'utilizzo di un firewall a livello di sistema operativo è necessario per filtrare l'accesso ai punti dell'istanza che potrebbero causare attacchi di tipo Denial of Service se lasciato non protetto.

Riduzione degli errori di DoS causati dall’utilizzo di selettori di moduli

NOTA

Questa mitigazione deve essere eseguita solo su ambienti AEM che non utilizzano Forms.

Poiché AEM non fornisce indici predefiniti per il FormChooserServlet, l’utilizzo di selettori di moduli nelle query innescherà un costoso attraversamento dell’archivio, solitamente bloccando l’istanza AEM. I selettori dei moduli possono essere rilevati dalla presenza di *.form.Stringa * nelle query.

Per attenuarlo, segui i passaggi seguenti:

  1. Vai alla console Web puntando il browser su https://<serveraddress>:<serverport>/system/console/configMgr

  2. Cerca Day CQ WCM Form Chooser Servlet

  3. Dopo aver fatto clic sulla voce, disattiva la Richiesta di ricerca avanzata nella finestra seguente.

  4. Fai clic su Salva.

Riduzione del numero di DoS causato dal servlet di download delle risorse

Il servlet di download delle risorse predefinito in AEM consente agli utenti autenticati di emettere richieste di download simultanee di grandi dimensioni arbitrarie per la creazione di file ZIP di risorse visibili che possono sovraccaricare il server e/o la rete.

Per attenuare i potenziali rischi DoS causati da questa funzione, il componente AssetDownloadServlet OSGi è disattivato per impostazione predefinita per le istanze di pubblicazione sulle versioni più recenti di AEM.

Se la configurazione richiede che Asset Download Server sia abilitato, consulta questo articolo per ulteriori informazioni.

Disattiva WebDAV

WebDAV deve essere disabilitato sia negli ambienti di authoring che di pubblicazione. Questo può essere fatto arrestando i bundle OSGi appropriati.

  1. Connettiti alla Felix Management Console in esecuzione su:

    https://<*host*>:<*port*>/system/console

    Esempio http://localhost:4503/system/console/bundles.

  2. Nell’elenco dei bundle, trova il bundle denominato:

    Apache Sling Simple WebDAV Access to repositories (org.apache.sling.jcr.webdav)

  3. Fai clic sul pulsante di arresto (nella colonna Azioni) per arrestare questo bundle.

  4. Di nuovo nell'elenco dei bundle, trova il bundle chiamato:

    Apache Sling DavEx Access to repositories (org.apache.sling.jcr.davex)

  5. Fai clic sul pulsante di arresto per arrestare il bundle.

    NOTA

    Non è necessario riavviare AEM.

Verifica Di Non Divulgare Informazioni Personalmente Identificabili Nel Percorso Home Dell’Utente

È importante proteggere gli utenti assicurandosi di non esporre informazioni personali identificabili nel percorso home degli utenti dell’archivio.

A partire da AEM 6.1, il modo in cui vengono memorizzati i nomi dei nodi ID utente (noti anche come autorizzabili) viene modificato con una nuova implementazione dell'interfaccia AuthorizableNodeName . La nuova interfaccia non espone più l’ID utente nel nome del nodo, ma genera un nome casuale.

Per abilitarlo, non è necessario eseguire alcuna configurazione, in quanto è ora il modo predefinito per generare ID autorizzabili in AEM.

Anche se non consigliato, puoi disattivarlo nel caso in cui sia necessaria la vecchia implementazione per garantire la compatibilità con le applicazioni esistenti. Per eseguire questa operazione, è necessario:

  1. Vai alla Console web e rimuovi la voce ​ org.apache.jackrabbit.oak.security.user.RandomAuthorizableNodeName dalla proprietà requiredServicePids in Apache Jackrabbit Oak SecurityProvider.

    Puoi anche trovare il provider di sicurezza Oak cercando il PID org.apache.jackrabbit.oak.security.internal.SecurityProviderRegistration nelle configurazioni OSGi.

  2. Elimina la configurazione Apache Jackrabbit Oak Random Authorizable Node Name OSGi dalla Web Console.

    Per una ricerca più semplice, tieni presente che il PID per questa configurazione è org.apache.jackrabbit.oak.security.user.RandomAuthorizableNodeName.

NOTA

Per ulteriori informazioni, consulta la documentazione Oak su Generazione nome nodo autorizzabile.

Previeni il clickjacking

Per prevenire il clickjacking, ti consigliamo di configurare il server web per fornire l’intestazione HTTP X-FRAME-OPTIONS impostata su SAMEORIGIN.

Per ulteriori informazioni sul clickjacking, vedi il sito OWASP.

Assicurati Di Replicare Correttamente Le Chiavi Di Crittografia Quando Necessario

Alcune funzioni AEM e schemi di autenticazione richiedono la replica delle chiavi di crittografia in tutte le istanze AEM.

Prima di eseguire questa operazione, tieni presente che la replica chiave viene eseguita in modo diverso tra le versioni, perché il modo in cui le chiavi vengono memorizzate è diverso tra le versioni 6.3 e precedenti.

Per ulteriori informazioni, consulta di seguito.

Replica delle chiavi per AEM 6.3

Mentre nelle versioni precedenti le chiavi di replica venivano memorizzate nell'archivio, a partire da AEM 6.3 vengono memorizzate nel filesystem.

Pertanto, per replicare le chiavi tra le istanze è necessario copiarle dall'istanza sorgente alla posizione delle istanze di destinazione sul file system.

In particolare, devi:

  1. Accedi all'istanza AEM, in genere un'istanza dell'autore, che contiene il materiale chiave da copiare;

  2. Individua il bundle com.adobe.granite.crypto.file nel file system locale. Ad esempio, sotto questo percorso:

    • <author-aem-install-dir>/crx-quickstart/launchpad/felix/bundle21

    Il file bundle.info all'interno di ogni cartella identificherà il nome del bundle.

  3. Passa alla cartella dati. Esempio:

    • <author-aem-install-dir>/crx-quickstart/launchpad/felix/bundle21/data
  4. Copiare i file HMAC e master.

  5. Quindi, vai all'istanza di destinazione a cui desideri duplicare la chiave HMAC e passa alla cartella dei dati. Esempio:

    • <publish-aem-install-dir>/crx-quickstart/launchpad/felix/bundle21/data
  6. Incolla i due file copiati in precedenza.

  7. Aggiorna il Crypto Bundlese l'istanza di destinazione è già in esecuzione.

  8. Ripeti i passaggi precedenti per tutte le istanze a cui desideri replicare la chiave.

NOTA

Per ripristinare il metodo precedente alla versione 6.3 di memorizzazione delle chiavi, aggiungi il parametro seguente al primo avvio dell'installazione di AEM:

-Dcom.adobe.granite.crypto.file.disable=true

Replica delle chiavi per le versioni AEM 6.2 e precedenti

Nelle versioni AEM 6.2 e precedenti, le chiavi sono memorizzate nell'archivio sotto il nodo /etc/key .

Il modo consigliato per replicare in modo sicuro le chiavi nelle istanze è quello di replicare solo questo nodo. È possibile replicare in modo selettivo i nodi tramite CRXDE Lite:

  1. Apri CRXDE Lite andando su https://<serrveraddress>:4502/crx/de/index.jsp
  2. Selezionare il nodo /etc/key.
  3. Passa alla scheda Replica .
  4. Premere il tasto Replica.

Esegui un test di penetrazione

Adobe consiglia vivamente di eseguire un test di penetrazione dell’infrastruttura AEM prima di procedere alla produzione.

Tecniche consigliate per lo sviluppo

È fondamentale che il nuovo sviluppo segua le best practice sulla sicurezza per garantire che l'ambiente AEM rimanga sicuro.

In questa pagina