curso de extensão em administração de redes com...

53
Curso de extensão em Administração de redes com GNU/Linux Eduardo Júnior - [email protected] Gestores da Rede Acadêmica de Computação Departamento de Ciência da Computação Universidade Federal da Bahia Eduardo Júnior Administração de redes com GNU/Linux

Upload: vuongthu

Post on 15-Dec-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

Curso de extensão em Administração de redes com GNU/Linux

Eduardo Júnior - [email protected]

Gestores da Rede Acadêmica de ComputaçãoDepartamento de Ciência da Computação

Universidade Federal da Bahia

Eduardo Júnior Administração de redes com GNU/Linux

Assuntos abordados

Sistemas de Arquivos de Rede – Cenário da Rede DCC

NFS

SHFS

SSHFS

Sistema de Arquivos de RedeSistema de Arquivos de Rede

Sistemas de Arquivos de Rede

É uma maneira de compartilhar arquivos entre máquinas de uma rede, como se eles estivessem localizados no disco

rígido local do sistema

Mecanismos transparente aos usuários

Sistemas de Arquivos de Rede

Desafios:

- controle de concorrência- transparência de localização dos diretórios e arquivos- resolução de impasses e recuperações- processamento de consultas

Sistemas de Arquivos de Rede

Cenário 1:

- Poucas máquinas disponíveis- Poucos recursos- Uso do LTSP- Dificuldade de organização no acesso aos arquivos

Cenário 1 - NFS

Cenário 1 - NFS

Cenário 1 - NFS

- Criado pela Sun Microsystems

- Ambiente cliente/servidor

- Primeiras versões stateless; atualmente, guarda informações de estado

- Módulo de kernel

Cenário 1 - NFS

Cenário 1 - NFS

- Primeiro veio a implementação de um sistema centralizado de autenticação, a base LDAP DCC

- Centralização dos arquivos dos usuários, compartilhados pela rede

- O sistema de arquivos root, o /usr e /home era exportados quando do boot da máquina

Cenário 1 - NFS

Como o NFS é organizado?

/etc/exports

Cenário 1 - NFS

DIRETORIO HOST1 HOST2 HOSTn(opções)

/srv/homes hostname1 hostname2(rw,sync)/ master(rw) trusty(rw,no_root_squash)/projects proj*.local.domain(rw)/usr *.local.domain(ro)/home/joe pc001(rw,all_squash,anonuid=150,anongid=100)/pub (ro,insecure,all_squash)

Cenário 1 - NFS

Exportfsrpc.mountdnfsd rpc.nfsd nfsd.o

/proc/fs/nfsd//proc/fs/nfs/

Cenário 1 - NFS

Opções:

async → melhor performace, mas força o servidor NFS (viola o protocolo NFS) a responder requisições antes que qualquer alteração feita pela requisição seja armazenadasync → o inverso do acimaintr → permite interromper chamadas do NFS, útil quando o servidor não esteja mais respondendorw → permite leitura e escrita no volume montadoro → apenas leitura no volume montadoroot_squash → root na máquina local será mapeada para um uid anônimo, geralmente nobodyno_root_squash → desabilita acimaanonuid e anongid → força um uid e gid na montagem remota do sistema de arquivos especificado

Cenário 1 - NFS

/home/user1 127.0.0.1(rw,subtree_check)/home/user2 localhost(ro,no_root_squash,sync,subtree_check)

/home/user3 localhost(ro,no_root_squash,subtree_check)

# mkdir /mnt/teste# chown nobody:nogroup /mnt/teste

# mount -t nfs localhost:/home/user1 /mnt/teste# umount /mnt/teste

# mount -t nfs localhost:/home/user2 /mnt/teste# umount /mnt/teste

# mount -t localhost:/home/user3 /mnt/teste# umount /mnt/teste

Cenário 1 - NFS

Cenário 1 - NFS

Restrições:

- O uid do usuário na máquina local deve ser o mesmo na máquina servidora- Controle de acesso: - uid e gid fornecido na requisições NFS - permissões dos arquivos/diretórios na máquina servidora - tcpd: /etc/hosts.allow e /etc/hosts.deny- Tratamento do root da máquina local diferente do root da máquina servidora

Cenário 1 - NFs

Questões de performace:

- velocidade de I/O- opções de abertura de arquivos- número de daemons NFS- tipo de protocolo- organização da rede- sistemas de arquivos “journalados”

Cenário 1 - NFS

Montar um servidor NFS local e testar localmente

Pacotes necessários:servidor: portmap, nfs-common, nfs-kernel-server

cliente: portmap, nfs-common

# rpcinfo -p

Cenário 2 - SHFS

Nem tudo é perfeito. Problemas!

Cenário 2 - SHFS

- Não acompanhamento no aumento da demanda

- Não uso de criptografia

- Protocolo Stateless

- Protocolo conectionless

Cenário 2 - SHFS

- É um módulo de kernel que permite que FS sejam montados localmente, fazendo uso de uma conexão SSH

- Problemas na importação das preferências do usuário

- Todo o tráfego passava criptografado

Cenário 2 - SHFS

Características:

- cache de arquivos para acelerar o acesso- código perl ou shell no lado do servidor- conexões persistentes- suporte a clientes de arquiteturas distintas

Cenário 2 - SHFS

Como o SHFS funciona?

Cenário 2 - SHFS

Cenário 2 - SHFS

Construindo o módulo:

# aptitude install shfs-source shfs-utils module-assistant

repositório etch

# aptitude install linux-image-2.6.18-6-686 linux-headers-2.6.18-6-686

Cenário 2 - SHFS

# module-assistant build shfs

# module-assistant install shfs

# modprobre shfs

Cenário 2 - SHFS

Exemplos de montagem:

Mesma interface do comando mount

-t shfs

Cenário 3 - SSHFS

- Maior estabilidade- Conexão criptografada- Sistema de arquivos cliente baseado no SSH- Nenhuma intervenção é necessário no lado do servidor- Integração com PAM (plugged authentication module)

Cenário 3 - SSHFS

- SSHFS é totalmente executado no espaço do usuário- Multithreading- Cache do conteúdo dos diretórios- Na máquina local onde o SSHFS é montado, se faz uso do FUSE, um módulo do kernel

Cenário 3 - SSHFS

FUSE ( Filesystem in Userspace)FUSE ( Filesystem in Userspace)

- módulo kernel- permite usuários comuns criarem ou montarem sistema de arquivos sem precisar editar o código fonte do kernel- execução do código do sistema de arquivos no espaço do usuário

Cenário 3 - SSHFS

Cenário 3 - SSHFS

Opções interessantes:

-p porta ou -o port=porta-C ou -o compression=yes

-o reconnect-o sshfs_debug-o cache=yes/no

Cenário 3 - SSHFS

Instalando:

# aptitude install sshfs fuse-utils ssh

Carregar o módulo:

# modprobe fuse

Adicionar usuário ao grupo fuseRelogar

Criar ponto de montagem

Cenário 3 - SSHFS

Uso SSHFS:

sshfs usuário@host/IP:/diretorio <ponto de montagem>

Exemplos:

sshfs -C [email protected]:/home/ihtraum /home/ihtraum/dccufba

sshfs -o compression=yes -port=2299 [email protected]:/home/ihtraum /home/ihtraum/appdccufba

fusermount -u /home/ihtraum/appdccufba

Cenário 3 - SSHFS

Exercícios:

- Usando o sshfs, montar o diretório do usuário graco no /mnt/graco (atente-se para as permissões)

- Alterar a porta do ssh para 6664 e montar o diretório do usuário graco em /home/graco/Desktop/teste

- No mesmo cenário acima, usar a opção de cache, reconnect e compressão para a montagem do diretório remoto

- Montar seu diretório pessoal em homes.dcc.ufba.br no diretório local /home/graco/dccufba com a opção de compressão habilitada e depois, sem essa opção habilitada, montar em /home/graco/dccufbaslow e verificar a performace

Referências

http://fuse.sourceforge.net/sshfs.htmlhttp://en.wikipedia.org/wiki/SSHFShttp://linux.die.net/man/1/sshfshttp://en.wikipedia.org/wiki/FUSE_(linux)http://fuse.sourceforge.net/http://fuse.sourceforge.net/sshfs.htmlhttp://shfs.sourceforge.net/http://en.wikipedia.org/wiki/Network_File_System_(protocol)http://nfs.sourceforge.net/manpages - http://www.linuxmanpages.com/

FTP

O que é FTP?O que é FTP?

- É um protocolo de rede utilizado para trocar e manipular arquivos através de redes TCP

- File Transfer Protocol

- Especificação do protocolo FTP está descrita na RFC 959

FTP

- Aceita conexões remotas dos logins dos usuários que existem na máquina

- Informações são transmitidas de forma não encriptada

- Recomendado uso do sftp

- Utilizado para criação de repositórios públicos

FTP

Servidor FTP:Servidor FTP:

Arquivo de configuração:/etc/proftpd/proftpd.conf

Principais diretivas:

UseIPv6 onPort 21MaxClients 10DefaultRoot ~TransferRate RETR 8:10

FTP

Criação de um repositório públicoCriação de um repositório público

- Disponível para o usuário anonymous

- Liberdade de acesso ao /home/ftp, diretório raíz para o cliente ftp

- Pode-se fazer upload para uma pasta em específico, determinado pelo administrador

FTP

Criação de um repositório públicoCriação de um repositório público

<Anonymous ~ftp>User ftpGroup nogroupUserAlias anonymous ftpDirFakeUser on ftpDirFakeGroup on ftpRequireValidShell offMaxClients 20DisplayLogin welcome.msgDisplayFirstChdir .message<Directory *><Limit WRITE>DenyAll</Limit></Directory>

FTP

Criação de um repositório públicoCriação de um repositório público

<Directory incoming>Umask 022 022<Limit READ WRITE>DenyAll</Limit>

<Limit STOR>AllowAll</Limit></Directory></Anonymous>

Criação do diretório incoming:

# mkdir /home/ftp/incoming# chown ftp:nogroup /home/ftp/incoming

FTP

Prática 5 – Prática 5 – Criação de um servidor FTP simplesCriação de um servidor FTP simples

FTP

Prática 5Prática 5

Escolha do software: proftpUso de pacote pré-compilado (.deb)

# apitude install proftpd

Modo de execução: standalone ou inetd

FTP

Prática 5Prática 5

- Configurar o proftpd para escutar na porta padrão, aceitar no máximo 5 conexões simultâneas, deixando disponível um repositório público para no máximo 2 conexões simultâneas, forçando que qualquer conexão de usuário o limite apenas ao seu home.Efetuar testes criando-se um usuário de teste (cursograco) e fazendo uso do cliente ftp acessar o diretório home e o público e fazer down/uploads

FTP

FTP SSL/TLSFTP SSL/TLS

- Dados são encriptados quando da conexão entre cliente e servidor

- Aumento da segurança e confiabilidade do serviço

- Uso do módulo mod_tls

- Gerar arquivos de certificado utilizados pelo mod_tls

FTP

<IfModule mod_tls.c> TLSEngine on TLSLog /var/log/proftpd-tls.log TLSProtocol TLSv23

# Are clients required to use FTP over TLS when talking to this server? TLSRequired off

# Server's certificate TLSRSACertificateFile /etc/proftpd/ssl/proftpd.cert.pem TLSRSACertificateKeyFile /etc/proftpd/ssl/proftpd.key.pem

# Authenticate clients that want to use FTP over TLS? TLSVerifyClient off

# Allow SSL/TLS renegotiations when the client requests them, but # do not force the renegotations. Some clients do not support # SSL/TLS renegotiations; when mod_tls forces a renegotiation, these # clients will close the data connection, or there will be a timeout # on an idle data connection. TLSRenegotiate required off

</IfModule>

FTP

FTP SSL/TLSFTP SSL/TLS

Para estabelecer uma conexão segura e de confiança é necessário gerar certificados que atestem a identidade do servidor

Passos:- Gerar chave privada- Gerar um pedido de certificado com essa chave privada (CSR)- Encaminhar o CSR para a CA para assinar o pedido de certificado

FTP

FTP SSL/TLSFTP SSL/TLS

# aptitude install openssl ca-certificates

# openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/ssl/proftpd.cert.pem -keyout /

etc/proftpd/ssl/proftpd.key.pem

FTP

FTP SSL/TLSFTP SSL/TLS

Ativar suporte a SSL/TLS no Servidor FTP instalado anteriormente e verificar o arquivo de log

/var/log/proftpd/tls.log