Capítulo 3. Atualizações de Segurança

Conforme as vulnerabilidades de segurança são descobertas, o software deve ser atualizado para limitar os riscos de segurança em potencial. Se o software é parte de um pacote de uma distribuição do Red Hat Linux atualmente suportada, a Red Hat, Inc. está comprometida em lançar pacotes atualizados que consertem as vulnerabilidades assim que possível. Frequentemente, os comunicados de um exploit de segurança são acompanhados de um conserto (ou código-fonte que conserte o problema). Este conserto é então aplicado ao pacote do Red Hat Linux, testado pela equipe de controle de qualidade da Red Hat e lançado como uma atualização de errata. Entretanto, se o comunicado não inclui um conserto, um desenvolvedor da Red Hat Linux trabalhará juntamente ao mantenedor do software para consertar o problema. Após consertar o problema, o pacote é testado e lançado como uma atualização de errata.

Se for lançada uma atualização de errata para um software utilizado em seu sistema, é altamente recomendável que você atualize os pacotes afetados assim que possível, para mininmizar o tempo em que seu sistema está potencialmente vulnerável.

3.1. Atualizando Pacotes

Ao atualizar o software de um sistema, é importante fazer o download da atualização de uma fonte confiável. Um atacante pode reconstruir facilmente um pacote com a mesma versão daquele que supostamente resolverá o problema, mas com um exploit de segurança diferente no pacote, e depois lançá-lo na Internet. Se isto acontecer, usar medidas de segurança, como checar os arquivos com o RPM original, não detectará o exploit. Portanto, é muito importante que você apenas faça o download de RPMs de fontes confiáveis, tais como Red Hat, Inc., e cheque a assinatura do pacote para verificar sua integridade.

A Red Hat oferece duas maneiras de recuperar atualizações de erratas de segurança:

  1. Fazer o download pela Red Hat Network.

  2. Fazer o download do site de Erratas da Red Hat.

3.1.1. Usando a Red Hat Network

A Red Hat Network permite que você automatize a maior parte do processo de atualização. Ela determina quais pacotes são necessários para seu sistema, faz o download destes a partir de uma fonte segura, verifica a assinatura RPM, para assegurar que os pacotes não foram corrompidos, e os atualiza. A instalação do pacote pode ser feita imediatamente ou pode ser agendada durante um determinado período de tempo.

A Red Hat Network requer um Perfil do Sistema para cada máquina a ser atualizada. O Perfil do Sistema contém informações de hardware e software do sistema. Essa informação é mantida confidencialmente e não é distribuída para ninguém. É usada somente para determinar quais atualizações de errata são aplicáveis para cada sistema. Sem o perfil, a Red Hat Network não pode determinar se seu sistema precisa de atualizações. Quando uma errata de segurança (ou qualquer tipo de errata) é lançada, a Red Hat Network envia um email com a descrição da errata assim como quais sistemas são afetados por ela. Para aplicar a atualização, você pode usar o Agente de Atualizações Red Hat ou agendar a atualização do pacote pelo site http://rhn.redhat.com.

DicaDica
 

O Red Hat Enterprise Linux inclui o Ferramenta de Notificação de Alerta da Red Hat Network, um ícone conveniente do painel que exibe alertas quando há uma atualização para um sistema Red Hat Enterprise Linux. Consulte a seguinte URL para mais informações sobre o applet: http://rhn.redhat.com/help/basic/applet.html

Para saber mais sobre os benefícios da Red Hat Network, consulte o Guia de Referência da Red Hat Network (Red Hat Network Reference Guide) disponível em http://www.redhat.com/docs/manuals/RHNetwork/ ou visite http://rhn.redhat.com.

ImportanteImportante
 

Antes de instalar qualquer errata de segurança, certifique-se de ler todas as instruções especiais contidas no relatório da errata e executá-las. Consulte a Seção 3.1.3 para instruções gerais sobre como aplicar as alterações feitas por uma atualização de errata.

3.1.2. Usando o Site de Erratas da Red Hat

Quando relatórios de erratas de segurança são lançados, são publicados no site de Erratas da Red Hat Linux http://www.redhat.com/apps/support/errata/. A partir desta página, selecione o produto e versão de seu sistema e então selecione security no topo da página para exibir apenas os Relatórios de Segurança da Red Hat Enterprise Linux. Se a sinopse de um dos relatórios descreve um pacote usado em seu sistema, clique na sinopse para ver mais detalhes.

A página de detalhes descreve o exploit de segurança e quaisquer instruções especiais que devem ser executadas para atualizar o pacote e consertar o buraco na segurança.

Para fazer o download do(s) pacote(s) atualizado(s), clique no(s) nome(s) do(s) pacote(s) e salve-os no disco rígido. É altamente recomendável que você crie um novo diretório como /tmp/atualizações e salve todos os pacotes do download ali.

Todos os pacotes do Red Hat Enterprise Linux são assinados com a chave GPG da Red Hat, Inc.. O utilitário RPM do Red Hat Enterprise Linux tenta automaticamente verificar a assinatura GPG de um pacote RPM antes de instalá-lo. Se a chave GPG da Red Hat, Inc. não está instalada, instale-a a partir de uma localidade segura e estática, como um CD-ROM do Red Hat Enterprise Linux.

Assumindo que o CD-ROM esteja montado em /mnt/cdrom, use o seguinte comando para importá-la para o chaveiro:

rpm --import /mnt/cdrom/RPM-GPG-KEY

Para exibir uma lista com todas as chaves instaladas para verificação de RPM, execute o seguinte comando:

rpm -qa gpg-pubkey*

Para a chave da Red Hat, Inc., o output inclui o seguinte:

gpg-pubkey-db42a60e-37ea5438

Para exibir detalhes sobre uma chave específica, use o comando rpm -qi seguido do output do comando anterior, conforme o exemplo:

rpm -qi gpg-pubkey-db42a60e-37ea5438

É extremamente importante verificar a assinatura dos arquivos RPM antes de instalá-los. Este passo assegura que eles não foram alterados depois do lançamento dos pacotes pela Red Hat, Inc.. Para verificar todos os pacotes do download de uma só vez, submeta o seguinte comando:

rpm -K /tmp/updates/*.rpm

Se a verificação da chave GPG for bem-sucedida, o comando retorna o output gpg OK.

Após verificar as chaves GPG e fazer o download de todos os pacotes associados ao relatório da errata, instale os pacotes como root em uma janela de comandos.

Isto pode ser feito com segurança para a maioria dos pacotes (exceto pacotes do kernel), submetendo o seguinte comando:

rpm -Uvh /tmp/updates/*.rpm

Para pacotes do kernel, é recomendado usar o seguinte comando:

rpm -ivh /tmp/updates/<kernel-package>

No exemplo anterior, substitua <kernel-package> pelo nome do RPM do kernel.

Após reinicializar a máquina com segurança usando o novo kernel, o kernel antigo deve ser removido usando o seguinte comando:

rpm -e <old-kernel-package>

No exemplo anterior, substitua <old-kernel-package> pelo nome do RPM do kernel antigo.

NotaNota
 

Não é um requisito remover o kernel antigo.

ImportanteImportante
 

Antes de instalar qualquer errata de segurança, certifique-se de ler todas as instruções especiais contidas no relatório da errata e executá-las. Consulte a Seção 3.1.3 para instruções gerais sobre como aplicar as alterações feitas por uma atualização de errata.

3.1.3. Aplicando as Alterações

Após fazer o download e instalar as erratas de segurança através da Red Hat Network ou do site de erratas da Red Hat, é importante parar de usar o software antigo e passar a usar o novo. O modo como isso é feito depende do tipo de software que foi atualizado. A lista a seguir aponta as categorias gerais de software e oferece instruções para usar as versões atualizadas após uma atualização de pacotes.

NotaNota
 

Em geral, reinicializar o sistema é a maneira mais certa de garantir que a versão mais recente de um pacote de software é usada; entretanto, esta opção nem sempre está disponível ao administrador de sistemas.

Aplicações

Aplicações em espaço de usuário (user-space) são quaisquer programas que podem ser iniciados por um usuário do sistema. Geralmente, estas aplicações são usadas somente quando um usuário, um script ou uma funcionalidade de tarefa automatizada as lança, e não persistem por longos períodos.

Após uma aplicação em espaço de usuário ser atualizada, pare todas as instâncias da aplicação no sistema e lance o programa novamente a fim de usar a versão atualizada.

Kernel

O kernel é o componente central do software do sistema operacional Red Hat Enterprise Linux. Ele gerencia o acesso à memória, ao processador e periféricos e também agenda todas as tarefas.

Devido sua função central, o kernel não pode ser reiniciado sem também parar o computador. Portanto, uma versão atualizada do kernel não pode ser usada até que o sistema seja reinicializado.

Bibliotecas Compartilhadas

Bibliotecas compartilhadas são unidades de código, como a glibc, que são usadas por diversas aplicações e serviços. As aplicações que utilizam uma biblioteca compartilhada geralmente carregam o código compartilhado quando a aplicação é iniciada, portanto todas as aplicações que usam a biblioteca compartilhada devem ser paradas e relançadas.

Para determinar quais aplicações estão relacionadas a uma biblioteca, use o comando lsof, conforme o exemplo a seguir:

lsof /usr/lib/libwrap.so*

Este comando retorna uma lista de todos os programas sendo executados, que usam TCP wrappers para controle de acesso à máquina. Portanto, quaisquer programas listados devem ser parados e relançados se o pacote tcp_wrappers for atualizado.

Serviços SysV

Serviços SysV são programas de servidor persistentes lançados durante o processo de inicialização. Exemplos de serviços SysV incluem sshd, vsftpd e xinetd.

Como estes programas geralmente persistem na memória enquanto a máquina é reinicializada, cada serviço SysV atualizado deve ser parado e relançado após o upgrade do pacote. Isto pode ser feito usando a Ferramenta de Configuração dos Serviços ou se autenticando a uma janela de comandos root e submetendo o comando /sbin/service como no exemplo seguinte:

/sbin/service <service-name> restart

No exemplo anterior, substitua <service-name> pelo nome do serviço, como sshd.

Consulte o capítulo intitulado Controlando Acesso aos Serviços no Guia de Administração de Sistemas do Red Hat Enterprise Linux para mais informações sobre a Ferramenta de Configuração dos Serviços.

Serviços xinetd

Os serviços controlados pelo super serviço xinetd rodam somente quando há uma conexão ativa. Exemplos de serviços controlados pelo xinetd incluem Telnet, IMAP ePOP3.

Como novas instâncias destes serviços são lançadas pelo xinetd cada vez que um novo pedido é recebido, as conexões que ocorrem depois de um upgrade são feitas pelo software atualizado. No entanto, se há conexões ativas no momento em que o serviço controlado xinetd é atualizado, elas são feitas pela versão antiga do software.

Para eliminar instâncias antigas de um serviço controlado xinetd em particular, faça o upgrade do pacote do serviço e então pare todos os processos sendo executados. Primeiro, determine se o processo está rodando, usando o comando ps e então use o comando kill ou killall para parar as instâncias atuais do serviço.

Por exemplo: se os pacotes da errata de segurança imap são lançados, faça o upgrade dos pacotes e então digite o seguinte comando como root em uma janela de comandos:

ps -aux | grep imap

Este comando retorna todas as sessões IMAP ativas. As sessões individiuais podem então ser terminadas com o seguinte comando:

kill -9 <PID>

No exemplo anterioor, substitua <PID> pelo número de identificação do processo de uma sessão IMAP.

Para terminar todas as sessões IMAP ativas, submeta o seguinte comando:

killall imapd

Consulte o capítulo intitulado TCP Wrappers e xinetd no Guia de Referência do Red Hat Enterprise Linux para informações gerais sobre o xinetd.