Anda di halaman 1dari 46

Sistemas de Arquivo NFS Samba

Joo Galdino: joaogcn@gmail.com Marcelo Bastos: marcelobastoss@gmail.com Osmar Carlos: osmar2608os@gmail.com

Introduo Sistemas de Arquivos no Linux Principais Tipos de Sistemas no Linux


Journaling Hierarquia dos Sistemas de Arquivo Linux VFS (Sistema de Arquivo Virtual)

Permisses dos Arquivos


Arquivos Imutveis

Dicas de Segurana Criptografia

Sistema de Arquivo

Sistema de arquivos a um conjunto de estruturas lgicas e de rotinas, que permitem ao sistema operacional controlar o acesso ao dispositivo de armazenamento.
Caractersticas importantes de um sistema de arquivo : independente do hardware e da BIOS; Sem ele, impossvel utilizar qualquer dispositivo para armazenamento de informaes; Responsvel pela segurana e acesso dos arquivos. Partio Sistema de Arquivo

Hierrquico (compost0 de arquivos e diretrios); Case sensitive ; Suporte a muitos tipos de sistemas de arquivos; Os arquivos/diretrios so disponibilizados (ou montados) para manipulao atravs do comando mount, geralmente acionado no processo de inicializao. Ao desligar o computador, corretamente, os sistemas de arquivos so desmontados e no podem mais sofrer mudanas. Para criar sistemas de arquivos utilizamos o comando mkfs A sintaxe : # mkfs [opes] dispositivo [blocos]

Para saber quais sistemas de arquivos so atualmente suportados pelo seu Linux, digite o comando: $ ls /sbin/mk*

Tipo Ext2

Descrio
Sistema de arquivos mais utilizado no LInux por muito tempo Sucessor do Ext2

Vantagem
Suporte a tipos padres do Unix. Suporte a nomes longos Possui Journaling Total compatibilidade com o Ext2 Rpido Journaling nativo Boa performance. Gravao muito rpida Journaling. -

Desvantagem
Sem journaling

Ext3

Para ser totalmente compatvel com o Ext2 algumas funes no foram implementadas. Alto consumo da CPU

ReiserFS

Uso de uma nova estrutura de dados chamada B+Trees Ideal para banco de dados . Espao reservado para troca de dados com a memria RAM Usada para mdias removveis

XFS SWAP ISO9660

Uitiliza muitos recursos de cache de memria -

Substituto do fsck Capacidade de acompanhar as mudanas que sero feitas no sistema de arquivos antes que realmente sejam feitas. Divide a fase de escrita dos dados em duas partes: Agendamento e Escrita. A perda de performance praticamente inexistente

Diret rio / /bin /boot /etc /home /var /tmp /opt /usr /lib /root /sbin /proc /dev

Descrio Raiz Binrios de comandos essenciais do sistema Inicializao do sistema (Grub, kernel do Linux, etc) Arquivos de configurao do sistema Armazenamento de dados pessoais dos usurios Logs do sistema Arquivos temporrios Projetos diversos ou programas no oficiais Arquivos nativos do usurio Bibliotecas e mdulos do sistema Superusurio Comandos binrios de uso exclusivo do root Acesso direto aos processos existentes na memria Dispositivos do sistema Exemplo de um layout padro no Linux:

Entidade do ncleo do Linux responsvel pela interface entre as requisies de arquivos dos processos e o acesso aos diferentes tipos de sistemas de arquivos suportados. Divididos em trs categorias:
Baseados em discos (DVD-Roms, ext3, ReiserFS, etc) De suporte a rede (NFS, SMB, etc); e Sistemas de arquivos especiais (ramfs, devfs, etc)

Composta por quatro estruturas diferentes:


Super Block (informaes do sistema de arquivo) Inode (informaes relacionadas a um nico arquivo) Arquivo (informaes relativas a interao de um arquivo aberto e um processo); e Dentry (objetos que representam os diretrios dos arquivos)

Usurio
System Call

VFS Kernel FS_Driver


Block I/O

Disco

Diferente de outros sistemas operacionais tudo no Linux tratado como um arquivo e cada arquivo possui associado a ele, um conjunto de atributos. Um deles so as permisses relativas a ele prprio.

Tipo e Permisso

QD Dono

Grupo

T.Arq.

Data e Hora

Nome do arquivo
Flag d l c s p Descrio Arquivos Comuns Diretrio Links Dispositivo de caracteres Sockets Pipes

Arquivos so divididos em tipos distintos:

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Atributos Proteo S Setuid


Atributo 0 1 2 3 4 5 6 7

S Setgid
Ativa Nenhum Bit stick Bit setgid Bits sticky e segid Bit setuid Bit setuid e sticky Bit setuid e setgid

T Sticky

r w x Dono
Atributo 0 1 2 3 4 5 6 7 Permisso Nenhuma Execuo Escrita

r w x Grupo

r w x Outros

Escrita e execuo Leitura Leitura e execuo Leitura e escrita Leitura, escrita e execuo

Bits setuid, setgid e sticky

Bits de Proteo definem as protees bsicas de cada arquivo:


R Read (Leitura) W Write (Escrita) X Execution (Execuo)

chmod Altera as permisses de acesso aos arquivo chmod [opes] <modo_arquivo> <arquivo> Bits de Atributos definem um controle adicional s permisses de proteo:
Setuid Setgid Sticky

umask Altera o valor da mscara de criao de arquivos umask [mscara]

Arquivos imutveis so um dos recursos mais poderosos de segurana e administrao do sistema disponveis em sistemas Linux. No podem ser escritos por qualquer usurio, somente superusurio, independentemente das permisses de arquivo. No podem ser excludos ou renomeados, e nenhum link direto pode ser criado a partir deles. So ideais para proteger arquivos de configurao ou outros arquivos para o qual voc deseja evitar alteraes e que voc sabe que no vai ou no deve ser alterado.

Usa-se o comando chattr (apenas usurios root) # chattr -V +i /etc/passwd chattr 1.34 (05-Jun-2010) Flags of /etc/passwd set as ----i-------O arquivo agora passou a ser imutvel, ao tentar remover aparecer o seguinte: # rm /etc/passwd rm: remove write-protected regular file `/etc/passwd'? y rm: cannot remove `/etc/passwd': Operation not permitted

Localizar todos os arquivos do sistema com os bits setuid ou setgid ligados. # find / -type f -a \( -perm 0400 -o -perm 0200 \) ls Identificar todos os arquivos com permisso de escrita universal. # find / -perm -2 ls Identificar arquivos que no pertencem a nenhum usurio ou a nenhum grupo. # find / -nouser -o -nogroup ls Aps a instalao de um sistema, gerar um arquivo que liste a configurao inicial dos arquivos do sistema e guardar em um local seguro: # ls -aslgR /bin /etc /usr >> MasterChecklist Para pesquisar alteraes no sistema de arquivos, execute o comando acima novamente e compare-o com o arquivo mestre: # diff MasterChecklist Currentlist

Colocar os principais diretrios do sistema, em parties separadas. Instale somente o necessrio para um ambiente de Produo e documente as instalaes desses programas. Como root, verificar a PATH e certificar-se de que realmente esteja executando o programa que deseja, no local que este deveria estar. Faa backups frequentes do sistema de arquivos. Nunca mude as permisses de um arquivo para tornar seu trabalho mais fcil. Antes de alterar a permisso de qualquer arquivo do sistema, primeiro tenha certeza de que voc est fazendo. Em casos de extrema de segurana, onde o prprio acesso ao disco rgido no garantido, pode ser interessante criptografar os dados contidos no sistema de arquivos.

Podemos criptografar dados, usando chave privada, de forma simples e rpida. Para fazer essa criptografia simtrica convencional, usamos o gpg. # gpg -c teste.txt Enter passphrase: Repeat passphrase: Aps a concluso do comando gpg -c, uma verso criptografada do arquivo teste.txt ser criada,chamada teste.txt.gpg . Se no precisar da verso no criptografada, exclua.
Opo -a --ciper-algo name --version -o file -v Descrio Cria uma sada ASCII blindada Usa um algoritmo de criptografia particular Mostra a lista de algoritmos de criptografia disponveis Escreve a sada para um arquivo especificado Habilita o modo verbose.

Gerando um arquivo em ASCII blindados # gpg -c-a teste.txt Sada: teste.txt.asc


-----BEGIN PGP MESSAGE----Version: GnuPG v1.2.3 (GNU/Linux) jA0EAwMCzuPpG+gDJnJgyUdnUU8TxWy4oA0S4dPErY+4jPt6YasKHUxkw0AoXNdH G/yXyQOrqitmGXc3ojfbSLGGaUN0A6NPh/GOTXcJiIR5/v8WG+Bj9A===/keh -----END PGP MESSAGE-----

Listando todos os algoritmos disponveis: # gpg --version Sada:


Gpg(GnuPG(1.2.3) . . . Supported algorithms: Pubkey: RSA, RSA-E, RSA-S, ELG-E, DAS, ELG Cipher: 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH Hash: MD5, SHA1, RIPEMD160, SHA256 Compression: Uncompressed, ZIP, ZLIB

Criando um arquivo encriptado e escolhendo a cifra que vai ser utilizada: # gpg -c-a cipher-algo [cifra_opo] [arquivo]

Usando chaves assimtricas:


# gpg -gen-key Voc vai ter que escolher:

Cifra Tamanho da Chave Perodo de validade da chave Dados (opcional)

No fim ser solicitado uma senha que ser usada toda vez que voc quiser assinar ou descriptografar uma mensagem. Para listar as chaves: #gpg --list-keys pub 1024D/D485CFG4A 2007-07-29 [expira: 2010-09-10] uid Joao Galdino <email>

Criptografar um sistemas de arquivo inteiro, permite proteger todo o volumes de dados (por exemplo, backups), registros e arquivos privados, significando que mesmo que um invasor tenha penetrado no sistema, ele no ser capaz de ler qualquer coisa. Interessante pra ser usado por donos de dispositivos mveis (laptops, etc) com dados crticos deixando-o mais seguro de dados . Antigamente, criptografar sistemas de arquivo no Linux, eram feitas por por solues de terceiros, tais como sistemas de circuito CFS5 ou criptografia de arquivos, tais como Loop-AES.6 Posteriormente progressos foram feitos para incorporar essa funcionalidade diretamente no kernel, primeiro com Cryptoloop e depois com dm-crypt.

Usaremos o dm_crypt para criar um sistema de criptografia de arquivos loop. Isso permitir o armazenamento de arquivos particulares em um nico sistema de arquivos criptografados em vez de criptografar todos os arquivos individuais. necessrio que o kernel esteja na verso 2.6 ou superior. Para usar as funcionalidades do dm-crypt necessrio instalar um pacote chamado cryptsetup (# yum install cryptsetup) e dois pacotes adcionais: libgcrypt e libgpg-error

Habilitando as funcionalidades: # modprobe aes dm_crypt dm_mod

Depois de tudo pronto e instalado e atualizado , estamos pronto para criar um sistema de arquivo criptografado. 1. Criar um Arquivo de Imagem Vazio: # dd if=/dev/urandom of=/home/bob/safe.img bs=1k count=10024 2. Criar um Dipositivo de Loop # losetup /dev/loop0 /home/bob/safe.img 3. Criar um Sistema de Arquivo Criptografado # cryptsetup -y create safe /dev/loop0 Enter passphrase: Verify passphrase:

Demontando um Arquivo de Sistema Criptografado:


1. Primeiro desmontamos o sistema de arquivo: # umount /home/bob/safe 2. Agora removemos o mapeamento do dispositivo: # cryptsetup remove safe Para Remontar: 1. Usamos o mesmo arquivo de imagem: # losetup /dev/loop0 safe.img 2. Remapeamos o Dispositivo de Criptografia: # cryptsetup -y create safe /dev/loop0 Enter passphrase: Verify passphrase:

Introduo
Verses

NFSv4
Segurana NFSv4 Pontos Negativos NFSv4

Transporte Bloqueio de Arquivos Convenes de Nomes Falhas de Segurana Segurana e o NFS


Acesso Root e Conta Nobody

NFS

NFS (Network File System) protocolo criado para ter acesso a arquivos remotos. Caractersticas: quase transparente para o usurio Sem estado: nenhuma informao perdida quando um servidor NFS trava Os clientes podem aguardam o servidor voltar e continuam a trabalhar como se nada tivesse acontecido Implementado originalmente como substituto para mquinas cliente sem disco Protocolo mostrou ser bem projetado e til como soluo genrica para compartilhamento de arquivos Praticamente toda distribuio Linux moderna conta com pelo menos um suporte mnimo a NFS

Disponibilizado ao pblico : verso 2


Verso 2: no pode supor que uma operao de gravao esteja completa at receber confirmao do servidor Atraso significativo nas gravaes NFS

No incio dos anos 90 foi lanada a verso 3


Aumento de desempenho Maior suporte para arquivos grandes (> 2GB) Elimina o gargalo, torna gravaes assncronas seguras e se torna bem mais rpido que verso 2 Interopera com verso 2 (apenas utiliza a verso anterior)

Linux suporta ambas as verses a partir do kernel2.6 O NFS 4 est em desenvolvimento e suportado parcialmente pelo kernel2.6 em diante

O NFS roda sobre o protocolo RPC (Remote Procedure Call) da Sun


Define uma maneira independente de sistema para os processos se comunicarem atravs de uma rede possvel usar tanto TCP quanto UDP como protocolo de transporte

Originalmente o NFS usava UDP O NFS faz sua prpria remontagem de seqncia de pacotes e verificao de erros, mas no tem algoritmos de controle de congestionamento TCP foi introduzido e permitiu uso do NFS atravs de roteadores na Internet

Foi projetado sem preocupaes com segurana (preo da convenincia) Linux implementa alguns recursos para reduzir fragilidades do NFS

O acesso aos volumes NFS dado por um arquivo /etc/exports Frgil: servidor confia nos clientes para informarem quem so fcil fazer os clientes mentirem sobre suas identidades Voc deve ter o cuidado de exportar somente para os clientes que confia, tomando cuidado para no exportar acidentalmente para o mundo todo

Como acontece com sistemas de arquivos locais, o controle de acesso em nvel de arquivo controlado pelos UIDs e GIDs e as permisses do arquivo. Importante manter UIDs e GIDs nicos em toda a rede Usurios com acesso root em um sistema podem mudar seu UID para o que bem entender, e assim o servidor inocentemente dar acesso aos arquivos correspondentes

Como padro o servidor Linux NFS intercepta solicitaes que chegam feitas em nome de UID 0 e as altera para que paream vir de outro usurio Essa modificao chamada squashing root(encurralando o root) A conta root fica limitada s habilidades de um usurio comum Uma conta substituta chamada nobody definida para esse pseudo-usurio O UID tradicional de nobody 65534
Pode ser alterado atravs de opes de exportao anonuid e anongid Tambm podemos usar a opo all_squash para associar os UIDs de todos os clientes ao mesmo UID no servidor

til para um sistema de arquivo de acesso pblico Temos a opo no_root_squash que desabilita a associao do UID para root Perigosa, mas as vezes necessria

Os protocolos NFSv2 e NFSv3, da forma em que foram especificados, utilizam o protocolo RPC verso 2, que no possui qualquer mecanismo que possibilite a garantia da integridade, privacidade ou no-repdio dos dados. Exemplo Privacidade: Portanto, nas verses 2 e 3 do NFS, um atacante pode realizar um ataque conhecido como sniffing,que consistem simplesmente em capturar todo o trfego no cabo de rede e, dessa forma, conseguir ter acesso de leitura a todos os dados (arquivos e diretrios) acessados naquele instante. Exemplo Integridade: Utilizando um conhecido ataque chamado man-in-themiddle, o adulterador poderia interceptar uma mensagem RPC e dessa forma alterar o contedo das requisies e respostas do NFS. Com esse ataque pode-se, por exemplo, alterar o contedo das chamadas WRITE() em andamento naquele instante e, desse modo, alterar o contedo de arquivos gravados no servidor.

Exemplo No-Repdio: um usurio pode negar que tenha realizado certas operaes no servidor. Uma situao emblemtica desse problema o caso de um usurio que deleta arquivos importantes do servidor e que poder negar que o tenha feito. O NFSv3 utilizado atualmente no prov nenhum mecanismo que permita que o cliente autentique o servidor. O cliente no tem como descobrir se o servidor , de fato, o servidor legtimo, ou se alguma outra mquina est se passando pelo servidor. Exemplo : O atacante poderia utilizar para impersonar o servidor e explorar a falta de autenticao do NFS. Tcnicas como IPspoofing, DNS spoofing e man-in-themiddle, so comprovadamente eficientes para tal objetivo. O atacante poderia utilizar um servidor falso, por exemplo, para receber arquivos ou para disponibilizar arquivos falsos.

Integrao do NFS com firewalls: O servidor NFS com verso 2 e 3 no utiliza um nmero de porta fixo, ou seja, no se pode saber de antemo em qual porta o servidor aguarda requisies. Apesar desse servio estar sempre executando na porta 2049, possvel que ele esteja aguardando em outra porta. Logo, necessrio consultar um outro servio chamado portmapper para se descobrir em qual porta est registrado o servio NFS. O grande problema disso que, como o nmero da porta varivel, fica extremamente difcil projetar regras de filtragem do trfego de NFS.

O NFSv4 apresenta uma ruptura com as verses anteriores. O protocolo foi extremamente modificado, inclusive em questes tidas como alicerces da antiga verso. Exemplo disso o fato do novo protocolo manter estados das operaes no servidor. Na verso antiga, o servidor no mantinha estados (stateless). As operaes eram independentes e por isso no se fazia necessrio qualquer mecanismo de recuperao de falhas. Dentre as principais mudanas no protocolo destacam-se: O uso do TCP mandatrio, embora continue suportando o UDP. Permite chamadas de RPC compostas, ou seja, vrias operaes em uma mesma mensagem. O NFSv4 combina diferentes protocolos (Mount, NLM, etc) em nico protocolo. Introduz delegao de arquivos, o que permite mecanismos eficientes de cache. Diversos mecanismos de segurana usando criptografia forte em carter mandatrio, com suporte negociao do nvel de segurana.

O NFSv4, assim como as outras verses, baseia-se no modelo de Segurana do RPC para garantir a segurana de seus servios. Porm, o NFSv4 obriga a implementao do esquema RPCSEC_GSS que baseado na Generic Security Services API (GSS-API) . Uma implementao compatvel com o NFSv4 obrigatoriamente deve implementar dois mecanismos de segurana sob a interface GSS. So eles: Kerberos V5 e LIPKEY. Tendo em vista que o NFSv4 pode oferecer diversos mecanismos de segurana, o cliente precisa de algum mtodo para negociar qual o mecanismo de segurana a ser usado na comunicao com o servidor. Um servidor que exporta diversos pontos de montagem pode especificar quais os algoritmos adequados para cada uma dessas entradas.Para realizar essa negociao, foi introduzida uma nova operao no NFS chamada SECINFO, que permite que o cliente pergunte qual a segurana que o servidor requer para acessar determinado diretrio.

O NFSv4 eliminou a necessidade do portmapper para descobrir a porta onde o servidor aguarda conexes. O novo protocolo fixa a porta 2049 como a porta padro do NFS verso 4. Essa mudana, aliada ao uso do TCP, favorece o uso do NFS na Internet e facilita a filtragem desse protocolo atravs de firewalls.

H mecanismos para garantir autenticao, integridade e privacidade, de forma bastante confivel. Apesar de no haver autenticao da mquina cliente e servidora, isso no to preocupante, pois h a autenticao do usurio e da aplicao servidora. Dessa forma possvel que um usurio legtimo obtenha acesso a partir de uma mquina no permitida, mas isso pode ser impedido com o uso de firewalls.

Complexidade. A especificao do protocolo bastante extensa e incompleta Diversos assuntos como replicao e migrao de servidores esto em aberto. Muitos algoritmos e mecanismos de segurana so especificados como mandatrios para que a implementao seja considerada compatvel com o NFSv4 .

Introduo e Instalao Histrico Configurando o Samba Auditando o samba

Samba

O Samba um "software servidor" para Linux (e outros sistemas baseados em Unix) que permite o gerenciamento e compartilhamento de recursos em redes formadas por computadores com o Windows. Assim, possvel usar o Linux como servidor de arquivos, servidor de impresso, entre outros, como se a rede utilizasse servidores Windows (NT, 2000, XP, Server 2003).
Vias de Instalao: Gerenciador synapt (ubuntu), apt-get install, rpm (make, make install)

Inicio em 1991 por Andrew Tridgell DEC => eXcursion + Patchworks Clockspy = teste entre ms-dos e solaris Recebeu uma e-mail de uma pessoa que testou na aplicao LanManeger onde permitia compartilha arquivos no unix com MS-DOS. Em 1992 : Server 0.1, Server 0.5 Em 1993: SmbServer 1.5 - 1.6.4 Em 1994: Samba 1.6.05 samba4 (atual) Tambm a Mirosoft liberou a SMB

Vias: Gerenciador synapt (ubuntu), apt-get install, rpm (make, make install)

Prtica!

Gerenciador de log Apartir do samba 3.4 foi incluido um mdulo de auditoria dentro do smb.conf.
vfs objects = full_audit full_audit:success = open, opendir, write, unlink, rename, mkdir, rmdir, chmod, chown full_audit:prefix = %u|%I|%S full_audit:failure = none full_audit:facility = local5 full_audit:priority = notice

Para funcionar:
/etc/syslog.conf
Local5.notice /var/log/samba-full_audit.log

Restart das apicaes


#/etc/init.d/samba restart #/etc/init.d/sysklogd restart
Nov 18 15:21:15 m5 smbd_audit: joao|192.168.1.23|arquivos|opendir|ok|. Nov 18 15:21:29 m5 smbd_audit: joao|192.168.1.23|arquivos|open|ok|r|addr.txt Nov 18 15:21:34 m5 smbd_audit: joao|192.168.1.23|arquivos|mkdir|ok|trabalho Nov 18 15:21:36 m5 smbd_audit: joao|192.168.1.23|arquivos|opendir|ok|trabalho Nov 18 15:21:43 m5 smbd_audit: joao|192.168.1.23|arquivos|open|ok|w|trabalho/Samba.sxw Nov 18 15:21:44 m5 smbd_audit: joao|192.168.1.23|arquivos|open|ok|w|trabalho/foto.jpg

#cat /var/log/samba-full_audit.log | grep joao|192.168.1.23 #cat /var/log/samba-full_audit.log | grep |arquivos| #cat /var/log/samba-full_audit.log | grep |arquivo| > arquivo.log