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

Conforme as vulnerabilidades de segurança são descobertas, o software afetado deve ser atualizado para limitar os potenciais riscos de segurança. Se o software é parte de um pacote de uma distribuição do Red Hat Enterprise 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 Red Hat Enterprise 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 trabalha 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 durante o qual 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 encontrar informações sobre as atualizações de errata:

  1. Listadas e disponíveis para download na Red Hat Network

  2. Listadas e não linkadas no site de Erratas da Red Hat

NotaNota
 

Começando pela linha de produtos Red Hat Enterprise Linux, os pacotes atualizados podem ser baixados somente pela Red Hat Network. Apesar do site de Erratas da Red Hat conter informações atualizadas, não contém os pacotes para download.

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. Essas informações são mantidas confidenciais e não são distribuídas a ninguém. São usadas 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 um 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 a Ferramenta de Notificação de Alerta da Red Hat Network, um ícone conveniente no painel que exibe alertas quando há uma atualização para um sistema Red Hat Enterprise Linux registrado. 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.5 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 os relatórios de erratas de segurança são lançados, são publicados no site de Erratas da Red Hat http://www.redhat.com/security/. 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 a brecha na segurança.

Para fazer o download do(s) pacote(s) atualizado(s), clique no link para se logar na Red Hat Network, depois 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 baixados ali.

3.1.3. Verificando Pacotes Assinados

Todos os pacotes do Red Hat Enterprise Linux são assinados com a chave GPG da Red Hat, Inc.. GPG significa GNU Privacy Guard, ou GnuPG, um pacote de software livre usado para garantir a autenticidade dos arquivos distribuídos. Por exemplo: uma chave privada (chave secreta) mantida pela Red Hat tranca o pacote enquanto a chave pública o destranca e o verifica. Se a chave pública distribuída pela Red Hat não bate com a chave privada durante a verificação RPM, o pacote pode ter sido alterado e, portanto, não é confiável.

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 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 (um banco de dados do sistema com chaves confiáveis):

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, 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 chave GPG for verificada com sucesso, o comando retorna gpg OK para cada pacote. Caso contrário, certifique-se de usar a chave pública correta da Red Hat, assim como verificar a fonte do conteúdo. Os pacotes que não passarem na verificação GPG não devem ser instalados, pois podem ter sido alterados por terceiros.

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.

3.1.4. Instalando Pacotes Assinados

A instalação da maioria dos pacotes pode ser feita com segurança (exceto pacotes do kernel), submetendo o seguinte comando:

rpm -Uvh /tmp/updates/*.rpm

Para pacotes do kernel, use 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 é necessário remover o kernel antigo. O gestor de início default, GRUB, permite a instalação de kernels múltiplos, dos quais escolhemos um no menu de inicialização da máquina.

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.5 para instruções gerais sobre como aplicar as alterações feitas por uma atualização de errata.

3.1.5. 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 um utilitário 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 determinada 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 persistentes de servidor 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 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 e POP3.

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 terminar instâncias antigas de um serviço em particular controlado pelo xinetd, 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 anterior, substitua <PID> pelo número de identificação do processo (encontrado na segunda coluna do comando ps) 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.