Lista de verificação de segurança security-checklist
Esta seção trata de várias etapas que você deve tomar para garantir que sua instalação AEM seja segura quando implantada. A lista de verificação deve ser aplicada de cima para baixo.
Principais medidas de segurança main-security-measures
Executar AEM no modo Pronto para produção run-aem-in-production-ready-mode
Para obter mais informações, consulte Executando AEM no modo Pronto para produção.
Ativar HTTPS para segurança da camada de transporte enable-https-for-transport-layer-security
Habilitar a camada de transporte HTTPS nas instâncias de autor e publicação é obrigatório para ter uma instância segura.
Instalar hotfixes de segurança install-security-hotfixes
Certifique-se de ter instalado a versão mais recente Hotfixes de segurança fornecidos pelo Adobe.
Alterar senhas padrão para contas de administração do console AEM e OSGi change-default-passwords-for-the-aem-and-osgi-console-admin-accounts
O Adobe recomenda que, após a instalação, você altere a senha dos privilegiados AEM admin
contas (em todas as instâncias).
Essas contas incluem:
-
O AEM
admin
accountDepois de alterar a senha da conta de administrador AEM, será necessário usar a nova senha ao acessar o CRX.
-
O
admin
senha para o console da Web OSGiEssa alteração também será aplicada à conta de administrador usada para acessar o console da Web; portanto, você precisará usar a mesma senha ao acessar essa senha.
Essas duas contas usam credenciais separadas e ter uma senha forte e distinta para cada é essencial para uma implantação segura.
Alterar a senha do administrador AEM changing-the-aem-admin-password
A senha da conta de administrador do AEM pode ser alterada por meio do Operações do Granite - Usuários console.
Aqui você pode editar o admin
e alterar a senha.
Importância de alterar a senha do console da Web OSGi importance-of-changing-the-osgi-web-console-password
Além do AEM admin
, a não alteração da senha padrão do console da Web OSGi pode levar a:
- Exposição do servidor com uma senha padrão durante a inicialização e o desligamento (que pode levar minutos para grandes servidores);
- Exposição do servidor quando o repositório está inativo/reiniciando o pacote - e OSGI está em execução.
Para obter mais informações sobre como alterar a senha do console da Web, consulte Alteração da senha do administrador do console da Web OSGi abaixo.
Alteração da senha do administrador do console da Web OSGi changing-the-osgi-web-console-admin-password
Você também deve alterar a senha usada para acessar o console da Web. Isso é feito configurando as seguintes propriedades da variável Console de Gerenciamento do Apache Felix OSGi:
Nome do usuário e Senha, as credenciais para acessar o próprio Apache Felix Web Management Console.
A senha deve ser alterada após a instalação inicial para garantir a segurança da sua instância.
Para fazer isso:
-
Navegue até o console da Web em
<server>:<port>/system/console/configMgr
. -
Navegue até Console de gerenciamento OSGi do Apache Felix e altere o nome do usuário e senha.
-
Clique em Salvar.
Implementar o Manipulador de Erros Personalizado implement-custom-error-handler
O Adobe recomenda definir páginas personalizadas do manipulador de erros, especialmente para os códigos de resposta HTTP 404 e 500, a fim de evitar a divulgação de informações.
Lista de verificação de segurança completa do Dispatcher complete-dispatcher-security-checklist
AEM Dispatcher é uma parte essencial de sua infraestrutura. O Adobe recomenda que você conclua a lista de verificação de segurança do dispatcher.
Etapas de verificação verification-steps
Configurar usuários de replicação e transporte configure-replication-and-transport-users
Uma instalação padrão de AEM especifica admin
como usuário para credenciais de transporte no padrão agentes de replicação. Além disso, o usuário administrador é usado para originar a replicação no sistema de criação.
Por questões de segurança, ambas devem ser alteradas de forma a refletirem o caso de uso específico em questão, tendo em conta os dois aspectos seguintes:
-
O utilizador de transportes não deve ser o usuário administrador. Em vez disso, configure um usuário no sistema de publicação que tenha somente direitos de acesso às partes relevantes do sistema de publicação e use as credenciais desse usuário para o transporte.
Você pode começar com o usuário receptor de replicação empacotado e configurar os direitos de acesso deste usuário para corresponder à sua situação
-
O usuário de replicação ou ID de usuário do agente também não deve ser o usuário administrador, mas um usuário que só pode ver o conteúdo que deve ser replicado. O usuário de replicação é usado para coletar o conteúdo a ser replicado no sistema de autor antes de ser enviado ao editor.
Verifique as verificações de integridade de segurança do painel de operações check-the-operations-dashboard-security-health-checks
O AEM 6 apresenta o novo Painel de Operações, destinado a ajudar os operadores do sistema a solucionar problemas e monitorar a integridade de uma instância.
O painel também vem com uma coleção de verificações de integridade de segurança. É recomendável verificar o status de todas as verificações de integridade de segurança antes de entrar em vigor com a instância de produção. Para obter mais informações, consulte o Documentação do Painel de operações.
Verifique se o conteúdo de exemplo está presente check-if-example-content-is-present
Todo o conteúdo de exemplo e os usuários (por exemplo, o projeto do Geometrixx e seus componentes) devem ser desinstalados e excluídos completamente em um sistema produtivo antes de torná-lo acessível ao público.
Verifique se os pacotes de desenvolvimento do CRX estão presentes check-if-the-crx-development-bundles-are-present
Esses pacotes OSGi de desenvolvimento devem ser desinstalados nos sistemas produtivos de criação e publicação antes de torná-los acessíveis.
- Suporte a 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)
Verifique se o pacote de desenvolvimento do Sling está presente check-if-the-sling-development-bundle-is-present
O Ferramentas de desenvolvedor do AEM para Eclipse implanta a instalação do suporte a ferramentas do Apache Sling (org.apache.sling.tooling.support.install).
Este pacote OSGi deve ser desinstalado nos sistemas produtivos de autor e publicação antes de torná-los acessíveis.
Protect contra falsificação de solicitação entre sites protect-against-cross-site-request-forgery
Quadro de proteção do QREF the-csrf-protection-framework
O AEM 6.1 acompanha um mecanismo que ajuda a proteger contra ataques de falsificação de solicitação entre sites, chamado de Estrutura de proteção do CSRF. Para obter mais informações sobre como usá-lo, consulte o documentação.
O filtro do referenciador do Sling the-sling-referrer-filter
Para solucionar problemas de segurança conhecidos com a falsificação de solicitação entre sites (CSRF) no CRX WebDAV e no Apache Sling, é necessário adicionar configurações para o filtro Referenciador para usá-lo.
O serviço de filtro do referenciador é um serviço OSGi que permite configurar:
-
quais métodos http devem ser filtrados
-
se um cabeçalho de referenciador vazio é permitido
-
e uma lista de servidores a serem permitidos além do host do servidor.
Por padrão, todas as variações de localhost e os nomes de host atuais aos quais o servidor está vinculado estão na lista.
Para configurar o serviço de filtro do referenciador:
-
Abra o console do Apache Felix (Configurações) em:
https://<server>:<port_number>/system/console/configMgr
-
Efetuar logon como
admin
. -
No Configurações selecione:
Apache Sling Referrer Filter
-
No
Allow Hosts
, insira todos os hosts permitidos como referenciador. Cada entrada precisa estar no formulário<protocol>://<server>:<port>
Por exemplo:
https://allowed.server:80
permite todas as solicitações deste servidor com a porta especificada.- Se também quiser permitir solicitações https, é necessário inserir uma segunda linha.
- Se você permitir todas as portas desse servidor, poderá usar
0
como o número da porta.
-
Verifique a
Allow Empty
, se desejar permitir cabeçalhos de referenciador vazios/ausentes.note caution CAUTION É recomendável fornecer um referenciador ao usar ferramentas de linha de comando como cURL
em vez de permitir um valor vazio, pois pode expor seu sistema a ataques de CSRF. -
Edite os métodos que este filtro deve usar para verificações com o
Filter Methods
campo. -
Clique em Salvar para salvar as alterações.
Configurações OSGI osgi-settings
Algumas configurações OSGI são definidas por padrão para permitir uma depuração mais fácil do aplicativo. Eles precisam ser alterados em instâncias produtivas de publicação e criação para evitar o vazamento de informações internas para o público.
Para cada um dos seguintes serviços, as configurações especificadas precisam ser alteradas:
-
Gerenciador de biblioteca de HTML do Adobe Granite:
- habilitar Minimizar (para remover caracteres CRLF e espaço em branco).
- habilitar Gzip (para permitir que os arquivos sejam compactados e acessados com uma solicitação).
- disable Depurar
- disable Tempo
-
Filtro de depuração do Day CQ WCM:
- desmarcar Habilitar
-
- somente ao publicar, definir Modo WCM para "desativado"
-
Manipulador de script Java do Apache Sling:
- disable Gerar informações de depuração
-
Manipulador de script JSP do Apache Sling:
- disable Gerar informações de depuração
- disable Conteúdo mapeado
Para obter mais detalhes, consulte Configurações do OSGi.
Ao trabalhar com AEM, existem vários métodos de gestão das definições de configuração para esses serviços; see Configuração do OSGi para obter mais detalhes e as práticas recomendadas.
Outras Leituras further-readings
Reduza os ataques de negação de serviço (DoS) mitigate-denial-of-service-dos-attacks
Um ataque de negação de serviço (DoS) é uma tentativa de tornar um recurso de computador indisponível para os usuários desejados. Isso é feito com frequência sobrecarregando o recurso; por exemplo:
-
Com uma enxurrada de solicitações de uma fonte externa.
-
Com uma solicitação para obter mais informações do que o sistema pode fornecer com sucesso.
Por exemplo, uma representação JSON de todo o repositório.
-
Ao solicitar uma página de conteúdo com um número ilimitado de URLs, o URL pode incluir um identificador, alguns seletores, uma extensão e um sufixo, qualquer um dos quais pode ser modificado.
Por exemplo,
.../en.html
também pode ser solicitada como:.../en.ExtensionDosAttack
.../en.SelectorDosAttack.html
.../en.html/SuffixDosAttack
Todas as variações válidas (por exemplo, retornar um
200
e configuradas para serem armazenadas em cache) serão armazenadas em cache pelo dispatcher, resultando em um sistema de arquivos completo e nenhum serviço para solicitações adicionais.
Há muitos pontos de configuração para prevenir tais ataques, aqui só discutimos aqueles diretamente relacionados com a AEM.
Configurar o Sling para evitar DoS
O Sling é centrado no conteúdo. Isso significa que o processamento está focado no conteúdo, já que cada solicitação (HTTP) é mapeada no conteúdo na forma de um recurso JCR (um nó de repositório):
- O primeiro target é o recurso (nó JCR) que contém o conteúdo.
- Em segundo lugar, o renderizador, ou script, está localizado nas propriedades do recurso em combinação com determinadas partes da solicitação (por exemplo, seletores e/ou extensão).
Essa abordagem torna o Sling muito poderoso e flexível, mas, como sempre, é a flexibilidade que precisa ser gerenciada com cuidado.
Para ajudar a evitar o uso indevido de DoS, você pode:
-
Incorporar controlos ao nível da aplicação; devido ao número de variações possíveis, uma configuração padrão não é viável.
No seu aplicativo, você deve:
- Controle os seletores em seu aplicativo, para que você only forneça os seletores explícitos necessários e retorne
404
para todos os outros. - Impeça a saída de um número ilimitado de nós de conteúdo.
- Controle os seletores em seu aplicativo, para que você only forneça os seletores explícitos necessários e retorne
-
Verifique a configuração dos renderizadores padrão, que pode ser uma área problemática.
-
Particularmente o renderizador JSON, que pode inverter a estrutura da árvore em vários níveis.
Por exemplo, a solicitação:
http://localhost:4502/.json
pode despejar todo o repositório em uma representação JSON. Isso causaria problemas significativos no servidor. Por esse motivo, o Sling define um limite no número máximo de resultados. Para limitar a profundidade da renderização JSON, é possível definir o valor para:
Máximo de resultados JSON (
json.maximumresults
)na configuração do Servlet de GET Apache Sling. Quando esse limite for excedido, a renderização será recolhida. O valor padrão para Sling em AEM é
1000
. -
Como medida preventiva, desative os outros renderizadores padrão (HTML, texto sem formatação, XML). Novamente, configurando o Servlet de GET Apache Sling.
note caution CAUTION Não desative o renderizador JSON, isso é necessário para a operação normal de AEM. -
-
Use um firewall para filtrar o acesso à sua instância.
- O uso de um firewall no nível do sistema operacional é necessário para filtrar o acesso a pontos da instância que podem levar a ataques de negação de serviço se não estiverem protegidos.
Mitigar contra ações causadas pelo uso de seletores de formulário
Como AEM não fornece índices prontos para o FormChooserServlet
, o uso de seletores de formulário em consultas acionará uma dispendiosa travessia do repositório, geralmente paralisando a instância de AEM. Os seletores de formulários podem ser detectados pela presença do *.form.* em queries.
Para mitigar isso, siga as etapas abaixo:
-
Vá para o Console da Web apontando seu navegador para https://<serveraddress>:<serverport>/system/console/configMgr
-
Procurar por Servlet do Seletor de Formulário Day CQ WCM
-
Depois de clicar na entrada, desative o Necessidade de pesquisa avançada na janela a seguir.
-
Clique em Salvar.
Mitigar contra ações causadas pelo servlet de download de ativos
O Servlet de download de ativos padrão no AEM permite que usuários autenticados emitam solicitações de download simultâneas e arbitrariamente grandes para criar arquivos ZIP de ativos visíveis para eles que podem sobrecarregar o servidor e/ou a rede.
Para reduzir possíveis riscos de DoS causados por esse recurso, AssetDownloadServlet
O componente OSGi é desabilitado por padrão para instâncias de publicação em versões de AEM mais recentes.
Se sua configuração exigir que o Servidor de download de ativos esteja habilitado, consulte este artigo para obter mais informações.
Desativar WebDAV disable-webdav
O WebDAV deve ser desativado nos ambientes de autor e publicação. Isso pode ser feito parando os pacotes OSGi apropriados.
-
Conecte-se ao Console de Gerenciamento Felix em execução:
https://<*host*>:<*port*>/system/console
Por exemplo,
http://localhost:4503/system/console/bundles
. -
Na lista de pacotes, encontre o pacote chamado:
Apache Sling Simple WebDAV Access to repositories (org.apache.sling.jcr.webdav)
-
Clique no botão stop (na coluna Actions ) para interromper esse pacote.
-
Novamente na lista de pacotes, encontre o pacote chamado:
Apache Sling DavEx Access to repositories (org.apache.sling.jcr.davex)
-
Clique no botão stop para interromper esse pacote.
note note NOTE Não é necessário reiniciar o AEM.
Verifique Se Você Não Está Exibindo Informações Pessoalmente Identificáveis No Caminho Inicial Dos Usuários verify-that-you-are-not-disclosing-personally-identifiable-information-in-the-users-home-path
É importante proteger seus usuários, certificando-se de não expor informações pessoalmente identificáveis no caminho inicial dos usuários do repositório.
Desde o AEM 6.1, a maneira como os nomes de nó da ID do usuário (também conhecida como autorizável) são armazenados é alterada com uma nova implementação do AuthorizableNodeName
interface. A nova interface não exporá mais a ID do usuário no nome do nó, mas gerará um nome aleatório.
Nenhuma configuração precisa ser executada para habilitá-la, pois essa é agora a maneira padrão de gerar IDs autorizáveis no AEM.
Embora não seja recomendado, você pode desativá-lo caso precise da implementação antiga para ter compatibilidade com versões anteriores dos aplicativos existentes. Para fazer isso, é necessário:
-
Vá para o Console da Web e remova a entrada org.apache.jackrabbit.oak.security.user.RandomAuthorizableNodeName da propriedade requiredServicePids em Apache Jackrabbit Oak SecurityProvider.
Você também pode encontrar o Provedor de segurança Oak procurando pela variável org.apache.jackrabbit.oak.security.internal.SecurityProviderRegistration PID nas configurações do OSGi.
-
Exclua o Nome de nó autorizado aleatório do Apache Jackrabbit Oak Configuração do OSGi no Console da Web.
Para obter uma pesquisa mais fácil, observe que o PID dessa configuração é org.apache.jackrabbit.oak.security.user.RandomAuthorizableNodeName.
Prevenção contra clickjacking prevent-clickjacking
Para evitar clickjacking, recomendamos que você configure seu servidor Web para fornecer o cabeçalho HTTP X-FRAME-OPTIONS
definido como SAMEORIGIN
.
Para obter mais informações sobre clickjacking, consulte o site OWASP.
Certifique-Se De Replicar Corretamente As Chaves De Criptografia Quando Necessário make-sure-you-properly-replicate-encryption-keys-when-needed
Determinados recursos de AEM e esquemas de autenticação exigem a replicação das chaves de criptografia em todas as instâncias de AEM.
Antes de fazer isso, observe que a replicação de chaves é feita de forma diferente entre as versões, pois a maneira como as chaves são armazenadas é diferente entre a 6.3 e as versões mais antigas.
Consulte abaixo para obter mais informações.
Replicação de chaves para o AEM 6.3 replicating-keys-for-aem
Enquanto em versões mais antigas as chaves de replicação eram armazenadas no repositório, a partir da AEM 6.3, elas são armazenadas no sistema de arquivos.
Portanto, para replicar suas chaves em instâncias, é necessário copiá-las da instância de origem para o local das instâncias de destino no sistema de arquivos.
Mais especificamente, é necessário:
-
Acesse a instância AEM, normalmente uma instância de autor, que contém o material principal a ser copiado;
-
Localize o pacote com.adobe.granite.crypto.file no sistema de arquivos local. Por exemplo, neste caminho:
<author-aem-install-dir>/crx-quickstart/launchpad/felix/bundle21
O
bundle.info
o arquivo dentro de cada pasta identificará o nome do pacote. -
Navegue até a pasta de dados. Por exemplo:
<author-aem-install-dir>/crx-quickstart/launchpad/felix/bundle21/data
-
Copie o HMAC e os arquivos principais.
-
Em seguida, vá para a instância de destino para a qual deseja duplicar a chave HMAC e navegue até a pasta de dados. Por exemplo:
<publish-aem-install-dir>/crx-quickstart/launchpad/felix/bundle21/data
-
Cole os dois arquivos copiados anteriormente.
-
Atualizar o pacote de criptografia se a instância de destino já estiver em execução.
-
Repita as etapas acima para todas as instâncias para as quais deseja replicar a chave.
-Dcom.adobe.granite.crypto.file.disable=true
Replicação de chaves para AEM 6.2 e versões anteriores replicating-keys-for-aem-and-older-versions
No AEM 6.2 e versões mais antigas, as chaves são armazenadas no repositório no /etc/key
nó .
A maneira recomendada para replicar com segurança as chaves em suas instâncias é replicar apenas esse nó. Você pode replicar nós seletivamente via CRXDE Lite:
- Abra o CRXDE Lite indo para https://<serrveraddress>:4502/crx/de/index.jsp
- Selecione o
/etc/key
nó . - Vá para o Replicação guia .
- Pressione a tecla Replicação botão.
Realização de teste de penetração perform-a-penetration-test
A Adobe recomenda realizar um teste de penetração na infraestrutura do seu AEM antes de continuar a produção.
Práticas recomendadas de desenvolvimento development-best-practices
É fundamental que os novos desenvolvimentos sigam a Práticas recomendadas de segurança para garantir que seu ambiente de AEM permaneça seguro.