Há mais ou menos um ano,



Documentos relacionados
Instalando o Debian em modo texto

Aloque 1024 MB de RAM para a VM. Crie um novo disco virtual. Figura 03. Figura 04.

Aula 02. Introdução ao Linux

Roteiro 3: Sistemas Linux arquivos e diretórios

Organização do Curso. Instalação e Configuração. Módulo II. Pós Graduação em Projeto e Gerencia de Redes de Computadores

Recuperando o GRUB após instalação do Windows

Tutorial de instalação do Debian Rudson Ribeiro Alves

Google Drive. Passos. Configurando o Google Drive

SAIBA MAIS SOBRE O LINUX E DESCUBRA QUAL DISTRIBUIÇÃO É MELHOR PARA VOCÊ! CURSO

UM PBX GENUINAMENTE BRASILEIRO

Sistema Operacional Unidade 12 Comandos de Rede e Acesso Remoto

Operador de Computador. Informática Básica

SISTEMAS OPERACIONAIS LIVRES. Professor Carlos Muniz

Lazarus pelo SVN Linux/Windows

Tutorial - Monitorando a Temperatura de Servidores Windows

UM PBX GENUINAMENTE BRASILEIRO MANUAL DE INSTALAÇÃO COM IMAGEM ISO

SIMULADO DE INFORMÁTICA BÁSICA TÉCNICO DO MPU PROF. ALEXANDRE LÊNIN / PROF. JUNIOR MARTINS

FTIN Formação Técnica em Informática Módulo de Administração de Servidores de Rede AULA 03. Prof. Gabriel Silva

Sistemas Operacionais de Rede Linux - Gerenciamento de Arquivos

SOFTWARE LIVRE. Distribuições Live CD. Kernel. Distribuição Linux

HOW TO. Instalação do Firewall 6.1 Software

1 Instalando o VirtualBox no Windows

Guia Rápido de Instalação Ilustrado

Guia de instalação UEG Linux LTS

I N F O R M Á T I C A. Sistemas Operacionais Prof. Dr. Rogério Vargas Campus Itaqui-RS

TUTORIAL VMWARE WORKSTATION 8. Aprenda a instalar e configurar corretamente uma máquina virtual utilizando VMware Workstation com este tutorial

- Wireless e NTP - 272

LUCAS DA SILVA, LUCAS TUCHTENHAGEN, LUCAS NUNES HIREN S BOOT CD

LINX POSTOS AUTOSYSTEM

Online Help StruxureWare Data Center Expert

Manual de Instalação SNEP 3 Asterisk 13

Software Livre. Acesso ao código fonte Alterar o código fonte Redistribuir Utilizar como desejar

Manual. Clonagem Linux

CONFIGURAÇÃO DE REDE SISTEMA IDEAGRI - FAQ CONCEITOS GERAIS

No Fedora, instalamos os pacotes "mysql" e "mysql-server", usando o yum:

Guia de Prática. Windows 7 Ubuntu 12.04

ENDEREÇOS DE REDE PRIVADOS até até até Kernel

Lógica de Programação

Como instalar os recursos adicionais para convidados e acesso aos aplicativos

MANUAL DE INSTALAÇÃO 1) ORACLE VIRTUALBOX ; 2) MICROSOFT WINDOWS ; 3) SUMÁRIOS GENEPLUS.

Aula 4 Comandos Básicos Linux. Prof.: Roberto Franciscatto

HOW TO Procedimento para instalar Aker Firewall virtualizado no ESXi 5.0

Sistemas Operacionais

Google Drive: Acesse e organize seus arquivos

Construindo um Linux Parte 1 - Disk Boot Objetivo: Entender que o Linux é como um LEGO (Pode ser montado).

CSAU Guia: Manual do CSAU 10.0 como implementar e utilizar.

LICENCIAMENTO V14 USANDO REPRISE LICENSE MANAGER

STK (Start Kit DARUMA) Driver Genérico Somente Texto para a impressora DR700 ETHERNET

16:21:50. Introdução à Informática com Software Livre

No VirtualBox, carregar no Botão Novo (New), que irá abrir o Assistente de Criação de Máquina Virtual para criar uma nova VM.

OneDrive: saiba como usar a nuvem da Microsoft

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO

TUTORIAL PRÁTICO SOBRE Git. Versão 1.1

Como Configurar Catálogos de Correio Eletrônico com o MDaemon 6.0

Guia de Início Rápido

Acronis Backup & Recovery 10

6 programas para criar pendrives bootáveis

INTRODUÇÃO AO SISTEMA

Manual de Instalação do Agente Citsmart

Tutorial Instalação Dual Boot Ubuntu e Windows XP Virtualização com VirtualBox

Agente local Aranda GNU/Linux. [Manual Instalación] Todos los derechos reservados Aranda Software [1]

Omega Tecnologia Manual Omega Hosting

Manual comandos Básicos para instalar e desinstalar Firebird em Sistema operacional Linux

Sistema de Controle de Cheques GOLD

2 de maio de Remote Scan

22:59:36. Introdução à Informática com Software Livre

INSTALANDO O UBUNTU PELA IMAGEM ISO OU LIVE-USB DA UFV PASSO-A-PASSO.

Como incluir artigos:

Manual AGENDA DE BACKUP

Manual de backup do banco de dados PostgreSQL - Versão 2. Setembro-2011

TUTORIAL: MANTENDO O BANCO DE DADOS DE SEU SITE DENTRO DO DOMÍNIO DA USP USANDO O SSH!

VIRTUALIZAÇÃO CONVENCIONAL

Noções de. Microsoft SQL Server. Microsoft SQL Server

Digifort Mobile Manual Version 1.0 Rev. A

Instruções para Instalação dos Utilitários Intel

Entendendo como funciona o NAT

UDPcast Clonagem de HDs via rede utilizando

Resolvendo problemas de conexão de rede wireless no pregão 83/2008

INSTALAÇÃO DO CHEF FOODS NET

Sempre vejo ou leio um usuários iniciante "como é esse Linux? posso usar em casa? no trabalho? no meu notebook? " normalmente a resposta e "vai no

Instalação e configuração Linux CentOS 6.x

Professor: Macêdo Firmino Disciplina: Redes de Computadores II

V 1.0 LINAEDUCA - GUIA DE USO

Gerenciamento de Arquivos e Pastas. Professor: Jeferson Machado Cordini jmcordini@hotmail.com


Unidade 7: Panes no Excel

Dicas para usar melhor o Word 2007

GUIA MUDANÇA E FORMATAÇÃO DE SERVIDOR - MILLENNIUM

Manual Instalação, Configuração e Atualização FullCopyConvert Data FullCopyConvertService

MANUAL DE CONFIGURAÇÃO DO BACKUP


Curso de Informática Básica

GUIA DE CONFIGURAÇÃO CONEXÕES VPN SSL (CLIENT TO SERVER)

Manual de Instalação da leitora de SmartCard Teo by Xiring

Como Instalar Programas no GNU/Linux. Elexsandro Rangel dos Santos

Qlik Sense Desktop. Qlik Sense 1.1 Copyright QlikTech International AB. Todos os direitos reservados.

Guia de início rápido do Powersuite

AULA 06 CRIAÇÃO DE USUÁRIOS

Permissões de compartilhamento e NTFS - Parte 1

3. No painel da direita, dê um clique com o botão direito do mouse em qualquer espaço livre (área em branco).

Transcrição:

CAPA Exame de imagens de disco com libguestfs Exame minucioso A libguestfs oferece um conjunto poderoso de ferramentas para examinar imagens de discos em profundidade. por Richard W. M. Jones Eryk Klucinski sxc.hu Há mais ou menos um ano, a Red Hat enfrentou um problema com seu pacote de aplicativos de gerenciamento de virtualização. Seus usuários possuíam uma crescente coleção de imagens de disco de máquinas virtuais com muitos gigabytes, mas as ferramentas existentes para gerenciar esses arquivos imensos eram incrivelmente ruins. Os usuários precisavam se conectar a um dispositivo NAS (Network- Attached Storage) separado para fazer novas imagens de disco, o que tornava o preparo de máquinas virtuais Tabela 1: Ferramentas libguestfs virt-cat virt-install virt-rescue virt-clone virt-list-filesystems virt-resize virt-convert virt-list-partitions virt-tar virt-df virt-ls virt-top virt-edit virt-make-fs virt-viewer virt-image virt-manager virt-win-reg virt-inspector virt-pki-validate virt-xml-validate um processo com muitos passos e extremamente trabalhoso. O código do gerenciamento de armazenamento foi adicionado à biblioteca de virtualização libvirt, portanto, as ferramentas de gerenciamento atuais podem preparar tudo automaticamente. Mas, e quanto ao exame e ajuste de imagens de disco? Uma ferramenta chamada kpartx oferecia certa capacidade de modificar imagens de disco. Com uma conta de root, o kpartx, confiança e um pouco de sorte, era possível visualizar e ajustar imagens, mas essa opção possuía muitas ressalvas. Montar uma máquina virtual pouco confiável no host pode levar ao uso indevido do usuário root. Os problemas também aparecem quando o host falha. O kpartx também possuía uma difícil integração com scripts. Pessoalmente, acho essa uma situação totalmente inaceitável. Uma imagem de disco não é especial; é simplesmente um arquivo comum. Não é necessário executar um su para o root para abrir um documento de processador de texto, e o GIMP não precisa criar nódulos de dispositivos em /dev quando uma imagem é editada. A libguestfs [1] resolve esses problemas. É uma biblioteca segura que aceita scripts para acessar e editar imagens de disco sem a necessidade de acesso no nível de root. É também uma coleção de ferramentas úteis para desempenhar tarefas comuns, e vem com um shell interativo. As ferramentas incluídas com a libguestfs são direcionadas 36 http://www.linuxmagazine.com.br

libguestfs CAPA aos administradores. A biblioteca é para programadores e o shell é para quem faz hacks e scripts na linha de comando. Instalação da libguestfs Usuários do Fedora, do Red Hat Enterprise Linux (RHEL) e CentOS contam com o método mais fácil de instalação. No Fedora, é possível instalar a biblioteca, o shell e as ferramentas apenas com: # yum install \*guestf\* No RHEL 5, no CentOS e outros derivados do RHEL 5, é preciso instalar o repositório EPEL [2] e depois executar o comando anterior. O RHEL 6 já vem com a libguestfs. Os usuários do Debian e do Ubuntu podem conseguir algumas partes da libguestfs seguindo o link na página de FAQ da biblioteca [3]. Ainda há procura por mantenedores para o Ubuntu e outras distribuições. A libguestfs pode usar o KVM para aceleração de hardware. Para habilitar esse recurso, digite chmod 666 /dev/kvm (essa alteração não resiste a uma reinicialização, portanto, inclua esse comando em /etc/rc.local). As ferramentas Com a libguestfs instalada, já dá para ter uma ideia das ferramentas disponíveis (tabela 1), abrindo a console e digitando virt- seguido da tecla Tab (geralmente duas ou três vezes). Cada uma dessas ferramentas é totalmente documentada nas man pages (exemplo: man virt -df). A libguestfs inclui duas ferramentas de baixo nível: a guestfish, que oferece acesso total à API libguestfs, o que é muito útil para alteração de shell scripts e tarefas não realizadas por ferramentas de alto nível para administração de sistemas, enquanto que o guestmount monta uma imagem de disco em um diretório (figura 1). O conjunto de ferramentas libguestfs inclui também uma API para programadores, acessível com C, C++, Perl, Python, Ruby, OCaml, Java, Haskell e Mono (C#). Como o nome sugere, a ferramenta virt-df é o equivalente virtual do comando df. A execução desse comando mostra a utilização do disco de todas as máquinas virtuais com gerenciamento através da libvirt (é preciso estar logado como root para executar esse comando, a menos que as permissões tenham sido alteradas nos discos das máquinas virtuais para que usuários, que não sejam o root, possam lê-los). A saída do comando virt-df é mostrada na listagem 1. O virt-df pode ser usado em qualquer imagem de disco mais antiga, independentemente de acesso root (listagem 2). Para planejar e prever quando sua máquina virtual irá necessitar de mais espaço em disco, o virt-df é ótimo, particularmente porque é possível executá-lo com um cron job e orientar a saída para um formato CVS para importação direta em planilhas e bancos de dados. O que fazer com uma máquina virtual que começa a ultrapassar sua alocação de disco original? Utilize o utilitário virt-resize nela (listagem 3). Caso haja uma máquina virtual que não inicializa, é possível reparar arquivos na imagem manualmente através do virt-edit: # virsh list --all Id Name State - - Debian5x32 shut off - Windows7x3 shut off O comando: Listagem 1: Conferir a utilização do disco virt-edit Debian5x32 /boot/grub/ menu.lst 01 # virt-df 02 Filesystem 1K-blocks Used Available Use% 03 Debian5x32:home 04 2027920 35844 1889064 2% 05 Debian5x32:root 06 329233 81728 230507 25% 07 Debian5x32:tmp 08 170549 5663 156080 4% 09 Debian5x32:usr 10 2100444 298988 1694756 15% 11 Debian5x32:var 12 955480 202308 704636 22% 13 Debian5x32:/dev/vda1 233335 9546 211341 5% 14 Windows7x32:/dev/vda1 102396 24704 77692 25% 15 Windows7x32:/dev/vda2 8284156 7229712 1054444 88% Figura 1 É possível usar guestmount para montar uma imagem guest em um diretório. Nesse caso, o guestmount montou um sistema de arquivos Windows na máquina host, o que pode ser visto no Nautilus. Linux Magazine #70 Setembro de 2010 37

CAPA libguestfs Figura 2 Acessar o registro em um guest Windows com o auxílio do virt-win-reg. abre o arquivo no vi ou no $EDI- TOR. Outra opção para máquinas virtuais que não inicializam é usar o virt-rescue para obter um shell de recuperação, que funciona como um CD de recuperação. Não tente usar o virt-edit ou o virt-rescue em máquinas virtuais que estejam em funcionamento (quadro 1). O comando virt-cat oferece algumas opções simples para o monitoramento de máquinas virtuais, tais como averiguar eventos suspeitos nos arquivos de log. O script na listagem 4 Listagem 2: virt-df em uma imagem de disco usa o virt-cat para examinar contas de root de backdoor nas contas de visitantes do Linux. Guestfish Apesar de as ferramentas virt-* permitirem operações administrativas, o poder da API libguestfs só está disponível através do guestfish, o shell interativo do sistema de arquivo guest. O guestfish possui quase 300 comandos, e os leitores ficarão felizes em saber que só posso falar de alguns dos mais comuns neste artigo. 01 $ virt-df -h ~/disk.img 02 Filesystem Size Used Available Use% 03 /home/rjones/disk.img:/dev/vda1193.7m 21.6M 162.1M 12% 04 /home/rjones/disk.img:/dev/vg_f12x32/lv_root 05 5.2G 2.3G 2.6G 45% Listagem 3: virt-resize 01 $ truncate -s 10G ~/enlarged.img 02 $ virt-resize ~/disk.img ~/enlarged.img--expand /dev/sda2 03 Summary of changes: 04 /dev/sda1: partition will be left alone 05 /dev/sda2: partition will be resized from 5.8G to 9.8G 06 /dev/sda2: content will be expanded using the pvresize method Quadro 1: Atenção Nunca use a libguestfs ou suas ferramentas no modo leitura/escrita em uma imagem de máquina virtual que esteja em execução. O resultado será certamente a corrupção do disco (as ferramentas tentam evitar que se acesse uma máquina virtual sendo executada, mas em alguns casos não conseguem detectar o problema). Muitas ferramentas possuem uma flag --ro (read only), e o uso dessa flag é seguro, mesmo em máquinas virtuais ativas. Essa flag é um bom modo de se obter informações sobre o estado de suas máquinas virtuais. Algumas ferramentas não precisam de acesso de leitura/escrita e apenas abrem imagens no modo somente leitura, por isso não precisam de uma flag especial: se houver dúvidas, confira a documentação. É possível iniciar o guestfish em uma imagem de disco já existente ou, se preferir, criar uma nova imagem de disco desde o início. A definição de imagem de disco inclui disco rígido raw, CD ISOs, VFDs (floppy virtual), formatos de compactação como o qcow2, cartões SD e até sistemas de arquivos o guestfish pode ler todos eles e pode escrever em quase todos. Para iniciar o shell do guestfish, digite guestfish. Para criar uma imagem de disco de 100 megabytes, digite: ><fs> sparse test.img 100M ><fs> run Então, faça uma partição e crie um sistema de arquivos: ><fs> part-disk /dev/sda mbr ><fs> mkfs ext2 /dev/sda1 Para criação de um sistema de arquivos veja a listagem 5. O /dev/sda não se refere ao host. No guestfish, isso significa o primeiro disco anexado (test.img nesse caso). Se essa imagem de disco for montada em uma máquina virtual, a máquina virtual verá um sistema de arquivos ext2 em uma partição contendo o artigo. Para extrair o conteúdo, use o comando cat do guestfish: $ guestfish --ro -a test.img -m / dev/sda1 cat /article.txt A flag a adiciona a imagem do disco, e a flag m (mount) informa a localização do sistema de arquivos dentro da imagem ao guestfish. Além disso, é possível usar o guestfish para examinar seus guests gerenciados pela libvirt. Isso é um pouco mais complexo para os autores do libguestfs, mas não para o usuário. Uma imagem de disco é apenas uma imagem de disco, mas uma máquina virtual sendo executada monta 38 http://www.linuxmagazine.com.br

libguestfs CAPA sistemas de arquivos da imagem de disco de acordo com suas convenções, tais como montar /dev/sda1 em /boot e /dev/vg/lv_var em /var, ou /dev/sda2 como C:\ no Windows. Como saber como montá-los? A libguestfs contém uma ferramenta chamada virt-inspector que resolve esse mapeamento com o uso de um conjunto de regras e heurística. Tudo que o usuário precisa fazer é fornecer a flag -i (Inspector) para que o guestfish desempenhe uma função similar (listagem 6). Para saber quanto espaço (em kilobytes) está sendo usado por /var/log, digite du /var/log. Para descobrir a conta de root no arquivo de senhas, digite grep ^root: /etc/passwd. Para listar partições e volumes lógicos, use ><fs> list-partitions /dev/vda1 /dev/vda2 ><fs> lvs home root swap_1 e para descobrir o que há nelas, use ><fs> vfs-type /dev/debian5x32. home.annexia.org/swap_1 swap><fs> file /dev/debian5x32. home.annexia.org/swap_1 Linux/i386 swap file (new style) 1 (4K pages) size 89087 pages Para copiar os diretórios de /home para um arquivo TAR local, digite: ><fs> tgz-out /home /tmp/home. tar.gz Com o editor de configuração Augeas [4], é possível analisar o arquivo de configuração APT de um guest Debian. Repare que /files é o Listagem 4: Procurando contas root 01 #!/bin/sh - 02 # Get list of guests from libvirt. 03 guests=$( 04 virsh list --all tail -n+3 head -n-1 05 awk '{print $2}' 06 ) 07 for n in $guests; do 08 virt-cat $n /etc/passwd 09 awk -F: '$1!= "root" && $3 == 0 { 10 print "BACKDOOR ACCOUNT FOUND:", $1 11 }' 12 done prefixo usado pelo Augeas para checar arquivos de configuração; não há relação nenhuma com a biblioteca libguestfs: ><fs> aug-init / 0 ><fs> aug-get /files/etc/apt/ sources.list/1/uri http://ftp.uk.debian.org/debian/ ><fs> aug-get /files/etc/apt/ sources.list/1/distribution lenny A libguestfs tem um bom suporte para guests Windows também. Assim como com um guest Linux, é possível montar e examinar um guest Windows: # guestfish --ro -i Windows7x32 ><fs> ls /Windows/System32/drivers head -5 1394bus.sys 1394ohci.sys AGP440.sys AMDAGP.SYS BrFiltLo.sys A figura 2 mostra como ler e escrever entradas de registro nos guests Listagem 5: Artigo para ser enviado ao sistema de arquivos 01 ><fs> mount /dev/sda1 / 02 ><fs> upload article.txt /article.txt 03 ><fs> ll / 04 total 20 05 drwxr-xr-x 3 root root 1024 Apr 15 13:54. 06 dr-xr-xr-x 19 root root 0 Apr 12 22:09.. 07 -rw-r--r-- 1 root root 7028 Apr 15 13:54 article.txt 08 drwx 2 root root 12288 Apr 15 13:54 lost+found 09 ><fs> sync 10 ><fs> exit 11 12 $ ll test.img 13 -rw-rw-r--. 1 rjones rjones 104857600 Apr 15 13:54test.img Listagem 6: Determinando a flag Inspector 01 # guestfish --ro -i Debian5x32 02 03 ><fs> less /boot/grub/menu.lst 04 # menu.lst - See: grub(8), info grub, update-grub(8) 05 # grub-install(8), grub-floppy(8), 06 # grub-md5-crypt, /usr/share/doc/grub 07 # and /usr/share/doc/grub-legacy-doc/. 08 [...] Linux Magazine #70 Setembro de 2010 39

CAPA libguestfs Listagem 7: Clonagem de máquinas virtuais 01 #!/bin/sh - 02 03 template="$1" 04 newimage="$2" 05 nameserver="$3" 06 hostname="$4" 07 08 dd if="$template" of="$newimage" bs=1m 09 10 echo > /tmp/network <<EOF 11 NETWORKING=yes 12 HOSTNAME=$hostname 13 EOF 14 15 guestfish -i "$newimage" <<EOF 16 write-file /etc/resolv.conf "nameserver $nameserver" 0 17 upload /tmp/network /etc/sysconfig/network 18 sync 19 EOF 20 21 rm /tmp/network Windows usando o utilitário virtwin-reg. Apesar de tudo isso ser muito divertido, o verdadeiro poder do guestfish está no seu uso em scripts. Na listagem 7, usei o guestfish para clonar máquinas virtuais a partir de um template, após o que, pude ajustar as configurações do novo guest com um script assim: # cd /var/lib/libvirt/images # /tmp/clone.sh oldguest newguest 192.168.1.1 U newguest.example.com # virt-install --import --file newguest O futuro A API da libguestfs é compreensiva, madura e bem testada. A equipe se comprometeu com a manutenção da compatibilidade API e ABI (binário), portanto, a única coisa a ser feita em versões estáveis é adicionar novas chamadas e comandos. Uma tarefa que se apresenta é expandir o sistema de ferramentas administrativas, provavelmente com algumas para acelerar o preparo de novos guests, encolher guests automaticamente, oferecer um suporte melhor ao Windows, suporte CIM no virt-inspector, diagnósticos especializados de problemas nas máquinas virtuais e verificação da integridade de softwares instalados. O projeto planeja atualizações do virt-p2v e do virt-v2v. Uma maior integração com outras ferramentas de gerenciamento também consta dos planos. No momento, é possível montar um sistema de arquivos Mais informações [1] Libguestfs: http://libguestfs.org [2] EPEL: http://fedoraproject.org/wiki/epel [3] FAQ Libguestfs: http:/ libguestfs.org/faq.html [4] Augeas: http://augeas.net Gostou do artigo? Queremos ouvir sua opinião. Fale conosco em cartas@linuxmagazine.com.br Este artigo no nosso site: http://lnm.com.br/article/3845 guest no host (usando o FUSE e o comando guestmount). O próximo passo é a integração com o virtmanager, assim, os usuários poderão clicar em um botão para abrir o sistema de arquivos do guest. Outras opções incluem a integração com ferramentas de segurança, rootkits e escaners de vírus, além de ferramentas de monitoração. Empacotadores das comunidades Ubuntu, Gentoo, e Mac OS X são necessários (um port OS X já está disponível, apenas precisa de ajustes para ser lançada). Saiba que a libguestfs é difícil de compilar a partir da fonte e exige empacotadores dedicados com muito tempo livre. Algumas perguntas que todos fazem: a libguestfs tem uma interface gráfica? Os usuários poderiam se beneficiar de uma interface gráfica? As respostas são as seguintes: Não, não há uma interface gráfica e, sim, talvez os usuários fossem beneficiados. É difícil imaginar como seria uma interface gráfica que combinasse com o poder do guestfish. Seria uma interface gráfica grande e complexa, de fato. No entanto, se alguém estiver disposto a se candidatar e começar este projeto, iria receber muita ajuda e incentivo da equipe. n 40 http://www.linuxmagazine.com.br