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.
Nella fase di sviluppo sono disponibili alcune considerazioni sulla sicurezza aggiuntive.
Per ulteriori informazioni, consulta Esecuzione AEM in modalità pronta per la produzione.
Per disporre di un’istanza sicura, è obbligatorio abilitare il livello di trasporto HTTPS sia sulle istanze di authoring che di pubblicazione.
Per ulteriori informazioni, consulta la sezione Abilitazione di HTTP su SSL .
Assicurati di aver installato gli Hotfix di sicurezza più recenti forniti da Adobe.
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.
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.
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.
Oltre all'account AEM admin
, la mancata modifica della password predefinita per la console Web OSGi può portare a:
Per ulteriori informazioni sulla modifica della password della console Web, consulta Modifica della password dell’amministratore della console Web OSGi di seguito.
È 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:
Passa alla console Web all’indirizzo <server>:<port>/system/console/configMgr
.
Passa a Apache Felix OSGi Management Console e modifica il nome utente e la password.
Fai clic su Salva.
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.
Per ulteriori informazioni, consulta l'articolo della knowledge base Come creare script personalizzati o gestori di errori .
AEM Dispatcher è un elemento critico dell’infrastruttura. L'Adobe consiglia vivamente di completare la lista di controllo della sicurezza del dispatcher.
Utilizzando Dispatcher è necessario disabilitare il selettore ".form".
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.
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.
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.
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.
Questi bundle OSGi di sviluppo devono essere disinstallati sia sui sistemi produttivi di authoring che di pubblicazione prima di renderli accessibili.
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.
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.
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:
Apri la console Apache Felix (Configurazioni) all'indirizzo:
https://<server>:<port_number>/system/console/configMgr
Accedi come admin
.
Nel menu Configurazioni, seleziona:
Apache Sling Referrer Filter
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.0
come numero di porta.Seleziona il campo Allow Empty
per consentire intestazioni di referente vuote o mancanti.
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.
Modifica i metodi che questo filtro deve utilizzare per i controlli con il campo Filter Methods
.
Fai clic su Salva per salvare le modifiche.
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.
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:
Filtro di debug Day CQ WCM:
Filtro WCM Day CQ:
Gestore Java Script Apache Sling:
Gestore script JSP Apache Sling:
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 .
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):
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:
Incorporare controlli a livello di applicazione; a causa del numero di varianti possibili, una configurazione predefinita non è fattibile.
Nella tua applicazione devi:
404
per tutti gli altri.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.
Non disabilitare il renderer JSON, è necessario per il normale funzionamento di AEM.
Utilizza un firewall per filtrare l’accesso all’istanza.
Riduzione degli errori di DoS causati dall’utilizzo di selettori di moduli
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:
Vai alla console Web puntando il browser su https://<serveraddress>:<serverport>/system/console/configMgr
Cerca Day CQ WCM Form Chooser Servlet
Dopo aver fatto clic sulla voce, disattiva la Richiesta di ricerca avanzata nella finestra seguente.
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.
WebDAV deve essere disabilitato sia negli ambienti di authoring che di pubblicazione. Questo può essere fatto arrestando i bundle OSGi appropriati.
Connettiti alla Felix Management Console in esecuzione su:
https://<*host*>:<*port*>/system/console
Esempio http://localhost:4503/system/console/bundles
.
Nell’elenco dei bundle, trova il bundle denominato:
Apache Sling Simple WebDAV Access to repositories (org.apache.sling.jcr.webdav)
Fai clic sul pulsante di arresto (nella colonna Azioni) per arrestare questo bundle.
Di nuovo nell'elenco dei bundle, trova il bundle chiamato:
Apache Sling DavEx Access to repositories (org.apache.sling.jcr.davex)
Fai clic sul pulsante di arresto per arrestare il bundle.
Non è necessario riavviare AEM.
È 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:
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.
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.
Per ulteriori informazioni, consulta la documentazione Oak su Generazione nome nodo autorizzabile.
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.
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.
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:
Accedi all'istanza AEM, in genere un'istanza dell'autore, che contiene il materiale chiave da copiare;
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.
Passa alla cartella dati. Esempio:
<author-aem-install-dir>/crx-quickstart/launchpad/felix/bundle21/data
Copiare i file HMAC e master.
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
Incolla i due file copiati in precedenza.
Aggiorna il Crypto Bundlese l'istanza di destinazione è già in esecuzione.
Ripeti i passaggi precedenti per tutte le istanze a cui desideri replicare la chiave.
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
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:
/etc/key
.Adobe consiglia vivamente di eseguire un test di penetrazione dell’infrastruttura AEM prima di procedere alla produzione.
È fondamentale che il nuovo sviluppo segua le best practice sulla sicurezza per garantire che l'ambiente AEM rimanga sicuro.