curso de extensão em administração de redes com...
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
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
- 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
- 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
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
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
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
- 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
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 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
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 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