Neste post, você verá um exemplo de como configurar a crypto-policy do Red Hat Enterprise Linux (RHEL) 8 para remover o Cipher Block Chaining (CBC). No entanto, começaremos com um pouco de contexto sobre o CBC e a crypto-policy padrão do RHEL 8.
No nível operacional, a maioria das empresas já passou por situações em que há um sistema com configurações complexas, e as informações disponíveis para entender tudo isso ou são muitas, ou são poucas.
Por exemplo, você já se deparou com este tipo de declaração: "Seu servidor oferece suporte a cifras do CBC, que são vulneráveis e não mais recomendadas"? Isso levanta questões relacionadas à proteção contra novas vulnerabilidades, levando você a reportar quanto antes e corrigir os sistemas afetados no seu panorama.
Quais ferramentas você usará nisso? Quais verificações serão feitas? Você configurou o sistema corretamente? Os servidores estão livres de vulnerabilidades conhecidas?
A boa notícia é que as respostas para essas perguntas são as tecnologias disponíveis no RHEL 8. Com elas, é possível melhorar a eficiência operacional, além de aumentar a confiança nas ferramentas de política de criptografia e o entendimento sobre elas.
Análise do problema
Vamos voltar um pouco e analisar o problema em questão com a ajuda desta página da Wikipédia.
Ela diz que o CBC é um das várias maneiras de usar uma cifra de bloco: o elemento responsável por executar a operação XOR no bloco de texto criptografado atual com o bloco anterior antes de fazer a criptografia. A página também afirma que o CBC é o modo de operação mais usado e um dos dois métodos de cifra de bloco recomendados por Niels Ferguson e Bruce Schneier.
Além disso, a página afirma que o CBC foi inventado em 1976, indicando que ele pode estar desatualizado e desprotegido. No entanto, ser antigo não quer dizer necessariamente que não é seguro. A troca de chaves de Diffie-Hellman também aconteceu em 1976, e ainda é muito usada e considerada segura.
Na verdade, todas essas informações não ajudam a entender do que se trata a situação. É muito provável que toda essa investigação tenha começado com um alerta produzido por um verificador automatizado de vulnerabilidades, avisando que o servidor OpenSSH estava querendo usar modos de cifra do CBC e citando a CVE-2008-5161 como o motivo. Talvez isto também tenha sido usado como referência ou algum outro documento igualmente enigmático. Frases como esta podem ser reconfortantes: "Portanto, é muito improvável que uma sessão interativa seja atacada usando essa fragilidade do protocolo: um invasor precisaria executar cerca de 11.356 tentativas de interrupção da conexão antes de ter uma chance de sucesso". No entanto, será que isso significa que esse problema de segurança que tem décadas de existência não foi solucionado no RHEL?
Felizmente, a Red Hat trabalha proativamente para monitorar e mitigar as vulnerabilidades nas nossas soluções. Na verdade, a página do NIST sobre o CVE-2008-5161 mencionada acima inclui uma declaração da Red Hat exibida em destaque, afirmando que o problema foi corrigido a partir do RHEL 5. A Red Hat também oferece uma solução alternativa para desabilitar as cifras do CBC na configuração sshd.
Esse artigo também esclarece que a mitigação em questão aplicava patches upstream, reduzindo ainda mais a probabilidade de êxito do ataque. Um verificador de vulnerabilidades não sabe desse tipo de informação. De fato, ele verifica a presença de versões específicas dos pacotes, faz a combinação delas com as versões impactadas conhecidas e relata a descoberta. Essas ferramentas não são perfeitas e não conseguem detectar a presença de mitigações.
Quando há dúvidas sobre a segurança de um algoritmo específico, por que não ir um pouco além e fazer a desativação completa dele? Porque é necessário encontrar um equilíbrio entre essas alterações e as questões de compatibilidade.
As cifras do CBC podem ser a única linguagem comum a ser usada quando se trata da interoperabilidade com servidores e clientes SSH mais antigos, e o equilíbrio entre padrões mais seguros e a compatibilidade fica a cargo dos criadores da distribuição.
Por exemplo, o Fedora 33 desativa as cifras do CBC no uso com o SSH, conforme mostrado neste upstream de solicitação de mesclagem. Já o RHEL 8, uma distribuição empresarial lançada um ano antes, mantém as cifras ativadas por padrão. Isso ocorre por conta das mitigações disponíveis e da compatibilidade, conforme mostrado neste bugzilla: 1818103 – SSH Server CBC Mode Ciphers Enabled in RHCOS.
É importante equilibrar os padrões, mas eles foram criados para serem alterados. O caso de cada usuário é único, e cabe a eles tomarem as decisões que considerarem adequadas. Para atender a essa necessidade, o RHEL 8 agora conta com um novo mecanismo centralizado para desativar/ativar o uso de algoritmos criptográficos: as crypto-policies. Vamos aproveitar esta uma oportunidade para ver como usar as crypto-policies para desativar as cifras do CBC.
Configuração e funcionalidades relacionadas às crypto-policies do RHEL 8
Confira a política padrão do RHEL 8 para ter uma ideia melhor da situação:
sudo less /usr/share/crypto-policies/policies/DEFAULT.pol
# A reasonable default for today's standards. It should provide
# 112-bit security with the exception of SHA1 signatures needed for DNSSec
# and other still prevalent legacy use of SHA1 signatures.
Há outras políticas que podem ser definidas no RHEL 8 para atender a mais requisitos de segurança relacionados às crypto-policies:
FIPS.pol: usa apenas o algoritmo FIPS aprovado.
FUTURE.pol: oferece segurança em um grau razoável que poderá resistir a ataques futuros a curto prazo.
LEGACY.pol: viabiliza configurações para assegurar o máximo de compatibilidade com sistemas legados.
Você também tem flexibilidade para modificar tudo isso definindo subpolíticas, além de criar suas próprias políticas do zero. Já publicamos um post no Blog da Red Hat que apresenta a ferramenta update-crypto-policies, as funcionalidades dela e uma explicação sobre seu uso.
Há outra documentação importante sobre o RHEL 8 relacionada ao assunto: Como usar políticas criptográficas em todo o sistema no Red Hat Enterprise Linux 8.
Como configurar a crypto-policy do RHEL 8 para remover o CBC
Voltando ao nosso problema inicial, imagine que o auditor apresenta mais fatos complementares. A ferramenta de avaliação de vulnerabilidades relatou o problema: "Vulnerability Name: SSH CBC Mode Ciphers Enabled, Description: CBC Mode Ciphers are enabled on the SSH Server".
É preciso fazer uma distinção. Com base nos comentários que encontramos online, há muitas pessoas que afirmam ter conseguido configurar seus sistemas para corrigir o problema após a realização bem-sucedida de uma verificação de vulnerabilidades. Na prática, elas configuram o processo sshd para não usar as cifras relacionadas ao CBC. Há até mesmo algumas instruções sobre como aplicar esse tipo de solução alternativa.
Isso serve apenas para o processo sshd, e não para todo o servidor. Ou seja, a solução é no nível do processo, e não do sistema. Em outras palavras, embora a verificação no modo CBC do SSH seja bem-sucedida, algumas cifras ainda ficariam no servidor. Uma prática recomendada é realizar a alteração no nível do sistema, o que é exatamente o que a ferramenta update-crypto-policies consegue fazer.
Primeiro, veja a crypto-policy em uso no servidor do RHEL 8:
update-crypto-policies --show
DEFAULT
Como estabelecemos que o RHEL 8 está usando a crypto-policy DEFAULT, podemos tentar encontrar as cifras relacionadas ao CBC em /usr/share/crypto-policies/policies/DEFAULT.pol.
tls_cipher = ... AES-256-CBC ...AES-128-CBC
cipher = ... AES-256-CBC CAMELLIA-256-CBC AES-128-CBC CAMELLIA-128-CBC
(As cifras não relacionadas foram removidas para facilitar o entendimento.)
Há seis cifras relacionadas ao CBC usadas na política DEFAULT.
É aí que as coisas ficam complicadas. No momento em que criamos o código, não havia arquivos de política mostrando exemplos de uma configuração de crypto-policy extra ssh_cipher. Ela é mencionado na página do manual: man crypto-policies (... ssh_cipher: Optional; list of allowed symmetric encryption algorithms (including the modes) for use with the SSH protocol. If absent, the value is derived from cipher...).
O ssh_cipher existe e, mesmo que não esteja explicitamente visível na política DEFAULT, ele deve ser excluído da subpolítica para remover de fato todas as cifras relacionadas ao CBC.
Podemos criar uma subpolítica que modifique a política DEFAULT usada. Para fazer isso, você precisa criar um arquivo de subpolítica:
/etc/crypto-policies/policies/modules/DISABLE-CBC.pmodObservação: é importante considerar a convenção de nomenclatura. Use letras maiúsculas para o nome da subpolítica e .pmod em minúsculas para o nome da extensão.
O arquivo precisa incluir as modificações que queremos fazer na política DEFAULT.
Para remover do servidor as cifras do CBC modificando o perfil DEFAULT, é necessário adicionar o seguinte:
tls_cipher = -AES-256-CBC -AES-128-CBC
cipher = -AES-128-CBC -AES-256-CBC -CAMELLIA-256-CBC -CAMELLIA-128-CBC
ssh_cipher = -AES-128-CBC -AES-256-CBC
Para remover do servidor o algoritmo do CBC considerando apenas o sshd:
ssh_cipher = -AES-128-CBC -AES-256-CBC
Observação: em relação ao ssh_cipher, como não há exemplos, podemos supor que o valor é o seguinte:
ssh_cipher = -AES-128-CBC -AES-256-CBC -CAMELLIA-256-CBC -CAMELLIA-128-CBCNa verdade, os valores de -CAMELLIA não são especificados porque eles não parecem ser realmente anunciados ou usados pelo sshd, conforme mostrado em: man sshd_config | grep -i cbc
3des-cbc
aes128-cbc
aes192-cbc
aes256-cbc )
3des-cbc também não é anunciado no servidor do RHEL 8.2, conforme mostrado em ssh -vv e "Their offer": aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes128-gcm@openssh.com,aes128-ctr).
É necessário configurar a subpolítica com a configuração de remoção das cifras do CBC:
sudo update-crypto-policies --set DEFAULT:DISABLE-CBCConfira um exemplo definido corretamente:
sudo update-crypto-policies --show
DEFAULT:DISABLE-CBC
Agora, é preciso reinicializar o servidor para a política e a subpolítica entrarem em vigor.
Neste ponto, não deve haver nenhuma cifra do CBC sendo usada pelo servidor. Uma maneira fácil de verificar é consultar o sshd executando este comando no servidor do RHEL 8:
ssh -vv -oCiphers=aes128-cbc,aes256-cbc 127.0.0.1 O comando precisa mostrar as informações de login, e o usuário deve conseguir se conectar usando credenciais válidas.
Quando não há cifra do CBC para o sshd, o seguinte é mostrado:
Unable to negotiate with 127.0.0.1 port 22: no matching cipher found. Depois, o processo sshd exibe quais cifras esse servidor oferece. Por exemplo: “Their offer: aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes128-gcm@openssh.com,aes128-ctr”
Resumo
Neste post, você aprendeu a configurar um servidor do RHEL 8 para manter a conformidade com um determinado requisito de políticas de criptografia. Mostramos como remover cifras relacionadas ao CBC de um servidor após validar as medidas de segurança. Usamos ferramentas como update-crypto-policies para atender a alguns requisitos de conformidade de segurança de maneira razoável no nível do servidor, em vez de precisar agir em relação a cada componente.
Sobre o autor
Jean-Sébastien Tougne has more than 14 years of experience as an engineer in DTV, Oil and Gas, Computer Systems and Finance industries. He is currently a Red Hat consultant.
Mais como este
Implementing best practices: Controlled network environment for Ray clusters in Red Hat OpenShift AI 3.0
Friday Five — December 12, 2025 | Red Hat
Technically Speaking | Platform engineering for AI agents
Technically Speaking | Driving healthcare discoveries with AI
Navegue por canal
Automação
Últimas novidades em automação de TI para empresas de tecnologia, equipes e ambientes
Inteligência artificial
Descubra as atualizações nas plataformas que proporcionam aos clientes executar suas cargas de trabalho de IA em qualquer ambiente
Nuvem híbrida aberta
Veja como construímos um futuro mais flexível com a nuvem híbrida
Segurança
Veja as últimas novidades sobre como reduzimos riscos em ambientes e tecnologias
Edge computing
Saiba quais são as atualizações nas plataformas que simplificam as operações na borda
Infraestrutura
Saiba o que há de mais recente na plataforma Linux empresarial líder mundial
Aplicações
Conheça nossas soluções desenvolvidas para ajudar você a superar os desafios mais complexos de aplicações
Virtualização
O futuro da virtualização empresarial para suas cargas de trabalho on-premise ou na nuvem