Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: kurumin-emu
Por humbhenri
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha


Dica

Utilizando o RPM como ferramenta de recovery e auditoria
Linux user
Publicado por Marcelo Moreira de Mello em 19/10/2009

Login: tchello.mello, 81143 pontos | Blog: http://tchellomello.blogspot.com
[ Hits: 2550 ]

Utilizando o RPM como ferramenta de recovery e auditoria

Olá pessoal,

Hoje pretendo demonstrar como podemos utilizar o sistema RPM para recuperarmos permissões de arquivos e verificarmos quando um arquivo ou binário foi alterado no sistema.

O RPM (Red Hat Package Manager) é uma ferramenta poderosa que nos permite não só instalar ou remover softwares, mas também verificar o estado de cada arquivo do sistema que foi oferecido por pacotes RPM. Quem nunca acidentalmente executou um "chmod 777 -R /" ou até mesmo um "chown nobody:nobody -R /"?!?! (é... esse eu peguei pesado, mas vale como exemplo :P). Ou até mesmo se perguntou: será que o binário /bin/ls foi alterado no servidor de produção!?!

Podemos verificar as situações colocadas acima utilizando o comando RPM com parâmetro --verify (V), que consiste em pesquisar no banco de dados do rpm (/var/lib/rpm) quais arquivos foram modificados desde a instalação do pacote.

Se quiséssemos verificar se o binário /bin/ls foi alterado em nosso sistema, a primeira informação que precisamos adquirir será saber qual o pacote RPM que ofereceu o binário /bin/ls. Para isso, podemos:

# rpm -qf /bin/ls
coreutils-5.97-12.1.el5

Uma vez descoberto o pacote de origem do binário, podemos verificar se todos os arquivos oferecidos pelo pacote coreutils foram alterados desde a sua instalação na máquina:

# rpm -V coreutils
#


A saída do comando acima nos mostrou que nenhum binário foi alterado no sistema desde a sua instalação. O que faremos agora é forçar um erro, isto é, substituir algum binário que foi instalado pelo pacote coreutils e fazer a verificação novamente.

# cp /bin/date /bin/ls
cp: overwrite `/bin/ls'? y
# ls
Sat Oct 17 11:23:07 BRT 2009

Pronto! Substituímos o binário /bin/ls pelo comando /bin/date e agora refaremos a checagem através do RPM.

# rpm -V coreutils
S.5....T /bin/ls

A saída do comando nos mostrou que o Size (S), o MD5 (5) e o Timestamp (T) foram alterados no binário /bin/ls desde a instalação. Podemos concluir se o MD5 do binário esta diferente logo o binário foi alterado. Para corrigirmos, teremos que reinstalar o RPM no sistema.

# rpm -ivh coreutils-5.97-12.1.el5.i386.rpm --replacepkgs
warning: coreutils-5.97-12.1.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...                ########################################### [100%]
   1:coreutils              ########################################### [100%]
# ls

anaconda-ks.cfg

install.log

coreutils-5.97-12.1.el5.i386.rpm

install.log.syslog
# rpm -V coreutils #

Se quiséssemos realizar uma checagem em todo os arquivos do sistema, poderíamos executar o comando "rpm -Va". Esse recurso também é interessante para controlarmos mudanças em arquivos texto e gerenciarmos permissões e proprietários de arquivos.

Primeiro verificaremos qual pacote RPM oferece o arquivo /etc/inittab e checaremos se o arquivo foi alterado desde a instalação do pacote.

# rpm -qf /etc/inittab
initscripts-8.45.17.EL
# rpm -V initscripts
..5....T c /etc/inittab
S.5....T c /etc/rc.d/rc.local

Como podemos ver acima, o arquivo /etc/inittab teve o conteúdo alterado 5(MD5) e o T(Timestamp) e o arquivo /etc/rc.d/rc.local além do conteúdo, o tamanho também foi alterado.

Poderíamos piorar a situação fazendo o seguinte:

# ls -la /etc/inittab
-rw-r--r-- 1 root root 1666 Oct 17 09:41 /etc/inittab
# chmod 777 /etc/inittab
# chown nobody:nobody /etc/inittab
# ls -la /etc/inittab

-rwxrwxrwx 1 nobody nobody 1666 Oct 17 09:41 /etc/inittab

Se consultarmos agora, veremos que as permissões do arquivo foram alteradas M(Mode), bem como o proprietário U(User) e grupo G(Group).

# rpm -V initscripts
.M5..UGT c /etc/inittab
S.5....T c /etc/rc.d/rc.local

Podemos usar o RPM para recuperar as permissões e proprietários dos arquivos chamando as opções --setperms e --setugids respectivamente.

# rpm -q initscripts --setperms
# ls -la /etc/inittab

-rw-r--r-- 1 nobody nobody 1666 Oct 17 09:41 /etc/inittab
# rpm -V initscripts
..5..UGT c /etc/inittab
S.5....T c /etc/rc.d/rc.local
# rpm -q initscripts --setugids
# ls -la /etc/inittab

-rw-r--r-- 1 root root 1666 Oct 17 09:41 /etc/inittab
# rpm -V initscripts
..5....T c /etc/inittab
S.5....T c /etc/rc.d/rc.local

Como podemos ver, o RPM restaurou as permissões e proprietários originais do arquivo. Isto é, se um dia algum administrador descuidado executar "chmod 777 -R /", você poderia executar o comando "rpm -qa --setperms" para recuperar todos os arquivos que originalmente foram criados por pacotes RPM.

Para maiores informações: http://tchellomello.blogspot.com

Acho que era isso aí.. ;)
Abraços.


Outras dicas deste autor

Leitura recomendada
   Dica Linux recomendada Permissões e privilégios no Linux
   Dica Linux recomendada Samba, saiba para que serve essa grande ferramenta do Linux
   Dica Linux recomendada Driver VIA UniChrome Pro IGP - Ubuntu 8.x Linux
   Dica Linux recomendada Gigolo: alternativa para montar shares do Samba
   Dica Linux recomendada Busca rápida por arquivos no Linux

Comentários
Nenhum comentário foi encontrado.

Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.