Protocolos Seguros

Standard

O começo da internet foi, para dizer o mínimo, inocente. Com o passar do tempo e o aparecimento de aplicativos comerciais percebeu-se a necessidade premente de aumentar o nível de segurança das transações, e acessos à informação, feitos via internet.

Continue reading

Projetos de Redes Locais

Standard

As empresas, nesta nossa economia da informação, estão cada vez mais dependentes da estrutura de redes que interconecta todos os recursos de computação disponíveis, tanto interna quanto externamente. Na maior parte das vezes, o trabalho e a responsabilidade do administrador de redes se limita ao projeto e manutenção da sua rede local.

Para a realização de um bom projeto, que culminará em uma boa rede, o administrador deve seguir uma metodologia estruturada. Esta metodologia, ainda que um tanto limitante, servirá como base e garantia de um caminho seguro para o sucesso. Continue reading

Sistemas Distribuídos

Standard

Em redes de alto tráfego e alta disponibilidade, que possuem muitos usuários ou não podem ficar fora do ar, é comum a utilização de serviços distribuídos. Serviços de rede, como servidores de arquivos ou dados são distribuídos por mais de uma máquina. Ou para garantir estabilidade e continuidade do serviço ou para dividir recursos e aumentar a capacidade de atendimento. Existem algumas técnicas específicas para efetuar esta distribuição de serviços que veremos a seguir.

Clustering

Cluster, ou agrupamento, pode ser definido como um sistema que compreende dois ou mais computadores ou sistemas, denominados nodos ou nós, os quais trabalham em conjunto para executar aplicações ou realizar outras tarefas, de maneira transparente aos usuários, ou seja, os usuários terão a impressão de estar utilizando um único sistema. Basicamente, existem quatro tipos de clusters (REIS, JÚNIOR, et al., 2010):

Alta Disponibilidade (HA – High Availability): estes modelos de clusters são construídos para prover uma disponibilidade de serviços e recursos de maneira ininterrupta, através do uso da redundância implícita ao sistema. Caso um nó do cluster vier a falhar (failover), aplicações ou serviços estarão disponíveis em outro nó. Estes tipos de cluster são utilizados para base de dados de missões críticas, correio, servidores de arquivos e aplicações.

Balanceamento de carga (HS- Load Balancing): distribui o tráfego entrante ou requisições de recursos provenientes dos nodos que executam os mesmos programas entre as máquinas que compõem o cluster. Todos os nodos estão responsáveis em controlar os pedidos. Em caso de falha em um nó, as requisições são redistribuídas entre os nós disponíveis no momento. Este tipo de cluster é normalmente utilizado por servidores web que demandam muito acesso, como por exemplo, as lojas virtuais.

Combinação Alta Disponibilidade e Balanceamento de carga: combina os dois clusters acima, aumentando a disponibilidade e escalabilidade dos serviços e recursos. Muito utilizado em servidores web e e-mail.

Processamento Distribuído ou Processamento Paralelo (HPC): este modelo de cluster aumenta a disponibilidade e desempenho para as aplicações, sendo utilizado em tarefas típicas em que se exige desempenho no processamento. Uma grande tarefa computacional pode ser dividida em pequenas tarefas que são distribuídas entre os nós, que ficam com a tarefa de processá-las. Este tipo de cluster é comumente associado ao projeto Beowulf (http://www.beowulf.org/). Estes clusters são usados em computação científica ou análises financeiras, tarefas típicas que exigem um alto poder de processamento.

Grids

Trata-se de uma arquitetura de rede que permite o uso, de forma cooperativa e transparente, de recursos distribuídos geograficamente. A arquitetura em Grid é uma proposta promissora para resolver as crescentes demandas da computação paralela e distribuída por transparência, desempenho e capacidade de processamento. Estes recursos e serviços fornecidos pela arquitetura de Grid podem ser de diferentes tipos, havendo grande heterogeneidade dentro de uma mesma classe de recursos.

Existem três aspectos que caracterizam Grids computacionais: Heterogeneidade: um Grid envolve uma grande diversidade de recursos diferentes e que podem estar dispersos geograficamente; Escalabilidade: um Grid pode crescer de poucos recursos para milhões; Dinamicidade ou adaptabilidade: em um Grid a falha de um recurso é a regra, e não a exceção, e cabe a estrutura suprir esta falta de forma transparente. Um ambiente de Grid ideal irá prover acesso aos recursos disponíveis de forma homogênea de tal modo que as diferenças entre máquinas, protocolos, capacidade de processamento não sejam perceptíveis pelos usuários finais.

Computação distribuída (peer to peer)

Em sistemas distribuídos, um dos modelos de distribuição de recurso é o modelo P2P (peer to peer) que consiste em uma distribuição de processamento e requisição de informação em uma rede de computadores, onde todos os componentes isolados do sistema P2P, chamado de nós, executam os serviços de cliente e servidor, distribuindo as responsabilidades de processamento e informação para muitos computadores distintos que juntos formam as redes de computadores do sistema P2P. A uma rede P2P se ligam a outras redes formando blocos, os quais estão ligados a outros blocos formando uma rede maior ainda. Um sistema distribuído P2P propõe um modelo com as seguintes características:

  • Todos os nós são usuários de serviços em potencial e são, ao mesmo tempo, provedores em potencial desses serviços.
  • Todo nó é independente.
  • Os nós são dinâmicos, podem existir e deixar de existir imprevisivelmente.

Um sistema distribuído P2P propõe um modelo com as seguintes características: Todos os nós são usuários de serviços em potencial e são, ao mesmo tempo, provedores em potencial desses serviços; Todo nó é independente; Os nós são dinâmicos, podem existir e deixar de existir imprevisivelmente (SILVA e LOVATTI, 2009).

Grid, Cluster e Peer to Peer

De forma resumida podemos comparar as funcionalidades e características de grids, clusters e da rede P2P através da tabela

Tabela 1 – Comparação entre Grid, Cluster e P2P (SILVA e LOVATTI, 2009)

Sistemas de arquivos distribuídos

Um Sistema de Arquivos Distribuído (SAD) tem o objetivo de fornecer os mesmos serviços e recursos de um sistema de arquivos convencional, pelo menos na visão dos clientes que o acessam, com a diferença que o SAD pode ser acessado de qualquer máquina dentro de uma rede (acesso remoto), de forma controlada ou não (CARVALHO, 2003).

Um sistema de arquivos distribuído, ou SAD, é um sistema de arquivos no qual os arquivos nele armazenados estão espalhados em hardwares diferentes, interconectados através de uma rede. As informações sobre a localização dos recursos compartilhados estão presentes no servidor com o serviço habilitado. A intenção é dividir a carga do sistema e aumentar a disponibilidade do mesmo dividindo os arquivos por vários dispositivos de software/hardware que podem, ou não, ter as mesmas características físicas, de forma que o usuário não perceba estas diferenças. As redes P2P podem ser consideradas exemplos de arquivos distribuídos.

Cloud Computing

Computação em nuvem é uma tendência recente de tecnologia cujo objetivo é proporcionar serviços de Tecnologia da Informação (TI), sob demanda, com pagamento baseado no uso. Tendências anteriores à computação em nuvem foram limitadas a uma determinada classe de usuários ou focadas em tornar disponível uma demanda específica de recursos de TI, principalmente de informática. Computação em nuvem pretende ser global e prover serviços para as massas que vão desde o usuário final que hospeda seus documentos pessoais na Internet até empresas que terceirizam toda infraestrutura de TI para outras empresas. Nunca uma abordagem para a utilização real foi tão global e completa: não apenas recursos de computação e armazenamento são entregues sob demanda, mas toda a pilha de computação pode ser aproveitada na nuvem (SOUSA, MOREIRA e MACHADO, 2009).

Para utilizarem os serviços, os usuários necessitam apenas ter em suas máquinas um sistema operacional, um navegador e acesso a Internet. Todos os recursos computacionais estão disponíveis na nuvem e as máquinas dos usuários não necessitam ter altos recursos computacionais, diminuindo o custo na aquisição de máquinas. Todo hardware pode ser utilizado para realizar alguma tarefa que seja adequada ao seu poder de processamento. Novos recursos de hardware podem ser adicionados a fim de aumentar o poder de processamento e cooperar com os recursos existentes (SOUSA, MOREIRA e MACHADO, 2009).

Bibliografia

CARVALHO, R. P. D. Tese: Sistemas de Arquivos Paralelos e Distribu´ıdos. Universidade de São Paulo Instituto de Matemática e Estatística Departamento de Ciência da Computação, 2003. Disponivel em: <http://www.ime.usp.br/~carvalho/quali/quali.pdf>. Acesso em: 20 setembro 2011.

REIS, A. C. D. F. et al. Cluster de Alta Disponibilidade. 1Faculdade de Tecnologia de Guaratinguetá (FATEC-GT), Guaratinguetá, SP, Brasil, Novembro 2010.

SILVA, D. F. S. D.; LOVATTI, F. R. Computação Distribuída, Web Service – um estudo de caso. CENTRO UNIVERSITÁRIO VILA VELHA CENTRO UNIVERSITÁRIO VILA VELHA, 2009. Disponivel em: <http://www.uvv.br/portais/cienciacomputacao/pdf/2009/Computa%C3%A7%C3%A3o%20Distribu%C3%ADda,%20Web%20Service.pdf>. Acesso em: 12 Setembro 2011.

SOUSA, F. R. C.; MOREIRA, L. O.; MACHADO, J. C. Computação em Nuvem: Conceitos, Tecnologias, Aplicações e Desafios. Aplicações e Desafios, 2009.

 

 

Servidores

Standard

Definimos servidor como um conjunto de software e hardware capaz de fornecer um serviço específico a uma rede de computadores. Muitos serviços são mais eficientes quanto executados de um ponto comum. Entre estes serviços estão e-mail, firewall, proxy, backup, banco de dados, entre outros. Assim como tudo na internet, os tipos de servidores foram aumentado a medida que novos serviços foram surgindo.

A pilha TCP/IP e a infraestrutura de suporte a internet requer um grande número de servidores para atender as características de cada camada desta pilha. Alguns deles fornecem serviços específicos para o funcionamento dos protocolos e outros fornecem serviços específicos para os usuários.

Servidores de DNS

O uso dos endereços físicos das máquinas, ou mesmo o endereço IP, tornariam o acesso a estas máquinas muito complicado para os seres humanos. No começo da internet, ainda no tempo da ARPANET, havia simplesmente um arquivo, hosts.txt, que listava todos os hosts e seus endereços IP. Toda noite, esse arquivo era acessado por todos os hosts no local em que era mantido. Apesar do arquivo hosts ainda poder ser utilizado, esta solução não é viável para as centenas de milhões de máquinas que temos conectadas na Internet hoje em dia. Para resolver esses problemas, foi criado o DNS (Domain Name System — sistema de nomes de domínios) (TANENBAUM, 1998).

A essência do DNS é a criação de um esquema hierárquico de atribuição de nomes baseado no domínio e de um sistema de bancos de dados distribuídos para executar esse esquema de nomenclatura. Ele e usado principalmente para mapear nomes de hosts e destinos de mensagens de correio eletrônico em endereços IP, mas também pode ser usado para outros objetivos. O DNS e definido nas RFCs 1034 e 1035 (TANENBAUM, 1998).

Os Servidores DNS são dispositivos cuja função é fornecer o serviço de resolução de nomes, à camada de transporte, transformando nomes, fáceis de memorizar, em endereços IPs. Estes servidores funcionam em uma estrutura hierárquica começando no servidor raiz. Uma máquina onde estão armazenados os endereços IP dos servidores responsáveis por resolver o nome de cada um dos domínios registrados em cada domínio de alto nível.

Existem dois tipos de domínios de nível superior: genéricos e de países. Os domínios genéricos originais eram com (comercial), edu (instituições educacionais), gov (instituições governamentais), int (certas organizações internacionais), mil (órgãos das forcas armadas), net (provedores de rede) e org (organizações sem fins lucrativos). Os domínios de países incluem uma entrada para cada pais, conforme a definição da ISO 3166 (TANENBAUM, 1998).

Por sua vez, estes servidores de alto nível são responsáveis por resolver os nomes dos domínios armazenados em cada domínio superior. E assim por diante até um nome de domínio que especifica exatamente uma máquina e é resolvido por um servidor imediatamente superior a ela. Assim sendo, Para que um host acesse uma URL qualquer (“www.amazon.com”, por exemplo) na internet, primeiramente ele envia uma mensagem de requisição para o servidor de nomes local. O servidor local envia uma consulta ao DNS raiz, o qual percebe o sufixo ‘com’ e responde uma lista de endereços IP para o DNS local contendo servidores TLD que são responsáveis por ‘com’. Em seguida, o DNS local faz requisição para um desses servidores TLD, o qual percebe o sufixo ‘amazon.com’ e envia ao DNS local o endereço IP do servidor DNS com autoridade para a Amazon. Finalmente, o DNS local consulta o servidor com autoridade e esse responde com o endereço do hospedeiro ‘www.amazon.com’. Assim, o DNS local responde ao hospedeiro o IP do nome solicitado como está esquematizado na Figura – 1.

Figura 1 – Servidores DNS (ALEXANDRE, 2008)

Servidores DHCP

O DHCP (“Dynamic Host Configuration Protocol” ou “protocolo de configuração dinâmica de endereços de rede”) é um protocolo que permite que todos os micros da rede recebam suas configurações, relativas a rede, automaticamente. O servidor DHCP é o conjunto de software e/ou hardware capaz de fornecer este serviço à rede que opera na camada de aplicação da pilha TCP/IP.

Os principais parâmetros que devem ser configurados para que o protocolo TCP/IP funcione corretamente são os seguintes:

  • Número IP
  • Máscara de sub-rede
  • Default Gateway (Gateway Padrão)
  • Número IP de um ou mais servidores DNS
  • Número IP de um ou mais servidores WINS
  • Sufixos de pesquisa do DNS

Em uma rede pequena, não é difícil manter o controle destes parâmetros mas, em um rede com centenas, ou milhares, de computadores, é muito difícil, se não impossível manter um controle estrito. Com o uso do DHCP, a distribuição de endereços IP e demais configurações do protocolo TCP/IP é automatizada e centralizadamente gerenciada. O administrador cria faixas de endereços IP que serão distribuídas pelo servidor DHCP (faixas estas chamadas de escopos) e associa outras configurações com cada faixa de endereços, tais como um número IP do Default Gateway, a máscara de sub-rede, o número IP de um ou mais servidores DNS, o número IP de um ou mais servidores WINS e assim por diante (BATTISTI, 2006).

Servidores de e-mail

Trata-se de um servidor da camada de aplicação capaz de executar os serviços necessários a execução dos protocolos relacionados a entrega, armazenagem e roteamento de mensagens eletrônicas. De fato, um servidor de e-mail é um conjunto de servidores, trabalhando em conjunto, cada um deles responsável por atender os serviços necessários para cada um dos protocolos responsáveis pela troca de mensagens eletrônicas.

O processo de envio de mensagens eletrônicas (e-mail) sem o uso do protocolo TELNET diretamente requer que o usuário faça uso de um aplicativo cliente de e-mail, também conhecido como MUA (Mail User Agent ou, agente do usuário de correio). O MUA é responsável pelo envio da mensagem ao MTA (Mail Transport Agent ou, Agente Transportador de Correio). Cabe ao MTA local entregar a mensagem (rotear) ao MTA do destinatário, caso a caixa postal deste destinatário se encontre em outro servidor ou, colocar esta mensagem na caixa postal do destinatário caso este se encontre no mesmo servidor. A transferência da mensagem entre o MUA e o MTA se efetua utilizando o protocolo SMTP. Caso o roteamento da mensagem seja necessário, este roteamento também será realizado utilizando-se o protocolo SMTP. O servidor de e-mail do destinatário, ao receber uma mensagem para um dos seus usuários, simplesmente a coloca na caixa postal deste usuário. Este fluxo está diagramado na Figura 2.

 

Figura 2 – Fluxo de e-mail (FAUSTINO, 2010)

Servidores Proxy e Firewall

Servidores de Proxy e Firewall são dispositivos de software e/ou hardware, capazes de fornecer os serviços de filtragem de pacotes e acesso a internet. Na maior parte das vezes, estes serviços, e outros, estão agrupados em uma única estrutura que recebe o nome de servidor de segurança.

Um firewall é um sistema que permite proteger um computador ou uma rede de computadores das intrusões que provêm de uma rede terceira (nomeadamente da Internet). Um sistema de firewall exige pelo menos duas interfaces diferentes:

  • uma interface para a rede a proteger (rede interna);
  • uma interface para a rede externa.

Para executar seus serviços de filtragem o firewall deve conter um conjunto de regras predefinidas que permitem: Autorizar a conexão (allow); Bloquear a conexão (deny); Rejeitar o pedido de conexão sem avisar o emissor (drop). O conjunto destas regras permite instalar um método de filtragem dependente da política de segurança adotada pela instituição.

Um sistema firewall funciona com o princípio da filtragem simples de pacotes (em inglês “stateless packet filtering”). Analisa os cabeçalhos de cada pacote de dados (datagrama) trocado entre uma máquina da rede interna e uma máquina externa. Os endereços IP contidos nos pacotes permitem identificar a máquina emissora e a máquina alvo, enquanto o tipo de pacote e o número de porta dão uma indicação sobre o tipo de serviço utilizado. As portas conhecidas, pertencentes a rede interna, são associadas a serviços correntes (as portas 25 e 110, por exemplo, estão associadas ao correio electrónico, e a porta 80 à Web). A maior parte dos firewall possuí, no mínimo, uma política de bloqueio de portas. Por exemplo, é usual que a porta 23 esteja bloqueada para evitar o acesso via protocolo TELNET.

O princípio básico de funcionamento do servidor proxy é bastante simples. Todos os usuários são conectados a internet através de um serviço que monitora as requisições de rede, verifica uma tabela de regras e, em nome destes usuários, acessa a internet. A palavra proxy em inglês significa procurador. Ou seja, o usuário determina que este serviço seja seu procurador na internet e a acesse em seu nome. Esta ideia simples permite a criação de uma série de serviços acessórios. Por exemplo, um servidor proxy, que conhece as requisições de todos os usuários da rede, pode criar uma estrutura de cache, tornando a navegação interna mais rápida. Pode utilizar uma lista de sites, tipos de arquivos e horários de acesso, como regras de permissão. Garantindo que sites perigosos não sejam acessados de dentro da instituição.

Aplicativos servidores

Os serviços comumente efetuados por servidores estão disponíveis, na forma de software, de várias formas. No mundo do software livre e de código aberto existem pacotes consagrados para este fim:

  • SMTP => Postfix, Qmail, Exim
  • POP3 => Qmail
  • IMAP => Courier
  • Firewall => IPTables
  • Proxy => Squid

Existem ainda distros especialmente criadas para encapsular todos estes serviços de forma a facilitar a instalação, operação e manutenção. Neste caso podemos destacar a versão servidor do Ubuntu.

Bibliografia

ALEXANDRE, R. Introdução a camada de Transporte. Roberto Alexandre, 2008. Disponivel em: <http://gridra.wordpress.com/category/uncategorized/>. Acesso em: 20 Outubro 2011.

BATTISTI, J. Definindo o DHCP. Tutorial TCP/IP, 2006. Disponivel em: <http://www.juliobattisti.com.br/artigos/windows/tcpip_p9.asp>. Acesso em: 25 setembro 2011.

FAUSTINO, L. A. B. Estudo de caso – combatendo spam com qmail + spamdyke. Um pouco de SysAdmin, 2010. Acesso em: 2011 setembro 2011.

TANENBAUM, A. S. Redes de Computadores. 3ª. ed. São Paulo: Editora Campus, 1998.

Javascript – tipos de dados primitivos

Standard

Desenvolvido para o Netscape Navigator 2.0 por Brendan Eich, em 1996, a linguagem foi apresentada a ECMA International, uma organização europeia com caráter internacional cujo objetivo é criar normas para a padronização da tecnologia utilizada em comunicação e em equipamentos de consumo. Atualmente a norma ECMA-262 Edição 5 especifica o ECMAScript, (nome oficial da linguagem) e determina como funciona a linguagem de programação conhecida como Javascript, para o mundo livre e jscript para a Microsoft. Esta última removeu o “ava” do nome para não ter que enfrentar a detentora dos direitos de copyright da palavra java. 

Continue reading

Protocolos da Internet (HTTP, FTP, SMTP, POP, IMAP, TELNET)

Standard

A comunicação entre servidor e clientes que permite que a internet funcione é mais complexa que se pode imaginar. Na camada de Aplicação dos modelos que suportam os protocolos TCP/IP e UDP/IP operam diversos protocolos de funções específicas que permitem o funcionamento dos diversos aplicativos que usamos diariamente. Cada um deles desenvolvido para atender uma necessidade específica surgida em um determinado momento da história.

Continue reading