terça-feira, 17 de setembro de 2013

Entendendo as VLAN's

A história

Antigamente as redes Ethernet eram a base de cabos coaxiais, um emendado no outro de máquina a máquina até o final do segmento onde se colocavam terminadores de sinal. O conjunto era chamado de domínio de colisão já que os frames tinham de disputar o tempo de transmissão (em um único cabo) com todos os outros, o que causava muitas colisões e naturalmente a rede trabalhava em half-duplex.



O truque usado pelas placas era o mecanismo do CSMA/CD para evitar as colisões. Com a chegada dos cabos de par trançado e os HUB's o problema não foi resolvido já que o HUB se limita a repetir todos os sinais em toas a portas, então na lógica a rede trabalhava do mesmo jeito. Usando cabos coaxiais ou hub's com cabos de par trançado toda a rede ainda era vista como um único domínio de colisões (onde os pacotes disputam o tempo de uso do meio de propagação - camada 1) e um único domínio de broadcast (onde os hosts podem trocar mensagens de broadcast endereçadas a FF:FF:FF:FF:FF:FF - camada 2).
Chegaram então as bridges, que eram dispositivos que tinham um conector coaxial e mais alguns conectores RJ45 trabalhando como um HUB. Mas o segredo das bridges é que elas trabalhavam na camada 2, isolando os domínios de colisão.

Bridge Ethernet. Imagem disponível em hardware.com.br


 As bridges trabalhavam de forma um pouco mais inteligente. Ao invés de replicar as mensagens de um segmento de rede ao outro (coaxial e par trançado) elas montavam uma tabela relacionando os endereços MAC de cada segmento e só transmitindo o que era necessário para cada lado economizando colisões e congestionamento. Daí o conceito de "Ponte" ethernet.

Um bom artigo para entender a evolução pode ser visto AQUI


Em seguida temos os switchs. O swich trabalha de forma ainda melhor. Monta uma tabela relacionando os endereços MAC de cada porta e só encaminha os frames de acordo com o endereço do destinatário. Com a chegada dos switchs o termo domínio de colisão caiu em desuso, já que cada porta do aparelho representa um único domínio de colisão e tendo apenas um host "pendurado" à ela não existem colisões. O mesmo se aplica ao algorítimo CSMA/CD e as comunicações em Half-duplex, que só continuaram existindo em redes wireless, segmentos cascateados através de hubs ou em outros casos.

Hoje o padrão de uma rede cabeada é ter um switch centralizando as comunicações e toda a rede trabalha em Full-duplex. Cada host tem o sue próprio domínio de colisão, e toda a rede é um único domínio de broadcast.

Virtual LAN's

Isto nos leva a outra questão. Com redes muito maiores e switchs gerenciáveis, podemos configurá-los para separar os domínios de broadcast. Entra o conceito de "Virtual LAN's".

A ideia é separar segmentos de rede em 2 ou mais domínios de broadcast, mesmo que todas as máquinas estejam conectadas no mesmo switch, estarão "presas" em uma rede virtual onde só podem se comunicar diretamente com máquinas do mesmo domínio de broadcast.
Basicamente o administrador da rede tem de configurar o switch para que determinadas portas sejam entendidas como membros de VLAN's diferentes, e o tráfego de uma não se aplica a outra.

Imagine um Switch de 8 portas representando apenas uma VLAN (sem nenhuma configuração):




Mensagens destinadas à endereços de broadcast atingem todas as máquinas, já que só existe um domínio de broadcast. Em seguida 2 portas são configuradas como membros da VLAN 2:





Agora máquinas conectadas às portas 1 e 6 não têm comunicação com as outras. Note que esta configuração é feita apenas no switch e é totalmente transparente para os hosts conectados. Mesmo se você espetar outros switchs em portas relacionadas a VLAN's, tudo funciona normalmente. Imagine que agora ele trabalha como 2 switchs diferentes. Você pode continuar o processo e selecionar portas do switch para que trabalhem em VLAN's diferentes e ter vários domínios de broadcast na mesma rede física. Naturalmente o administrador vai implementar faixas de endereços IP diferentes para cada VLAN, deixando as coisas mais claras. Portas pertencentes a uma VLAN são chamadas portas de acesso (ou untagged members), onde os dispositivos finais são conectados e trabalham sem saber de nada.



Alguém poderia perguntar qual a diferença desta configuração (que atua na camada 2) para uma rede onde simplesmente os hosts são configurados em faixas de endereço IP distintas (fazendo VLAN's em camada 3) e não se comunicariam da mesma forma. Desta maneira ainda seria possível um engraçadinho alterar o seu endereço IP e obter acesso a outras máquinas de sub-redes diferentes, sem falar que quanto maior o domínio de broadcast, maior o número de máquinas que um atacante pode explorar com ARP spoofing por exemplo. O separação da rede por VLAN's ainda melhora o tráfego já que diminui os broadcast storms, que apesar de necessários podem gerar problemas diversos que seriam propagados por toda a rede.


Em seguida temos as portas de transporte, chamadas "Trunk port", que podem carregar tráfego de VLANs diferentes. A ideia é que tendo vários switchs gerenciáveis na rede, todos eles vão ter portas membros de VLAN's comuns. O trabalho das portas trunk é cascatear o tráfego, mas desta vez marcando os frames provenientes de cada VLAN com uma tag indicando o número da VLAN (por isso a maioria usa o termo "tagged port"). A marcação é feita respeitando o protocolo 802.1q, que é compatível com qualquer fabricante.
Se um frame de uma determinada VLAN, de acordo com o MAC, não pertence a nenhuma das portas daquele switch ele é encaminhado para a porta trunk encapsulado com o número correspondente da VLAN. Ao chegar no outro switch a porta também deve estar configurada como trunk, então ele fará a verificação da VLAN correspondente e escolher a porta onde está o dono da mensagem segundo a VLAN indicada, ou mesmo encaminhar para uma outra porta trunk. Assim podemos ter um cenário com vários switchs trabalhando com várias VLAN's como se houvesse um conjunto de switchs para cada VLAN.


Roteamento

Agora que temos várias sub-redes isoladas pela lógica do switch, como fazer para que essas sub-redes de comuniquem? Todos sabem que redes de faixas IP diferentes só se comunicam por roteamento. Então mesmo que eu tenha um único domínio de broadcast com várias faixas de endereçamento, é preciso um roteador para encaminhar os pacotes de uma rede a outra. A solução mais óbvia seria ter um roteador com tantas placas de rede quanto VLAN's existentes na rede, cada uma com um endereço da faixa correspondente. A pesar de funcionar seria uma grande desperdício de cabos, placas de rede e trabalho adicional.

A solução mais comum é usar um roteador com uma única porta configurada em modo trunk (VLAN tagged), chamada de "Routing on a stick". A partir disso o roteador receberá os pacotes e poderá identificar a VLAN de origem já que os frames vão vir marcados com o ID da VLAN. Nele serão criadas interfaces virtuais sobre a interface física e cada uma receberá um IP na faixa usada pela VLAN. Os frames serão desmarcados e despejados na interface correspondente a cada uma. Isso pode ser feito em roteadores mais robustos ou mesmo no Linux. O esquema fica da seguinte maneira:



Para simplificar mais ainda o esquema, entra em cena os switchs layer 3. Além de todas as funcionalidades de gerenciamento de um switch layer 2, eles são capazes de criar interfaces virtuais dentro de cada VLAN com endereços IP, usurpando a função do roteador.

Desta maneira temos várias sub-redes onde o roteador pode dar tratamento diferenciado e regras específicas para cada faixa de endereçamento. Os broadcast storms são diminuídos e poderíamos ter uma rede totalmente isolada por exemplo. Switchs gerenciáveis ainda são caros, mas com pelo menos um atuando como backbone da rede é possível tornar a rede mais segura.




segunda-feira, 16 de setembro de 2013

3 pontos definitivos para a segurança de qualquer PC

Ter o PC infectado é quase tão comum como pegar uma gripe anualmente, o que ocorre de fato é que a grande maioria dos usuários está usando o computador de uma forma vulnerável, e estranho seria se eles não fossem infectados desta maneira!

Entre muitas e muitas recomendações de segurança, o que proponho são 3 passos simples, e na verdade óbvios, que deixam você muito menos ameaçado e permite uma recuperação muito mais rápida do que simplesmente formatando o seu PC.


1º - Nunca, mas nunca use contas com privilégio de administrador

Quando se usa Linux os usuários tomam um choque por que a conta de usuário "padrão" simplesmente não tem permissão para alterar configurações do sistema, como instalar programas, alterar a hora, ou mesmo alterar arquivos do sistema e de outros usuários. Na verdade esta é uma tática muito óbvia do ponto de vista da segurança, no entanto a maneira como o Windows vem configurado (com a sua conta de usuário com privilégios de administrador) deixa para trás o conceito e faz com que o usuário, e o vírus, se sintam  a vontade para executar qualquer código e fazer qualquer alteração no sistema, sem o mínimo de restrição.  
Ironicamente, no help do Windows a recomendação é justamente o contrário.... Que coisa não?!



 A dica é criar uma conta de usuário pessoal (João por exemplo) e criar outra conta com outro nome para ser o "Administrador" do sistema. Criadas as contas no painel de controle você deve ir em "Alterar tipo de conta" e selecionar uma delas como sendo "Usuário padrão".  A diferença é que uma delas é membro do grupo "Administradores" e a outra somente membro do grupo "Usuários".
Você pode ainda usar o console de gerenciamento de usuários, o que pode ser mais simples para você:

Iniciar > Executar > lusrmgr.msc

É importante que cada usuário da máquina tenha a sua conta para deixar as coisas separadas, e apenas uma conta com privilégios de administrador para fazer tarefas administrativas. Você não notará diferença absolutamente nenhuma, a não ser quando for adicionar ou remover programas e alterar configurações do sistema. Para todos caso, quando for necessário executar algum programa com privilégios (instaladores por exemplo) será necessário uso da conta apropriada. Basta clicar com o botão direito e em "Executar como administrador", ou no Windows XP "Executar como...". O trabalho pode ser ainda mais simples no WIndows 7 com o recurso da UAC que torna o mecanismo automático. No máximo você terá de fazer logoff e fazer logon com a conta de administrador para realizar o trabalho.


Pense que quando um vírus é executado no seu sistema, geralmente ele é executado por você, mesmo que acidentalmente. Então ele terá o mesmo nível de privilégio que a sua conta, que sendo restrita fará no máximo alterações em seu próprio perfil de usuário. Mesmo que você seja infectado é bem provável que excluindo a sua conta e criando uma nova resolva o problema.

2º - Anti vírus e software PIRATA

A dica do anti vírus é velha. Mas vale lembrar:
 - Use um bom anti vírus (AVG, Avast, Avira)
 - Eles se atualizam automaticamente, não se preocupe
 - Processe o anti vírus em qualquer arquivo que baixar da internet, e sempre em pendrives alheios

Esses 3 anti vírus citados são grátis para uso doméstico, e possuem versões corporativas pagas. Mas onde entra a questão do software pirata?
Infelizmente muitas pessoas usam versões "crackeadas" mesmo de anti vírus! Quer dizer, alguém mal intencionado conseguiu burlar a perícia do próprio anti vírus, e oferece uma versão independente. O mesmo acontece com inúmeros programas (AutoCAD, Adobe CS, Office, Nero) e Jogos, você pensa estar fazendo um bom negócio mas está abrindo a porta para o inimigo, já que o "crack" deste software pode conter código malicioso que você terá que "engolir" junto.

Então, evite software pirata ao máximo! Respeite o trabalho dos outros, e procure alternativas grátis e confiáveis. Principalmente em ambientes empresariais onde você está sujeito à fiscalização e será responsabilizado pelo comprometimento das informações.

3º - Atualizações automáticas do sistema

A triste realidade e que a grande maioria dos técnicos desativa as atualizações do sistema. Simplesmente por que a maioria das pessoas usam Windows não licenciado, e junto das atualizações do sistema vem a ferramenta de validação da cópia do Windows. Para evitar muito trabalho e que o freguês não se depare com a mensagem de Windows pirata, desativam as atualizações e cortam o "problema" pela raiz.
Saiba que todas as falhas de segurança são corrigidas com as atualizações,  o que as coloca em um nível de prioridade ainda maior que um anti vírus. Qualquer software malicioso explora uma falha no sistema, e essas falhas são corrigidas com as atualizações. Isso vale não só para o Windows mas para todos os softwares que você usa como: Firefox, Chrome, Adobe Reader, Office, Java, flash, etc... Trabalhar com o sistema desatualizado é como andar com um carro sem fazer revisões e esperar que tudo funcione perfeitamente bem para sempre.

De qualquer forma você pode simplesmente evitar o procedimento de validação, já que ele é opcional, removendo o programa da lista de atualizações automáticas. Antes de tudo configure o sistema para que confirme as atualizações antes mesmo de serem baixadas :

Configuração no Windows 7
No WIndows XP

 Logo em seguida o sistema procura pelas atualizações e mostra a lista de correções disponíveis. No Windows 7 é usada a de código KB971033, e no Windows XP KB905474. Na própria descrição delas você pode ver que se trata de Ferramenta de ativação do Windows ou algo do tipo, basta desmarcá-las, clicar com o botão direito e em OCULTAR. Pronto, deixe que o sistema instale todas as outras sem medo :-).

Assim o sistema fica muito mais seguro, sem falar que a Microsoft disponibiliza até mesmo o drivers mais recentes do seu hardware, e homologados por eles.
Além de deixar o seu sistema protegido de verdade ( e não vigiado, como no caso do anti vírus ) a Microsoft lança mensalmente a "Ferramenta de remoção de software mal intencionado", que finaliza a proteção do sistema, trabalhando como uma espécie de anti vírus.

Muitos dizem que o Linux é mais seguro que o Windows. Sem dúvida, mas repare que no ambiente do pinguim as coisas já funcionam desta maneira naturalmente.
 - Usuário administrador, só o root.
 - Software pirata praticamente não existe já que a maioria é software livre e proveniente de um repositório oficial.
 - O sistema é atualizado regularmente sem nenhuma "pedra no caminho".


Tomando estes 3 cuidados que são extremamente óbvios e simples, você tem um nível real de segurança e pode trabalhar de consciência limpa. Ma não se esqueça que segurança não para por aí...



Descobrindo o Sysinternals suite

O sysinternals suite é um conjunto de ferramentas desenvolvidas por Mark Russinovich e adotada oficialmente pela Microsoft em 2006. Deixando a história de lado, o fato é que as ferramentas são tão boas que quem se acostuma a usar não consegue viver sem elas. Na verdade eu acho que a Microsoft deveria incluir no Windows nativamente, para não me dar o trabalho de copiar para todas as máquinas.

Para começar você pode baixar o pacote AQUI, em seguida descompacte em uma pasta qualquer.Mas guarde o pacote por que você vai querer copiar para outras máquinas com certeza.


Você pode se sentir a vontade para clicar em qualquer aplicativo e ver como funciona. Todos eles vêm com um help :-). Mas antes de começar é importante preparar o ambiente.
Eu particularmente não gosto de ir até uma pasta específica, escolher uma delas e dar 2 clicks. Eu sempre chamo os programas através do "Executar...". 


Mas para isso é preciso que os executáveis estejam em alguma pasta do path do sistema. Sempre que me sento em frente a uma máquina para fazer qualquer diagnóstico, antes de tudo copio a kit de ferramentas para a pasta "System32", que é o principal path do Windows. Depois disso você pode executar qualquer uma das ferramentas naturalmente pela linha de comando ou via "Executar...". Para automatizar o processo você pode usar um script para copiar os arquivos para a "system32" com um clique. Crie um arquivo no bloco de notas com o seguinte conteúdo:

rem @echo off

copy "SysInternalsSuite"\* "%WINDIR%\System32\"

pause


Basta então salvar com qualquer nome ".cmd" e coloque junto com a pasta do Sysinternals. 2 cliques e ele executa o código copiando tudo para  o path.
Dados os preparativos, vamos aqui a uma apresentação das ferramentas mais úteis e seus principais recursos:

1) Autoruns: Esta ferramenta simplesmente mostra todos os programas que são carregados com o Windows, desde os serviços as tarefas agendadas, e muito mais. De uma forma muito intuitiva você pode habilitar ou não cada entrada de "autorun" no sistema ou mesmo deletar. O mais interessante é que com o tempo você percebe onde aparecem entradas relacionadas a cada programa ou mesmo vírus e adwares. Antes de tentar removê-los ou mesmo terminar o processo com o gerenciador de tarefas tente desabilitar no Autoruns e reiniciar a máquina. Com ele é muito fácil neutralizar programas indesejados ou mesmo malwares. Para quem sentiu algo familiar, este aplicativo nada mais é do que uma ferramente similar ao MSconfig, porém infinitamente superior.

Este software é tão temido pelos malwares que é muito comum quado a máquina etá infectada o vírus detectar que você executou o autoruns e terminar o processo imediatamente! Por isso não se assuste se você executá-lo em uma máquina infectada e a janela fechar de repente. Pule para o "Process Explorer", mate o processo do vírus e volte a abrir o autoruns. Tiro e queda!



Neste link o Mark mostra como remover malwares e usar algumas ferramentas.



2) Process Explorer:  Depois de usar este você nunca mais se sentirá bem com o gerenciador de tarefas nativo do Windows. O "procexp" mostra os processos em árvore e com os ícones. Ele ainda pode ser configurado para exibir colunas a gosto. É possível visualizar a linha de comando que iniciou o processo, usuário, threads, título da janela e muito mais. Vendo o esquema em árvore é possível finalizar toda a árvore.


Como pode ver na imagem acima, há uma opção de substituir o gerenciador padrão e usar o "procexp". Então ao presionar "Ctrl+Shift+Esc" ele será aberto. Simples assim.

O "procexp" tem ainda um irmão, o Process Monitor. Ele monitora toda a atividade dos processos incluindo arquivos e chaves de registro utilizadas. Porém o volume de dados é muito grande e requer uso dos filtros.


3) TCPview:  Qualquer administrador de rede sabe que o netstat é útil porém confuso. Então por que usar o netstat se existe o "tcpview"? Esta ferramenta mostra todas as conexões abertas no sistema em tempo real, incluindo o executável responsável, estado da conexão, portas, e o volume de dados transportados. Simplesmente fabuloso.





4) Sdelete: Quem vem do Linux já está acostumado a usar o shred para apagar arquivos com segurança, mas o Windows carece de uma ferramenta nativa. Apagar arquivos com segurança, significa que ele será sobrescrito várias vezes antes de ser realmente deletado do incide do sistema de arquivos, tornando impossível a recuperação com softwares específicos. O sdelete vem para suprir a necessidade, mas para melhor uso, já que é uma ferramente de linha de comando é bom copiá-la para uma pasta do path como sugerido acima. Basta usar como um comando qualquer e você poderá deletar arquivos com segurança. Por exemplo :

C:\>sdelete -p 8 teste.txt

SDelete - Secure Delete v1.61
Copyright (C) 1999-2012 Mark Russinovich
Sysinternals - www.sysinternals.com

SDelete is set for 8 passes.

C:\teste.txt...deleted.
1 files found


O parâmetro "-p 8" indica o número de vezes que o arquivo será sobrescrito.

5) Whois: Com este utilitário em mãos você nunca mais vai precisar entrar em sites de consulta de domínios e passar pelos captcha. Basta digitar "Whois dominio.com" e pronto. Lembre-se que que este serviço usa a porta 43, então deve estar liberada  a saída no firewall.

6) PsTools:  O Pstools é um pacote de utilitários de linha de comando muito útil para quem administra uma rede grande e precisa obter informações e executar comandos remotamente. Vale uma artigo apenas para este pacote:

http://technet.microsoft.com/en-us/sysinternals/bb896649

7) Desktops: Este simula 4 áreas de trabalho no explorer. Não funciona tão bem quanto no Linux mas não deixa de ser útil. Assim que executado ele deixa um ícone na área de notificação e pode ser configurado facilmente. O padrão é que alterne entre as áreas de trabalho usando "Alt+Nº", onde é um número de 1 a 4 de acorde com a área de trabalho.



8)Zoomit: Para quem faz apresentações de slides ou em data show com frequência é muito útil dar um zoom para que os espectadores veja melhor o conteúdo. Executando esta ferramenta, com um comando você foca uma área da tela facilmente e regula a ampliação com o mouse. Só usando mesmo para entender como é simples e útil.



9) Blue screen: Que tal ter a infame "Tela azul da morte" como proteção de tela? Baixe o arquivo AQUI e copie para a pasta system32. Então configure-o como protetor de tela.

Existem muitas outras ferramentas no pacote. Vale a pena olhar uma por uma e se acostumar a usá-las. Bom exemplos são o contig, Sync, PsPing, ShellRunas, Autologon, LogonSessions, RootKitRevealer, e por aí vai....